summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rabbit_mnesia.erl21
1 files changed, 7 insertions, 14 deletions
diff --git a/src/rabbit_mnesia.erl b/src/rabbit_mnesia.erl
index a92a92bcf0..5be23a88da 100644
--- a/src/rabbit_mnesia.erl
+++ b/src/rabbit_mnesia.erl
@@ -738,14 +738,9 @@ reset(Force) ->
false -> ok
end,
Node = node(),
- ConfigNodes = read_cluster_nodes_config(),
case Force of
true ->
- %% If Node is a ram node, all_clustered_nodes() returns
- %% just that when mnesia isn't running. So we also include
- %% the the next best thing - the nodes from the config.
- disconnect_nodes(
- lists:usort(all_clustered_nodes() ++ ConfigNodes) -- [Node]);
+ ok;
false ->
ensure_mnesia_dir(),
start_mnesia(),
@@ -753,7 +748,7 @@ reset(Force) ->
try
%% Force=true here so that reset still works when clustered
%% with a node which is down
- ok = init_db(ConfigNodes, true),
+ ok = init_db(read_cluster_nodes_config(), true),
{all_clustered_nodes() -- [Node],
running_clustered_nodes() -- [Node]}
after
@@ -761,19 +756,17 @@ reset(Force) ->
end,
leave_cluster(Nodes, RunningNodes),
rabbit_misc:ensure_ok(mnesia:delete_schema([Node]),
- cannot_delete_schema),
- disconnect_nodes(Nodes)
+ cannot_delete_schema)
end,
+ %% 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 <- nodes() -- [Node]],
ok = delete_cluster_nodes_config(),
%% remove persisted messages and any other garbage we find
ok = rabbit_file:recursive_delete(filelib:wildcard(dir() ++ "/*")),
ok.
-%% 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.
-disconnect_nodes(Nodes) -> [erlang:disconnect_node(N) || N <- Nodes].
-
leave_cluster([], _) -> ok;
leave_cluster(Nodes, RunningNodes) ->
%% find at least one running cluster node and instruct it to