diff options
| author | Alexandru Scvortov <alexandru@rabbitmq.com> | 2011-08-03 11:41:24 +0100 |
|---|---|---|
| committer | Alexandru Scvortov <alexandru@rabbitmq.com> | 2011-08-03 11:41:24 +0100 |
| commit | 65fe27ce65b0c29e6d18fb35b1e1439842d64813 (patch) | |
| tree | 906426f48cc3df1d6ca089af7361fd279b163813 | |
| parent | 8f60a84cbfa3019a3a9d196f55b32e24b765b47d (diff) | |
| download | rabbitmq-server-git-65fe27ce65b0c29e6d18fb35b1e1439842d64813.tar.gz | |
warn when the last disc node fails
| -rw-r--r-- | src/rabbit_mnesia.erl | 41 | ||||
| -rw-r--r-- | src/rabbit_node_monitor.erl | 5 |
2 files changed, 27 insertions, 19 deletions
diff --git a/src/rabbit_mnesia.erl b/src/rabbit_mnesia.erl index 1841c9dfb6..0dff7fa280 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]). + is_disc_node/0, on_node_down/1]). -export([table_names/0]). @@ -120,11 +120,9 @@ cluster(ClusterNodes, Force) -> ensure_mnesia_not_running(), ensure_mnesia_dir(), - case is_only_disc_node() andalso not should_be_disc_node(ClusterNodes) of - true -> Warning = "Warning: last disc node leaving cluster~n", - io:format(Warning), - error_logger:warning_msg(Warning); - false -> ok + case {is_only_disc_node(node()), should_be_disc_node(ClusterNodes)} of + {true, false} -> log_both("last disc node leaving cluster"); + _ -> ok end, %% Wipe mnesia if we're changing type from disc to ram @@ -700,10 +698,8 @@ wait_for_tables(TableNames) -> reset(Force) -> ensure_mnesia_not_running(), - case is_only_disc_node() of - true -> Warning = "Warning: resetting only disc node~n", - io:format(Warning), - error_logger:warning_msg(Warning); + case is_only_disc_node(node()) of + true -> log_both("resetting only disc node"); false -> ok end, Node = node(), @@ -753,14 +749,23 @@ leave_cluster(Nodes, RunningNodes) -> Nodes, RunningNodes}}) end. -is_only_disc_node() -> - [node()] =:= case is_disc_node() of - true -> start_mnesia(), - Nodes = nodes_of_type(disc_copies), - stop_mnesia(), - Nodes; - _ -> [] - end. +on_node_down(Node) -> + io:format("node down!!! ~p~n", [Node]), + case is_only_disc_node(Node) of + true -> log_both("last disc node went down"); + false -> ok + end. + +is_only_disc_node(Node) -> + start_mnesia(), + Nodes = nodes_of_type(disc_copies), + stop_mnesia(), + [Node] =:= Nodes. + +log_both(Warning) -> + io:format("Warning: ~s~n", [Warning]), + %%error_logger:warning_msg("~s~n", [Warning]). + ok. start_mnesia() -> rabbit_misc:ensure_ok(mnesia:start(), cannot_start_mnesia), diff --git a/src/rabbit_node_monitor.erl b/src/rabbit_node_monitor.erl index 1f30a2fc35..bb93ab82ed 100644 --- a/src/rabbit_node_monitor.erl +++ b/src/rabbit_node_monitor.erl @@ -99,4 +99,7 @@ code_change(_OldVsn, State, _Extra) -> 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). + ok = rabbit_alarm:on_node_down(Node), + rabbit_log:info("handling dead rabbit!~p~n", [Node]), + %%ok = rabbit_mnesia:on_node_down(Node). + ok. |
