diff options
| author | Matthias Radestock <matthias@rabbitmq.com> | 2011-03-04 08:29:11 +0000 |
|---|---|---|
| committer | Matthias Radestock <matthias@rabbitmq.com> | 2011-03-04 08:29:11 +0000 |
| commit | dc5d5b81860305176d9f21b697c9ea67ad2f9919 (patch) | |
| tree | 752e5c39559083cb0ddf3d43584812c2d49092af /src | |
| parent | ced19121ecd769e4737b3a1cbf3dcdc73043a624 (diff) | |
| download | rabbitmq-server-git-dc5d5b81860305176d9f21b697c9ea67ad2f9919.tar.gz | |
yet more simplification
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_alarm.erl | 38 |
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(), |
