summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancesco Mazzoli <francesco@rabbitmq.com>2012-07-09 19:50:35 +0100
committerFrancesco Mazzoli <francesco@rabbitmq.com>2012-07-09 19:50:35 +0100
commit430f27d70af24eb6e485dc2f656e90882a4b41a0 (patch)
tree2ad24e5c4b9c00090248448e3c7f0f37f50921c4
parentc24137652800731c77e7b2e0d629f389c9b7a91a (diff)
downloadrabbitmq-server-430f27d70af24eb6e485dc2f656e90882a4b41a0.tar.gz
do not update the cluster status file by getting the mnesia status
Instead, just update the existing cluster status file. This is because the mnesia propagation time can be slower than the other messages (see other comments in the bug)
-rw-r--r--src/rabbit_node_monitor.erl12
1 files changed, 4 insertions, 8 deletions
diff --git a/src/rabbit_node_monitor.erl b/src/rabbit_node_monitor.erl
index f6cbee34..849f5d31 100644
--- a/src/rabbit_node_monitor.erl
+++ b/src/rabbit_node_monitor.erl
@@ -197,8 +197,7 @@ handle_cast({node_up, Node, IsDiscNode}, State) ->
case is_already_monitored({rabbit, Node}) of
true -> {noreply, State};
false -> rabbit_log:info("rabbit on node ~p up~n", [Node]),
- {ok, {AllNodes, DiscNodes, RunningNodes}} =
- rabbit_mnesia:cluster_status_from_mnesia(),
+ {AllNodes, DiscNodes, RunningNodes} = read_cluster_status_file(),
write_cluster_status_file(
{ordsets:add_element(Node, AllNodes),
case IsDiscNode of
@@ -211,8 +210,7 @@ handle_cast({node_up, Node, IsDiscNode}, State) ->
{noreply, State}
end;
handle_cast({joined_cluster, Node, IsDiscNode}, State) ->
- {ok, {AllNodes, DiscNodes, RunningNodes}} =
- rabbit_mnesia:cluster_status_from_mnesia(),
+ {AllNodes, DiscNodes, RunningNodes} = read_cluster_status_file(),
write_cluster_status_file({ordsets:add_element(Node, AllNodes),
case IsDiscNode of
true -> ordsets:add_element(Node,
@@ -222,8 +220,7 @@ handle_cast({joined_cluster, Node, IsDiscNode}, State) ->
RunningNodes}),
{noreply, State};
handle_cast({left_cluster, Node}, State) ->
- {ok, {AllNodes, DiscNodes, RunningNodes}} =
- rabbit_mnesia:cluster_status_from_mnesia(),
+ {AllNodes, DiscNodes, RunningNodes} = read_cluster_status_file(),
write_cluster_status_file({ordsets:del_element(Node, AllNodes),
ordsets:del_element(Node, DiscNodes),
ordsets:del_element(Node, RunningNodes)}),
@@ -233,8 +230,7 @@ handle_cast(_Msg, State) ->
handle_info({'DOWN', _MRef, process, {rabbit, Node}, _Reason}, State) ->
rabbit_log:info("rabbit on node ~p down~n", [Node]),
- {ok, {AllNodes, DiscNodes, RunningNodes}} =
- rabbit_mnesia:cluster_status_from_mnesia(),
+ {AllNodes, DiscNodes, RunningNodes} = read_cluster_status_file(),
write_cluster_status_file({AllNodes, DiscNodes,
ordsets:del_element(Node, RunningNodes)}),
ok = handle_dead_rabbit(Node),