summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatthias Radestock <matthias@rabbitmq.com>2011-03-04 08:29:11 +0000
committerMatthias Radestock <matthias@rabbitmq.com>2011-03-04 08:29:11 +0000
commitdc5d5b81860305176d9f21b697c9ea67ad2f9919 (patch)
tree752e5c39559083cb0ddf3d43584812c2d49092af /src
parentced19121ecd769e4737b3a1cbf3dcdc73043a624 (diff)
downloadrabbitmq-server-git-dc5d5b81860305176d9f21b697c9ea67ad2f9919.tar.gz
yet more simplification
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_alarm.erl38
1 files changed, 16 insertions, 22 deletions
diff --git a/src/rabbit_alarm.erl b/src/rabbit_alarm.erl
index 34cc4d3c45..9f88d8da02 100644
--- a/src/rabbit_alarm.erl
+++ b/src/rabbit_alarm.erl
@@ -126,31 +126,25 @@ code_change(_OldVsn, State, _Extra) ->
maybe_alert(SetFun, Node, State = #alarms{alarmed_nodes = AN,
alertees = Alertees}) ->
AN1 = SetFun(Node, AN),
- ok = maybe_alert(sets:size(AN), sets:size(AN1), Alertees, Node),
+ BeforeSz = sets:size(AN),
+ AfterSz = sets:size(AN1),
+ %% If we have changed our alarm state, inform the remotes.
+ IsLocal = Node =:= node(),
+ if IsLocal andalso BeforeSz < AfterSz -> ok = alert_remote(true, Alertees);
+ IsLocal andalso BeforeSz > AfterSz -> ok = alert_remote(false, Alertees);
+ true -> ok
+ end,
+ %% If the overall alarm state has changed, inform the locals.
+ case {BeforeSz, AfterSz} of
+ {0, 1} -> ok = alert_local(true, Alertees);
+ {1, 0} -> ok = alert_local(false, Alertees);
+ {_, _} -> ok
+ end,
State#alarms{alarmed_nodes = AN1}.
-maybe_alert(BeforeSize, AfterSize, Alertees, AlmNde) ->
- ok = maybe_alert_remote(BeforeSize, AfterSize, Alertees, AlmNde =:= node()),
- ok = maybe_alert_local(BeforeSize, AfterSize, Alertees).
+alert_local(Alert, Alertees) -> alert(Alert, Alertees, fun erlang:'=:='/2).
-%% If we have changed our alarm state, always inform the remotes.
-maybe_alert_remote(BeforeSize, AfterSize, Alertees, true)
- when BeforeSize < AfterSize -> alert_remote(true, Alertees);
-maybe_alert_remote(BeforeSize, AfterSize, Alertees, true)
- when BeforeSize > AfterSize -> alert_remote(false, Alertees);
-maybe_alert_remote(_BeforeSize, _AfterSize, _Alertees, _IsLocalNode) ->
- ok.
-
-%% If the overall alarm state has changed, inform the locals.
-maybe_alert_local(0, 1, Alertees) -> alert_local(true, Alertees);
-maybe_alert_local(1, 0, Alertees) -> alert_local(false, Alertees);
-maybe_alert_local(_, _, _Alertees) -> ok.
-
-alert_local(Alert, Alertees) ->
- alert(Alert, Alertees, fun erlang:'=:='/2).
-
-alert_remote(Alert, Alertees) ->
- alert(Alert, Alertees, fun erlang:'=/='/2).
+alert_remote(Alert, Alertees) -> alert(Alert, Alertees, fun erlang:'=/='/2).
alert(Alert, Alertees, NodeComparator) ->
Node = node(),