diff options
author | Alexandru Scvortov <alexandru@rabbitmq.com> | 2011-08-11 14:56:54 +0100 |
---|---|---|
committer | Alexandru Scvortov <alexandru@rabbitmq.com> | 2011-08-11 14:56:54 +0100 |
commit | 0e485568eda4399b66429a4935bd825764164493 (patch) | |
tree | 607444cdd0b2dd5089fa6ce30b64a3fec153a3fd | |
parent | 217b8f1d859c4668d5c7227720dd3dc0a4808f95 (diff) | |
download | rabbitmq-server-0e485568eda4399b66429a4935bd825764164493.tar.gz |
inform when the first disc node rejoins the cluster
-rw-r--r-- | src/rabbit_mnesia.erl | 20 | ||||
-rw-r--r-- | src/rabbit_node_monitor.erl | 8 |
2 files changed, 23 insertions, 5 deletions
diff --git a/src/rabbit_mnesia.erl b/src/rabbit_mnesia.erl index 55d818da..32ac3641 100644 --- a/src/rabbit_mnesia.erl +++ b/src/rabbit_mnesia.erl @@ -24,7 +24,7 @@ create_cluster_nodes_config/1, read_cluster_nodes_config/0, record_running_nodes/0, read_previously_running_nodes/0, delete_previously_running_nodes/0, running_nodes_filename/0, - is_disc_node/0, on_node_down/1]). + is_disc_node/0, on_node_down/1, on_node_up/1]). -export([table_names/0]). @@ -67,6 +67,8 @@ -spec(delete_previously_running_nodes/0 :: () -> 'ok'). -spec(running_nodes_filename/0 :: () -> file:filename()). -spec(is_disc_node/0 :: () -> boolean()). +-spec(on_node_up/1 :: (node()) -> 'ok'). +-spec(on_node_down/1 :: (node()) -> 'ok'). -endif. @@ -126,8 +128,11 @@ cluster(ClusterNodes, Force) -> %% Wipe mnesia if we're changing type from disc to ram case {is_disc_node(), should_be_disc_node(ClusterNodes)} of - {true, false} -> error_logger:warning_msg( - "changing node type; wiping mnesia...~n~n"), + {true, false} -> rabbit_misc:with_local_io( + fun () -> error_logger:warning_msg( + "changing node type; wiping " + "mnesia...~n~n") + end), rabbit_misc:ensure_ok(mnesia:delete_schema([node()]), cannot_delete_schema); _ -> ok @@ -748,6 +753,15 @@ leave_cluster(Nodes, RunningNodes) -> Nodes, RunningNodes}}) end. +on_node_up(Node) -> + case is_only_disc_node(Node, true) of + true -> rabbit_misc:with_local_io( + fun () -> rabbit_log:info("cluster contains disc " + "nodes again~n") + end); + false -> ok + end. + on_node_down(Node) -> case is_only_disc_node(Node, true) of true -> log_both("only disc node went down"); diff --git a/src/rabbit_node_monitor.erl b/src/rabbit_node_monitor.erl index 833e1923..98b9aa37 100644 --- a/src/rabbit_node_monitor.erl +++ b/src/rabbit_node_monitor.erl @@ -67,8 +67,7 @@ handle_call(_Request, _From, State) -> 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), + ok = handle_live_rabbit(Node), {noreply, State}; handle_cast(_Msg, State) -> {noreply, State}. @@ -96,3 +95,8 @@ handle_dead_rabbit(Node) -> ok = rabbit_amqqueue:on_node_down(Node), ok = rabbit_alarm:on_node_down(Node), ok = rabbit_mnesia:on_node_down(Node). + +handle_live_rabbit(Node) -> + erlang:monitor(process, {rabbit, Node}), + ok = rabbit_alarm:on_node_up(Node), + ok = rabbit_mnesia:on_node_up(Node). |