diff options
author | Robert Newson <rnewson@apache.org> | 2018-08-06 14:45:54 +0100 |
---|---|---|
committer | Robert Newson <rnewson@apache.org> | 2018-08-30 09:54:15 +0100 |
commit | 1cbc8f07f1114988e5a30bd9537543d464e0a1ad (patch) | |
tree | 6809f401f9085d6abd17a2f70a41a6cc4aac9643 | |
parent | 689082ea576abb9efcac1520f52c34ff27d7802e (diff) | |
download | couchdb-1cbc8f07f1114988e5a30bd9537543d464e0a1ad.tar.gz |
expose partitioned flag in GET /dbname info
-rw-r--r-- | src/couch/src/couch_db.erl | 5 | ||||
-rw-r--r-- | src/fabric/src/fabric_db_info.erl | 13 |
2 files changed, 16 insertions, 2 deletions
diff --git a/src/couch/src/couch_db.erl b/src/couch/src/couch_db.erl index 9bb68f878..a5c71d75d 100644 --- a/src/couch/src/couch_db.erl +++ b/src/couch/src/couch_db.erl @@ -445,6 +445,10 @@ get_db_info(Db) -> undefined -> null; Else1 -> Else1 end, + Props = case get_props(Db) of + undefined -> null; + Else2 -> Else2 + end, InfoList = [ {db_name, Name}, {engine, couch_db_engine:get_engine(Db)}, @@ -466,6 +470,7 @@ get_db_info(Db) -> {disk_format_version, DiskVersion}, {committed_update_seq, CommittedUpdateSeq}, {compacted_seq, CompactedSeq}, + {props, {Props}}, {uuid, Uuid} ], {ok, InfoList}. diff --git a/src/fabric/src/fabric_db_info.erl b/src/fabric/src/fabric_db_info.erl index 98e8e52e4..86947fd78 100644 --- a/src/fabric/src/fabric_db_info.erl +++ b/src/fabric/src/fabric_db_info.erl @@ -107,6 +107,8 @@ merge_results(Info) -> [{disk_format_version, lists:max(X)} | Acc]; (cluster, [X], Acc) -> [{cluster, {X}} | Acc]; + (props, X, Acc) -> + [{props, {merge_object(X)}} | Acc]; (_, _, Acc) -> Acc end, [{instance_start_time, <<"0">>}], Dict). @@ -127,10 +129,17 @@ merge_object(Objects) -> lists:foldl(fun({K,V},D0) -> orddict:append(K,V,D0) end, D, Props) end, orddict:new(), Objects), orddict:fold(fun - (Key, X, Acc) -> - [{Key, lists:sum(X)} | Acc] + (Key, [X | _] = Xs, Acc) when is_integer(X) -> + [{Key, lists:sum(Xs)} | Acc]; + (Key, [X | _] = Xs, Acc) when is_boolean(X) -> + [{Key, lists:all(fun all_true/1, Xs)} | Acc]; + (_Key, _X, Acc) -> + Acc end, [], Dict). +all_true(true) -> true; +all_true(_) -> false. + get_cluster_info(Shards) -> Dict = lists:foldl(fun(#shard{range = R}, Acc) -> dict:update_counter(R, 1, Acc) |