diff options
| author | Jean-Sébastien Pédron <jean-sebastien@rabbitmq.com> | 2015-03-03 17:40:07 +0100 |
|---|---|---|
| committer | Jean-Sébastien Pédron <jean-sebastien@rabbitmq.com> | 2015-03-03 17:40:07 +0100 |
| commit | 945b04fdeb7a3a3113b8cb88ea8777d4b807b65a (patch) | |
| tree | 5e18658488e59a52c100d1cebb60932dfa072ca2 /src | |
| parent | 989cde8ec1e3fe7b51cb2d0c8c7643f8a4e68886 (diff) | |
| parent | e03e7da3115c54e8a7ca54ad3cc2c4c74f7ed417 (diff) | |
| download | rabbitmq-server-git-945b04fdeb7a3a3113b8cb88ea8777d4b807b65a.tar.gz | |
Merge branch 'stable'
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_node_monitor.erl | 46 |
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. %%---------------------------------------------------------------------------- |
