summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandru Scvortov <alexandru@rabbitmq.com>2011-08-03 11:41:24 +0100
committerAlexandru Scvortov <alexandru@rabbitmq.com>2011-08-03 11:41:24 +0100
commit65fe27ce65b0c29e6d18fb35b1e1439842d64813 (patch)
tree906426f48cc3df1d6ca089af7361fd279b163813
parent8f60a84cbfa3019a3a9d196f55b32e24b765b47d (diff)
downloadrabbitmq-server-git-65fe27ce65b0c29e6d18fb35b1e1439842d64813.tar.gz
warn when the last disc node fails
-rw-r--r--src/rabbit_mnesia.erl41
-rw-r--r--src/rabbit_node_monitor.erl5
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.