diff options
| -rw-r--r-- | src/rabbit_amqqueue.erl | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/rabbit_amqqueue.erl b/src/rabbit_amqqueue.erl index d938bece8c..7dc343125e 100644 --- a/src/rabbit_amqqueue.erl +++ b/src/rabbit_amqqueue.erl @@ -1279,6 +1279,9 @@ forget_all_durable(Node) -> %% Try to promote a slave while down - it should recover as a %% master. We try to take the oldest slave here for best chance of %% recovery. +forget_node_for_queue(DeadNode, Q = #amqqueue{type = quorum, + quorum_nodes = QN}) -> + forget_node_for_queue(DeadNode, QN, Q); forget_node_for_queue(DeadNode, Q = #amqqueue{recoverable_slaves = RS}) -> forget_node_for_queue(DeadNode, RS, Q). @@ -1292,11 +1295,12 @@ forget_node_for_queue(_DeadNode, [], #amqqueue{name = Name}) -> forget_node_for_queue(DeadNode, [DeadNode | T], Q) -> forget_node_for_queue(DeadNode, T, Q); -forget_node_for_queue(DeadNode, [H|T], Q) -> - case node_permits_offline_promotion(H) of - false -> forget_node_for_queue(DeadNode, T, Q); - true -> Q1 = Q#amqqueue{pid = rabbit_misc:node_to_fake_pid(H)}, - ok = mnesia:write(rabbit_durable_queue, Q1, write) +forget_node_for_queue(DeadNode, [H|T], #amqqueue{type = Type} = Q) -> + case {node_permits_offline_promotion(H), Type} of + {false, _} -> forget_node_for_queue(DeadNode, T, Q); + {true, classic} -> Q1 = Q#amqqueue{pid = rabbit_misc:node_to_fake_pid(H)}, + ok = mnesia:write(rabbit_durable_queue, Q1, write); + {true, quorum} -> ok end. node_permits_offline_promotion(Node) -> |
