diff options
author | Robert Newson <robert.newson@cloudant.com> | 2013-11-10 13:24:46 +0000 |
---|---|---|
committer | Robert Newson <robert.newson@cloudant.com> | 2013-11-11 12:21:16 +0000 |
commit | a2a6b87a04516d12b3ba74e407ea37dc38a56057 (patch) | |
tree | f93db59f7190c59f2670119e7ccb2b05ee3d491f | |
parent | 2bf1a8c5e16ca5ef7a72699a68f5a713d70db4f1 (diff) | |
download | couchdb-a2a6b87a04516d12b3ba74e407ea37dc38a56057.tar.gz |
Self-describing summary output
-rw-r--r-- | src/custodian/src/custodian_server.erl | 12 | ||||
-rw-r--r-- | src/custodian/src/custodian_util.erl | 18 |
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) -> |