summaryrefslogtreecommitdiff
path: root/src/rabbit_mnesia.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/rabbit_mnesia.erl')
-rw-r--r--src/rabbit_mnesia.erl56
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() ++ "/*")),