summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancesco Mazzoli <francesco@rabbitmq.com>2012-09-13 15:41:42 +0100
committerFrancesco Mazzoli <francesco@rabbitmq.com>2012-09-13 15:41:42 +0100
commit2f7f8b83f592d9b71b34cc1fc258d04e5f6563f2 (patch)
treedbc81adc9c8d8b5da1c78d6a6b8fd3beccec2d14
parent4233031e8189bb4058502ab0cfa699e5fec05bb8 (diff)
downloadrabbitmq-server-2f7f8b83f592d9b71b34cc1fc258d04e5f6563f2.tar.gz
get cluster nodes from mnesia when legacy/non existant status file
This is necessary because the upgrade process needs to remove the replicas of the schemas.
-rw-r--r--src/rabbit_node_monitor.erl10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/rabbit_node_monitor.erl b/src/rabbit_node_monitor.erl
index 397032a4..b2d7bb60 100644
--- a/src/rabbit_node_monitor.erl
+++ b/src/rabbit_node_monitor.erl
@@ -102,11 +102,12 @@ prepare_cluster_status_files() ->
{ok, [{AllNodes, DiscNodes0}]} ->
{AllNodes, lists:member(node(), DiscNodes0)};
{ok, [AllNodes0]} when is_list(AllNodes0) ->
- {AllNodes0, legacy_should_be_disc_node(AllNodes0)};
+ {legacy_cluster_nodes(AllNodes0),
+ legacy_should_be_disc_node(AllNodes0)};
{ok, _} ->
CorruptFiles();
non_existant ->
- {[], true}
+ {legacy_cluster_nodes([]), true}
end,
ThisNode = [node()],
@@ -291,5 +292,10 @@ is_already_monitored(Item) ->
(_) -> false
end, Monitors).
+legacy_cluster_nodes(Nodes) ->
+ %% We get all the info that we can, including the nodes from mnesia, which
+ %% will be there if the node is a disc node (empty list otherwise)
+ lists:usort(Nodes ++ mnesia:system_info(db_nodes)).
+
legacy_should_be_disc_node(DiscNodes) ->
DiscNodes == [] orelse lists:member(node(), DiscNodes).