diff options
author | Michael Klishin <michael@rabbitmq.com> | 2013-06-20 18:46:11 +0400 |
---|---|---|
committer | Michael Klishin <michael@rabbitmq.com> | 2013-06-20 18:46:11 +0400 |
commit | d984ee3a6d2f3480744c4b013e049e138267d670 (patch) | |
tree | 124a5a843607e4a3783843bb298e7b073645b251 | |
parent | 18ec96b321e4bb9db0ec2535bd9607641d217f83 (diff) | |
download | rabbitmq-server-d984ee3a6d2f3480744c4b013e049e138267d670.tar.gz |
Don't log duplicate alarm warnings
-rw-r--r-- | src/rabbit_alarm.erl | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/src/rabbit_alarm.erl b/src/rabbit_alarm.erl index 000c1e2a..78098443 100644 --- a/src/rabbit_alarm.erl +++ b/src/rabbit_alarm.erl @@ -104,12 +104,15 @@ handle_call(_Request, State) -> {ok, not_understood, State}. handle_event({set_alarm, Alarm}, State = #alarms{alarms = Alarms}) -> + IsDuplicate = lists:member(Alarm, Alarms), UpdatedAlarms = lists:usort([Alarm|Alarms]), - handle_set_alarm(Alarm, State#alarms{alarms = UpdatedAlarms}); + handle_set_alarm(Alarm, State#alarms{alarms = UpdatedAlarms}, IsDuplicate); handle_event({clear_alarm, Alarm}, State = #alarms{alarms = Alarms}) -> + IsDuplicate = not lists:member(Alarm, Alarms), handle_clear_alarm(Alarm, State#alarms{alarms = lists:keydelete(Alarm, 1, - Alarms)}); + Alarms)}, + IsDuplicate); handle_event({node_up, Node}, State) -> %% Must do this via notify and not call to avoid possible deadlock. @@ -220,7 +223,7 @@ internal_register(Pid, {M, F, A} = AlertMFA, NewAlertees = dict:store(Pid, AlertMFA, Alertees), State#alarms{alertees = NewAlertees}. -handle_set_alarm({{resource_limit, Source, Node}, []}, State) -> +handle_set_alarm({{resource_limit, Source, Node}, []}, State, false) -> rabbit_log:warning( "~s resource limit alarm set on node ~p.~n~n" "**********************************************************~n" @@ -228,24 +231,32 @@ handle_set_alarm({{resource_limit, Source, Node}, []}, State) -> "**********************************************************~n", [Source, Node]), {ok, maybe_alert(fun dict_append/3, Node, Source, State)}; -handle_set_alarm({file_descriptor_limit, []}, State) -> +handle_set_alarm({{resource_limit, Source, Node}, []}, State, true) -> + {ok, maybe_alert(fun dict_append/3, Node, Source, State)}; +handle_set_alarm({file_descriptor_limit, []}, State, false) -> rabbit_log:warning( "file descriptor limit alarm set.~n~n" "********************************************************************~n" "*** New connections will not be accepted until this alarm clears ***~n" "********************************************************************~n"), {ok, State}; -handle_set_alarm(Alarm, State) -> +handle_set_alarm({file_descriptor_limit, []}, State, true) -> + {ok, State}; +handle_set_alarm(Alarm, State, _IsDuplicate) -> rabbit_log:warning("alarm '~p' set~n", [Alarm]), {ok, State}. -handle_clear_alarm({resource_limit, Source, Node}, State) -> +handle_clear_alarm({resource_limit, Source, Node}, State, false) -> rabbit_log:warning("~s resource limit alarm cleared on node ~p~n", [Source, Node]), {ok, maybe_alert(fun dict_unappend/3, Node, Source, State)}; -handle_clear_alarm(file_descriptor_limit, State) -> +handle_clear_alarm({resource_limit, Source, Node}, State, true) -> + {ok, maybe_alert(fun dict_unappend/3, Node, Source, State)}; +handle_clear_alarm(file_descriptor_limit, State, false) -> rabbit_log:warning("file descriptor limit alarm cleared~n"), {ok, State}; -handle_clear_alarm(Alarm, State) -> +handle_clear_alarm(file_descriptor_limit, State, true) -> + {ok, State}; +handle_clear_alarm(Alarm, State, _IsDuplicate) -> rabbit_log:warning("alarm '~p' cleared~n", [Alarm]), {ok, State}. |