diff options
| author | Alexandru Scvortov <alexandru@rabbitmq.com> | 2011-08-08 12:17:12 +0100 |
|---|---|---|
| committer | Alexandru Scvortov <alexandru@rabbitmq.com> | 2011-08-08 12:17:12 +0100 |
| commit | 80ceb23676927669c18a2afdf10ad1a63902d3b9 (patch) | |
| tree | 581d69bfcbb3ec700365fcb950a78c64efa6cb24 /src | |
| parent | d8d01c9ecd9a5c1dbf5e0f2095ffd8513f36a3a5 (diff) | |
| download | rabbitmq-server-git-80ceb23676927669c18a2afdf10ad1a63902d3b9.tar.gz | |
simplify node monitoring
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_node_monitor.erl | 29 |
1 files changed, 8 insertions, 21 deletions
diff --git a/src/rabbit_node_monitor.erl b/src/rabbit_node_monitor.erl index d9181b78dc..97ee338228 100644 --- a/src/rabbit_node_monitor.erl +++ b/src/rabbit_node_monitor.erl @@ -27,8 +27,6 @@ -define(SERVER, ?MODULE). -define(RABBIT_UP_RPC_TIMEOUT, 2000). --record(state, {rabbits}). - %%---------------------------------------------------------------------------- -ifdef(use_specs). @@ -62,29 +60,22 @@ notify_cluster() -> %%-------------------------------------------------------------------- init([]) -> - ok = net_kernel:monitor_nodes(true), - {ok, #state{rabbits = sets:new()}}. + {ok, no_state}. handle_call(_Request, _From, State) -> {noreply, State}. -handle_cast({rabbit_running_on, Node}, State = #state{rabbits = Rabbits}) -> +handle_cast({rabbit_running_on, Node}, State) -> rabbit_log:info("rabbit on ~p up~n", [Node]), erlang:monitor(process, {rabbit, Node}), ok = rabbit_alarm:on_node_up(Node), - {noreply, State#state{rabbits = sets:add_element(Node, Rabbits)}}; + {noreply, State}; handle_cast(_Msg, State) -> {noreply, State}. -handle_info({nodedown, Node}, State) -> - rabbit_log:info("node ~p down~n", [Node]), - {noreply, handle_dead_rabbit(Node, State)}; -handle_info({nodeup, Node}, State = #state{rabbits = Nodes}) -> - rabbit_log:info("node ~p up~n", [Node]), - {noreply, State#state{rabbits = sets:add_element(Node, Nodes)}}; handle_info({'DOWN', _MRef, process, {rabbit, Node}, _Reason}, State) -> rabbit_log:info("node ~p lost 'rabbit'~n", [Node]), - {noreply, handle_dead_rabbit(Node, State)}; + {noreply, handle_dead_rabbit(Node)}; handle_info(_Info, State) -> {noreply, State}. @@ -99,11 +90,7 @@ code_change(_OldVsn, State, _Extra) -> %% TODO: This may turn out to be a performance hog when there are lots %% of nodes. We really only need to execute some of these statements %% on *one* node, rather than all of them. -handle_dead_rabbit(Node, State = #state{rabbits = Rabbits}) -> - case sets:is_element(Node, Rabbits) of - true -> ok = rabbit_networking:on_node_down(Node), - ok = rabbit_amqqueue:on_node_down(Node), - ok = rabbit_alarm:on_node_down(Node), - State#state{rabbits = sets:del_element(Node, Rabbits)}; - false -> State - end. +handle_dead_rabbit(Node) -> + ok = rabbit_networking:on_node_down(Node), + ok = rabbit_amqqueue:on_node_down(Node), + ok = rabbit_alarm:on_node_down(Node). |
