diff options
| author | Alexandru Scvortov <alexandru@rabbitmq.com> | 2011-08-03 10:51:40 +0100 |
|---|---|---|
| committer | Alexandru Scvortov <alexandru@rabbitmq.com> | 2011-08-03 10:51:40 +0100 |
| commit | 8f60a84cbfa3019a3a9d196f55b32e24b765b47d (patch) | |
| tree | fb5a7b2d0c00aac972408d1d4afd074a0832fa4d | |
| parent | 0f56bb08552bb6bda110c14ad7f242393fb62667 (diff) | |
| download | rabbitmq-server-git-8f60a84cbfa3019a3a9d196f55b32e24b765b47d.tar.gz | |
warn when resetting the last disc node
| -rw-r--r-- | src/rabbit_mnesia.erl | 33 |
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(). |
