diff options
Diffstat (limited to 'src/rabbit_mnesia.erl')
-rw-r--r-- | src/rabbit_mnesia.erl | 56 |
1 files changed, 24 insertions, 32 deletions
diff --git a/src/rabbit_mnesia.erl b/src/rabbit_mnesia.erl index ac7ea18e..e4e1c121 100644 --- a/src/rabbit_mnesia.erl +++ b/src/rabbit_mnesia.erl @@ -32,9 +32,6 @@ %% other mnesia-using Erlang applications, such as ejabberd -export([create_tables/0]). -%% The prefix of the module name of nodes spawned by the rabbitmqctl script. --define(RABBITMQCTL_PREFIX, "rabbitmqctl"). - -include("rabbit.hrl"). %%---------------------------------------------------------------------------- @@ -739,39 +736,34 @@ reset(Force) -> true -> log_both("no other disc nodes running"); false -> ok end, - case Force of - true -> - ok; - false -> - ensure_mnesia_dir(), - start_mnesia(), - Node = node(), - {Nodes, RunningNodes} = - try - %% Force=true here so that reset still works when - %% clustered with a node which is down - ok = init_db(read_cluster_nodes_config(), true), - {all_clustered_nodes() -- [Node], - running_clustered_nodes() -- [Node]} - after - stop_mnesia() - end, - leave_cluster(Nodes, RunningNodes), - rabbit_misc:ensure_ok(mnesia:delete_schema([Node]), - cannot_delete_schema) + Nodes = case Force of + true -> + %% all_clustered_nodes() will return [node()] here, since + %% mnesia is not running. + []; + false -> + ensure_mnesia_dir(), + start_mnesia(), + Node = node(), + {Nodes0, RunningNodes} = + try + %% Force=true here so that reset still works when + %% clustered with a node which is down + ok = init_db(read_cluster_nodes_config(), true), + {all_clustered_nodes() -- [Node], + running_clustered_nodes() -- [Node]} + after + stop_mnesia() + end, + leave_cluster(Nodes0, RunningNodes), + rabbit_misc:ensure_ok(mnesia:delete_schema([Node]), + cannot_delete_schema), + Nodes0 end, - %% We don't want to disconnect rabbitmqctl - ConnectedNodes = - lists:filter( - fun(Node) -> - case rabbit_nodes:parts(Node) of - {Name, _} -> not lists:prefix(?RABBITMQCTL_PREFIX, Name) - end - end, nodes()), %% We need to make sure that we don't end up in a distributed %% Erlang system with nodes while not being in an Mnesia cluster %% with them. We don't handle that well. - [erlang:disconnect_node(N) || N <- ConnectedNodes], + [erlang:disconnect_node(N) || N <- Nodes], ok = delete_cluster_nodes_config(), %% remove persisted messages and any other garbage we find ok = rabbit_file:recursive_delete(filelib:wildcard(dir() ++ "/*")), |