diff options
author | Robert Newson <rnewson@apache.org> | 2018-08-06 14:45:54 +0100 |
---|---|---|
committer | Robert Newson <rnewson@apache.org> | 2018-10-01 17:33:13 +0100 |
commit | 3afe90e4372708565a2c71784b8ae92c112413fe (patch) | |
tree | 353893c586c891b47cb61f7a664958227e413723 | |
parent | 21b4b38a0840b64428dac18f79d85b8b0a7a48b2 (diff) | |
download | couchdb-3afe90e4372708565a2c71784b8ae92c112413fe.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 d6e512864..fa74266bd 100644 --- a/src/couch/src/couch_db.erl +++ b/src/couch/src/couch_db.erl @@ -581,6 +581,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)}, @@ -602,6 +606,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 97a31c237..47a1f790f 100644 --- a/src/fabric/src/fabric_db_info.erl +++ b/src/fabric/src/fabric_db_info.erl @@ -112,6 +112,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). @@ -132,10 +134,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) |