summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandru Scvortov <alexandru@rabbitmq.com>2011-08-03 10:51:40 +0100
committerAlexandru Scvortov <alexandru@rabbitmq.com>2011-08-03 10:51:40 +0100
commit8f60a84cbfa3019a3a9d196f55b32e24b765b47d (patch)
treefb5a7b2d0c00aac972408d1d4afd074a0832fa4d
parent0f56bb08552bb6bda110c14ad7f242393fb62667 (diff)
downloadrabbitmq-server-git-8f60a84cbfa3019a3a9d196f55b32e24b765b47d.tar.gz
warn when resetting the last disc node
-rw-r--r--src/rabbit_mnesia.erl33
1 files changed, 20 insertions, 13 deletions
diff --git a/src/rabbit_mnesia.erl b/src/rabbit_mnesia.erl
index 6c372b745d..1841c9dfb6 100644
--- a/src/rabbit_mnesia.erl
+++ b/src/rabbit_mnesia.erl
@@ -120,19 +120,11 @@ cluster(ClusterNodes, Force) ->
ensure_mnesia_not_running(),
ensure_mnesia_dir(),
- DiscNodes = case is_disc_node() of
- true -> start_mnesia(),
- Nodes = nodes_of_type(disc_copies),
- stop_mnesia(),
- Nodes;
- _ -> []
- end,
- Node = node(),
- case {should_be_disc_node(ClusterNodes), DiscNodes} of
- {false, [Node]} -> Warning = "Warning: no disc nodes in cluster~n",
- io:format(Warning),
- error_logger:warning_msg(Warning);
- _ -> ok
+ 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
end,
%% Wipe mnesia if we're changing type from disc to ram
@@ -708,6 +700,12 @@ 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);
+ false -> ok
+ end,
Node = node(),
case Force of
true -> ok;
@@ -755,6 +753,15 @@ 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.
+
start_mnesia() ->
rabbit_misc:ensure_ok(mnesia:start(), cannot_start_mnesia),
ensure_mnesia_running().