summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Newson <robert.newson@cloudant.com>2013-11-10 13:24:46 +0000
committerRobert Newson <robert.newson@cloudant.com>2013-11-11 12:21:16 +0000
commita2a6b87a04516d12b3ba74e407ea37dc38a56057 (patch)
treef93db59f7190c59f2670119e7ccb2b05ee3d491f
parent2bf1a8c5e16ca5ef7a72699a68f5a713d70db4f1 (diff)
downloadcouchdb-a2a6b87a04516d12b3ba74e407ea37dc38a56057.tar.gz
Self-describing summary output
-rw-r--r--src/custodian/src/custodian_server.erl12
-rw-r--r--src/custodian/src/custodian_util.erl18
2 files changed, 15 insertions, 15 deletions
diff --git a/src/custodian/src/custodian_server.erl b/src/custodian/src/custodian_server.erl
index 55f7b46b1..61885bb79 100644
--- a/src/custodian/src/custodian_server.erl
+++ b/src/custodian/src/custodian_server.erl
@@ -106,11 +106,11 @@ handle_db_event(_DbName, _Event, _St) ->
{ok, nil}.
check_shards() ->
- {Unavailable, OneCopy, Impaired, Conflicted} = custodian:summary(),
- send_conflicted_alert(Conflicted),
- send_unavailable_alert(Unavailable),
- send_one_copy_alert(OneCopy),
- send_impaired_alert(Impaired).
+ Summary = custodian:summary(),
+ send_conflicted_alert(proplists:get_value(conflicted, Summary)),
+ send_unavailable_alert(proplists:get_value(unavailable, Summary)),
+ send_one_copy_alert(proplists:get_value(one_copy, Summary)),
+ send_impaired_alert(proplists:get_value(impaired, Summary)).
%% specific alert functions
send_conflicted_alert(Count) ->
@@ -126,7 +126,7 @@ send_one_copy_alert(Count) ->
send_snmp_alert(Count, "shards with only one copy", "AllShardsMultipleCopiesEvent", "ShardsOneCopyEvent").
%% generic SNMP alert functions
-send_snmp_alert(0, AlertType, ClearMib, _) ->
+send_snmp_alert(undefined, AlertType, ClearMib, _) ->
twig:log(notice, "No ~s in this cluster", [AlertType]),
Cmd = lists:concat(["send_snmptrap --trap CLOUDANT-DBCORE-MIB::cloudantDbcore", ClearMib]),
os:cmd(Cmd);
diff --git a/src/custodian/src/custodian_util.erl b/src/custodian/src/custodian_util.erl
index 3a4ceb0f9..80eba8d0a 100644
--- a/src/custodian/src/custodian_util.erl
+++ b/src/custodian/src/custodian_util.erl
@@ -12,16 +12,16 @@
%% public functions.
summary() ->
- Fun = fun(_Id, _Range, unavailable, {U, O, I, C}) ->
- {U + 1, O, I, C};
- (_Id, _Range, {impaired, 1}, {U, O, I, C}) ->
- {U, O + 1, I, C};
- (_Id, _Range, {impaired, _N}, {U, O, I, C}) ->
- {U, O, I + 1, C};
- (_Id, _Range, {conflicted, _N}, {U, O, I, C}) ->
- {U, O, I, C + 1}
+ Fun = fun(_Id, _Range, unavailable, Dict) ->
+ dict:update_counter(unavailable, 1, Dict);
+ (_Id, _Range, {impaired, 1}, Dict) ->
+ dict:update_counter(one_copy, 1, Dict);
+ (_Id, _Range, {impaired, _N}, Dict) ->
+ dict:update_counter(impaired, 1, Dict);
+ (_Id, _Range, {conflicted, _N}, Dict) ->
+ dict:update_counter(conflicted, 1, Dict)
end,
- fold_dbs({0, 0, 0, 0}, Fun).
+ dict:to_list(fold_dbs(dict:new(), Fun)).
report() ->
Fun = fun(Id, Range, unavailable, Acc) ->