You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by da...@apache.org on 2014/02/11 08:22:07 UTC
fabric commit: updated refs/heads/2001-feature-external-size to
c68ffdc
Updated Branches:
refs/heads/2001-feature-external-size [created] c68ffdcfd
Add cluster support for new size calculations
This adds the cluster aggregation of database and view size information.
Now that we have three values they're nested under a single "sizes" key.
COUCHDB-2001
Project: http://git-wip-us.apache.org/repos/asf/couchdb-fabric/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb-fabric/commit/c68ffdcf
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-fabric/tree/c68ffdcf
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-fabric/diff/c68ffdcf
Branch: refs/heads/2001-feature-external-size
Commit: c68ffdcfd395badc752cadd1eabb3c693e50d0af
Parents: 5518fea
Author: Paul J. Davis <pa...@gmail.com>
Authored: Tue Feb 11 01:21:07 2014 -0600
Committer: Paul J. Davis <pa...@gmail.com>
Committed: Tue Feb 11 01:21:07 2014 -0600
----------------------------------------------------------------------
src/fabric_db_info.erl | 2 ++
src/fabric_group_info.erl | 2 ++
src/fabric_util.erl | 23 +++++++++++++++++++++++
3 files changed, 27 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/couchdb-fabric/blob/c68ffdcf/src/fabric_db_info.erl
----------------------------------------------------------------------
diff --git a/src/fabric_db_info.erl b/src/fabric_db_info.erl
index 58139e8..24fc44d 100644
--- a/src/fabric_db_info.erl
+++ b/src/fabric_db_info.erl
@@ -84,6 +84,8 @@ merge_results(Info) ->
[{disk_size, lists:sum(X)} | Acc];
(other, X, Acc) ->
[{other, {merge_other_results(X)}} | Acc];
+ (sizes, X, Acc) ->
+ [{sizes, {fabric_util:merge_size_objects(X)}} | Acc];
(disk_format_version, X, Acc) ->
[{disk_format_version, lists:max(X)} | Acc];
(_, _, Acc) ->
http://git-wip-us.apache.org/repos/asf/couchdb-fabric/blob/c68ffdcf/src/fabric_group_info.erl
----------------------------------------------------------------------
diff --git a/src/fabric_group_info.erl b/src/fabric_group_info.erl
index 135090f..5da94fd 100644
--- a/src/fabric_group_info.erl
+++ b/src/fabric_group_info.erl
@@ -81,6 +81,8 @@ merge_results(Info) ->
[{disk_size, lists:sum(X)} | Acc];
(data_size, X, Acc) ->
[{data_size, lists:sum(X)} | Acc];
+ (sizes, X, Acc) ->
+ [{sizes, {fabric_util:merge_size_objects(X)}} | Acc];
(compact_running, X, Acc) ->
[{compact_running, lists:member(true, X)} | Acc];
(updater_running, X, Acc) ->
http://git-wip-us.apache.org/repos/asf/couchdb-fabric/blob/c68ffdcf/src/fabric_util.erl
----------------------------------------------------------------------
diff --git a/src/fabric_util.erl b/src/fabric_util.erl
index a6982f3..e58a321 100644
--- a/src/fabric_util.erl
+++ b/src/fabric_util.erl
@@ -16,6 +16,7 @@
update_counter/3, remove_ancestors/2, create_monitors/1, kv/2,
remove_down_workers/2]).
-export([request_timeout/0]).
+-export([merge_size_objects/1]).
-include_lib("fabric/include/fabric.hrl").
-include_lib("mem3/include/mem3.hrl").
@@ -141,6 +142,28 @@ create_monitors(Shards) ->
MonRefs = lists:usort([{rexi_server, N} || #shard{node=N} <- Shards]),
rexi_monitor:start(MonRefs).
+% This is used to merge the new size objects found in database
+% and view info blobs for clustered calls.
+merge_size_objects(SizeObjects) ->
+ Dict = lists:foldl(fun({Props}, D) ->
+ lists:foldl(fun({K, V}, D0) ->
+ orddict:append(K, V, D0)
+ end, D, Props)
+ end, orddict:new(), SizeObjects),
+ orddict:fold(fun
+ (file, X, Acc) ->
+ [{file, lists:sum(X)} | Acc];
+ (active, X, Acc) ->
+ case lists:member(null, X) of
+ true ->
+ [{active, null} | Acc];
+ false ->
+ [{active, lists:sum(X)} | Acc]
+ end;
+ (external, X, Acc) ->
+ [{external, lists:sum(X)} | Acc]
+ end, [], Dict).
+
%% verify only id and rev are used in key.
update_counter_test() ->
Reply = {ok, #doc{id = <<"id">>, revs = <<"rev">>,