diff options
| author | Emile Joubert <emile@rabbitmq.com> | 2012-02-14 14:50:37 +0000 |
|---|---|---|
| committer | Emile Joubert <emile@rabbitmq.com> | 2012-02-14 14:50:37 +0000 |
| commit | 2214ba8f1ccdea454797ec2f0a0dea2ddef51398 (patch) | |
| tree | b8daf3b4a349ba3fabdf235b6741df7c0c20f402 /src | |
| parent | f9dbe81823dae264d5ecae8800c223bae9a221ab (diff) | |
| parent | caf4d4576fd2f0b322ff6ce45b7fc66a058a3a62 (diff) | |
| download | rabbitmq-server-git-2214ba8f1ccdea454797ec2f0a0dea2ddef51398.tar.gz | |
Merge heads
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_node_monitor.erl | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/src/rabbit_node_monitor.erl b/src/rabbit_node_monitor.erl index 54a7add2e6..323cf0ce9e 100644 --- a/src/rabbit_node_monitor.erl +++ b/src/rabbit_node_monitor.erl @@ -61,23 +61,26 @@ notify_cluster() -> %%-------------------------------------------------------------------- init([]) -> - {ok, no_state}. + {ok, ordsets:new()}. handle_call(_Request, _From, State) -> {noreply, State}. -handle_cast({rabbit_running_on, Node}, State) -> - rabbit_log:info("rabbit on ~p up~n", [Node]), - erlang:monitor(process, {rabbit, Node}), - ok = handle_live_rabbit(Node), - {noreply, State}; +handle_cast({rabbit_running_on, Node}, Nodes) -> + case ordsets:is_element(Node, Nodes) of + true -> {noreply, Nodes}; + false -> rabbit_log:info("rabbit on node ~p up~n", [Node]), + erlang:monitor(process, {rabbit, Node}), + ok = handle_live_rabbit(Node), + {noreply, ordsets:add_element(Node, Nodes)} + end; handle_cast(_Msg, State) -> {noreply, State}. -handle_info({'DOWN', _MRef, process, {rabbit, Node}, _Reason}, State) -> - rabbit_log:info("node ~p lost 'rabbit'~n", [Node]), +handle_info({'DOWN', _MRef, process, {rabbit, Node}, _Reason}, Nodes) -> + rabbit_log:info("rabbit on node ~p down~n", [Node]), ok = handle_dead_rabbit(Node), - {noreply, State}; + {noreply, ordsets:del_element(Node, Nodes)}; handle_info(_Info, State) -> {noreply, State}. |
