summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandru Scvortov <alexandru@rabbitmq.com>2011-08-03 10:37:50 +0100
committerAlexandru Scvortov <alexandru@rabbitmq.com>2011-08-03 10:37:50 +0100
commit0f56bb08552bb6bda110c14ad7f242393fb62667 (patch)
treee7255253426dbdff5eab1d096034a0c692175040
parentd3509448afcd1f6f0783c13bc877560b43c9b5f5 (diff)
downloadrabbitmq-server-git-0f56bb08552bb6bda110c14ad7f242393fb62667.tar.gz
warn when removing the last disc node from a cluster
-rw-r--r--src/rabbit_mnesia.erl18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/rabbit_mnesia.erl b/src/rabbit_mnesia.erl
index ab553a8b07..6c372b745d 100644
--- a/src/rabbit_mnesia.erl
+++ b/src/rabbit_mnesia.erl
@@ -28,6 +28,8 @@
-export([table_names/0]).
+-compile([export_all]).
+
%% create_tables/0 exported for helping embed RabbitMQ in or alongside
%% other mnesia-using Erlang applications, such as ejabberd
-export([create_tables/0]).
@@ -118,6 +120,21 @@ 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
+ end,
+
%% 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(
@@ -159,6 +176,7 @@ cluster(ClusterNodes, Force) ->
after
stop_mnesia()
end,
+
ok.
%% return node to its virgin state, where it is not member of any