diff options
| author | Diana Corbacho <diana@rabbitmq.com> | 2019-01-08 16:12:40 +0000 |
|---|---|---|
| committer | Diana Corbacho <diana@rabbitmq.com> | 2019-01-08 16:12:40 +0000 |
| commit | 6b508336f41b8ec8589165599475b14a80e37482 (patch) | |
| tree | 6d593fb9184cc506c54f2c021fa84bbd1e1574e3 | |
| parent | 897e7f6a1bdbcf16a4bef37d50ecfa5f5e6ba7bc (diff) | |
| download | rabbitmq-server-git-6b508336f41b8ec8589165599475b14a80e37482.tar.gz | |
Consider quorum queues in forget_cluster_node
If there are other members available, quorum queues shouldn't be deleted
| -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) -> |
