diff options
author | Simon MacMullen <simon@rabbitmq.com> | 2013-09-13 14:50:23 +0100 |
---|---|---|
committer | Simon MacMullen <simon@rabbitmq.com> | 2013-09-13 14:50:23 +0100 |
commit | fbab844a9f5440ea9344943d1f6b385bbcedb42e (patch) | |
tree | 618b8ddc30f48cd09f8d43f106ec31b729ea41fb /src/rabbit_mirror_queue_misc.erl | |
parent | 45f1fd2e31667967dd38cf84e32f5c5ace030dfa (diff) | |
parent | 3c2b3330467b9e7d6f18281477755fb0c10d06ee (diff) | |
download | rabbitmq-server-fbab844a9f5440ea9344943d1f6b385bbcedb42e.tar.gz |
Merge bug25749 (again)
Diffstat (limited to 'src/rabbit_mirror_queue_misc.erl')
-rw-r--r-- | src/rabbit_mirror_queue_misc.erl | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/rabbit_mirror_queue_misc.erl b/src/rabbit_mirror_queue_misc.erl index 4dd19bd3..c8d04699 100644 --- a/src/rabbit_mirror_queue_misc.erl +++ b/src/rabbit_mirror_queue_misc.erl @@ -69,7 +69,7 @@ %% slave (now master) receives messages it's not ready for (for %% example, new consumers). %% Returns {ok, NewMPid, DeadPids} -remove_from_queue(QueueName, Self, DeadGMPids) -> +remove_from_queue(QueueName, Self, LiveGMPids) -> rabbit_misc:execute_mnesia_transaction( fun () -> %% Someone else could have deleted the queue before we @@ -79,9 +79,9 @@ remove_from_queue(QueueName, Self, DeadGMPids) -> [Q = #amqqueue { pid = QPid, slave_pids = SPids, gm_pids = GMPids }] -> - {Dead, GMPids1} = lists:partition( + {GMPids1, Dead} = lists:partition( fun ({GM, _}) -> - lists:member(GM, DeadGMPids) + lists:member(GM, LiveGMPids) end, GMPids), DeadPids = [Pid || {_GM, Pid} <- Dead], Alive = [QPid | SPids] -- DeadPids, @@ -237,16 +237,20 @@ suggested_queue_nodes(Q) -> %% This variant exists so we can pull a call to %% rabbit_mnesia:cluster_nodes(running) out of a loop or %% transaction or both. -suggested_queue_nodes(Q, All) -> +suggested_queue_nodes(Q = #amqqueue{exclusive_owner = Owner}, All) -> {MNode0, SNodes, SSNodes} = actual_queue_nodes(Q), MNode = case MNode0 of none -> node(); _ -> MNode0 end, - Params = policy(<<"ha-params">>, Q), - case module(Q) of - {ok, M} -> M:suggested_queue_nodes(Params, MNode, SNodes, SSNodes, All); - _ -> {MNode, []} + case Owner of + none -> Params = policy(<<"ha-params">>, Q), + case module(Q) of + {ok, M} -> M:suggested_queue_nodes( + Params, MNode, SNodes, SSNodes, All); + _ -> {MNode, []} + end; + _ -> {MNode, []} end. policy(Policy, Q) -> |