summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJean-Sébastien Pédron <jean-sebastien@rabbitmq.com>2015-03-03 17:40:07 +0100
committerJean-Sébastien Pédron <jean-sebastien@rabbitmq.com>2015-03-03 17:40:07 +0100
commit945b04fdeb7a3a3113b8cb88ea8777d4b807b65a (patch)
tree5e18658488e59a52c100d1cebb60932dfa072ca2 /src
parent989cde8ec1e3fe7b51cb2d0c8c7643f8a4e68886 (diff)
parente03e7da3115c54e8a7ca54ad3cc2c4c74f7ed417 (diff)
downloadrabbitmq-server-git-945b04fdeb7a3a3113b8cb88ea8777d4b807b65a.tar.gz
Merge branch 'stable'
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_node_monitor.erl46
1 files changed, 25 insertions, 21 deletions
diff --git a/src/rabbit_node_monitor.erl b/src/rabbit_node_monitor.erl
index 12ac08120a..366aac84d3 100644
--- a/src/rabbit_node_monitor.erl
+++ b/src/rabbit_node_monitor.erl
@@ -220,38 +220,42 @@ pause_partition_guard() ->
{ok, M} = application:get_env(rabbit, cluster_partition_handling),
case M of
pause_minority ->
- pause_minority_guard([]);
+ pause_minority_guard([], ok);
{pause_if_all_down, PreferredNodes, _} ->
- pause_if_all_down_guard(PreferredNodes, []);
+ pause_if_all_down_guard(PreferredNodes, [], ok);
_ ->
put(pause_partition_guard, not_pause_mode),
ok
end;
- {minority_mode, Nodes} ->
- pause_minority_guard(Nodes);
- {pause_if_all_down_mode, PreferredNodes, Nodes} ->
- pause_if_all_down_guard(PreferredNodes, Nodes)
+ {minority_mode, Nodes, LastState} ->
+ pause_minority_guard(Nodes, LastState);
+ {pause_if_all_down_mode, PreferredNodes, Nodes, LastState} ->
+ pause_if_all_down_guard(PreferredNodes, Nodes, LastState)
end.
-pause_minority_guard(LastNodes) ->
+pause_minority_guard(LastNodes, LastState) ->
case nodes() of
- LastNodes -> ok;
- _ -> put(pause_partition_guard, {minority_mode, nodes()}),
- case majority() of
- false -> pausing;
- true -> ok
- end
+ LastNodes -> LastState;
+ _ -> NewState = case majority() of
+ false -> pausing;
+ true -> ok
+ end,
+ put(pause_partition_guard,
+ {minority_mode, nodes(), NewState}),
+ NewState
end.
-pause_if_all_down_guard(PreferredNodes, LastNodes) ->
+pause_if_all_down_guard(PreferredNodes, LastNodes, LastState) ->
case nodes() of
- LastNodes -> ok;
- _ -> put(pause_partition_guard,
- {pause_if_all_down_mode, PreferredNodes, nodes()}),
- case in_preferred_partition(PreferredNodes) of
- false -> pausing;
- true -> ok
- end
+ LastNodes -> LastState;
+ _ -> NewState = case in_preferred_partition(PreferredNodes) of
+ false -> pausing;
+ true -> ok
+ end,
+ put(pause_partition_guard,
+ {pause_if_all_down_mode, PreferredNodes, nodes(),
+ NewState}),
+ NewState
end.
%%----------------------------------------------------------------------------