summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandru Scvortov <alexandru@rabbitmq.com>2011-08-11 14:56:54 +0100
committerAlexandru Scvortov <alexandru@rabbitmq.com>2011-08-11 14:56:54 +0100
commit0e485568eda4399b66429a4935bd825764164493 (patch)
tree607444cdd0b2dd5089fa6ce30b64a3fec153a3fd
parent217b8f1d859c4668d5c7227720dd3dc0a4808f95 (diff)
downloadrabbitmq-server-0e485568eda4399b66429a4935bd825764164493.tar.gz
inform when the first disc node rejoins the cluster
-rw-r--r--src/rabbit_mnesia.erl20
-rw-r--r--src/rabbit_node_monitor.erl8
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).