You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by rn...@apache.org on 2018/08/29 14:55:34 UTC
[couchdb] 03/13: expose partitioned flag in GET /dbname info
This is an automated email from the ASF dual-hosted git repository.
rnewson pushed a commit to branch user-partitioned-dbs-6
in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit 6586fe84a02a604a1a002b7843973e7d1dc9d5db
Author: Robert Newson <rn...@apache.org>
AuthorDate: Mon Aug 6 14:45:54 2018 +0100
expose partitioned flag in GET /dbname info
---
src/couch/src/couch_db.erl | 5 +++++
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 9bb68f8..a5c71d7 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 98e8e52..86947fd 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)