From 1cd6f5880c9e137504dcdd3f4b9f87f1c7cc4d3e Mon Sep 17 00:00:00 2001 From: Francesco Mazzoli Date: Tue, 2 Oct 2012 13:16:40 +0100 Subject: simplify `leave_cluster/0' --- src/rabbit_mnesia.erl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/rabbit_mnesia.erl b/src/rabbit_mnesia.erl index bfecf06a0c..7ec678b50d 100644 --- a/src/rabbit_mnesia.erl +++ b/src/rabbit_mnesia.erl @@ -666,10 +666,10 @@ remove_node_if_mnesia_running(Node) -> end. leave_cluster() -> - RunningNodes = running_nodes(nodes_excl_me(cluster_nodes(all))), - case not is_clustered() andalso RunningNodes =:= [] of - true -> ok; - false -> case lists:any(fun leave_cluster/1, RunningNodes) of + AllNodes = nodes_excl_me(cluster_nodes(all)), + case AllNodes of + [] -> ok; + _ -> case lists:any(fun leave_cluster/1, AllNodes) of true -> ok; false -> e(no_running_cluster_nodes) end -- cgit v1.2.1 From 4c6880edcb8a66145cf8601d3f4f60ea790cd7a4 Mon Sep 17 00:00:00 2001 From: Francesco Mazzoli Date: Tue, 2 Oct 2012 13:31:03 +0100 Subject: wait for tables, not for mnesia --- src/rabbit_mnesia.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/rabbit_mnesia.erl b/src/rabbit_mnesia.erl index 7ec678b50d..a442f9951d 100644 --- a/src/rabbit_mnesia.erl +++ b/src/rabbit_mnesia.erl @@ -291,7 +291,7 @@ remove_node_offline_node(Node) -> try rabbit_table:force_load(), forget_cluster_node(Node, false), - ensure_mnesia_running() + rabbit_table:wait_for_replicated() after stop_mnesia() end; -- cgit v1.2.1 From e6b19f44a9a91a2f0977c594a102bbc218f1c547 Mon Sep 17 00:00:00 2001 From: Francesco Mazzoli Date: Tue, 2 Oct 2012 13:43:53 +0100 Subject: cosmetics --- src/rabbit_mnesia.erl | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/rabbit_mnesia.erl b/src/rabbit_mnesia.erl index a442f9951d..c032129996 100644 --- a/src/rabbit_mnesia.erl +++ b/src/rabbit_mnesia.erl @@ -666,13 +666,12 @@ remove_node_if_mnesia_running(Node) -> end. leave_cluster() -> - AllNodes = nodes_excl_me(cluster_nodes(all)), - case AllNodes of - [] -> ok; - _ -> case lists:any(fun leave_cluster/1, AllNodes) of - true -> ok; - false -> e(no_running_cluster_nodes) - end + case nodes_excl_me(cluster_nodes(all)) of + [] -> ok; + AllNodes -> case lists:any(fun leave_cluster/1, AllNodes) of + true -> ok; + false -> e(no_running_cluster_nodes) + end end. leave_cluster(Node) -> -- cgit v1.2.1 From 6e2c400e968efd06aca696c1d344a6bc7870dbc6 Mon Sep 17 00:00:00 2001 From: Francesco Mazzoli Date: Tue, 2 Oct 2012 13:51:52 +0100 Subject: comments, also wait for tables right after you load them --- src/rabbit_mnesia.erl | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/rabbit_mnesia.erl b/src/rabbit_mnesia.erl index c032129996..870692282f 100644 --- a/src/rabbit_mnesia.erl +++ b/src/rabbit_mnesia.erl @@ -276,6 +276,9 @@ forget_cluster_node(Node, RemoveWhenOffline) -> end. remove_node_offline_node(Node) -> + %% We want the running nodes *now*, so we don't call + %% `cluster_nodes(running)' which will just get what's in the cluster status + %% file. case {running_nodes(cluster_nodes(all)) -- [Node], node_type()} of {[], disc} -> %% Note that while we check if the nodes was the last to @@ -289,9 +292,13 @@ remove_node_offline_node(Node) -> case cluster_nodes(running) -- [node(), Node] of [] -> start_mnesia(), try + %% What we want to do here is replace the last node to + %% go down with the current node. The way we do this + %% is by force loading the table, and making sure that + %% they are loaded. rabbit_table:force_load(), - forget_cluster_node(Node, false), - rabbit_table:wait_for_replicated() + rabbit_table:wait_for_replicated(), + forget_cluster_node(Node, false) after stop_mnesia() end; -- cgit v1.2.1