diff options
| author | Michael Klishin <mklishin@pivotal.io> | 2020-07-01 18:34:44 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-07-01 18:34:44 +0300 |
| commit | 9b4ce6c72fb15d2fd2e5b438a7c46ee9ee19cd32 (patch) | |
| tree | 64c4c1d7f645182087047c6e8fa82c2f88edaaa2 | |
| parent | 6348d4514bf885b90a2b09b440068fc77285c56f (diff) | |
| parent | 836921dfc7763566ecc3134ac49ef396c9873c6a (diff) | |
| download | rabbitmq-server-git-9b4ce6c72fb15d2fd2e5b438a7c46ee9ee19cd32.tar.gz | |
Merge pull request #2399 from rabbitmq/mk-check-if-node-is-mirror-sync-critical-should-ignore-exclusive-queues
Exclude exclusive queues from list_local_mirrored_classic_without_synchronised_mirrors
| -rw-r--r-- | src/rabbit_amqqueue.erl | 12 | ||||
| -rw-r--r-- | src/rabbit_quorum_queue.erl | 2 |
2 files changed, 12 insertions, 2 deletions
diff --git a/src/rabbit_amqqueue.erl b/src/rabbit_amqqueue.erl index 21c027451d..9e613553ac 100644 --- a/src/rabbit_amqqueue.erl +++ b/src/rabbit_amqqueue.erl @@ -45,7 +45,7 @@ -export([update_mirroring/1, sync_mirrors/1, cancel_sync_mirrors/1]). -export([emit_unresponsive/6, emit_unresponsive_local/5, is_unresponsive/2]). -export([has_synchronised_mirrors_online/1]). --export([is_replicated/1, is_dead_exclusive/1]). % Note: exported due to use in qlc expression. +-export([is_replicated/1, is_exclusive/1, is_not_exclusive/1, is_dead_exclusive/1]). -export([list_local_quorum_queues/0, list_local_quorum_queue_names/0, list_local_leaders/0, list_local_followers/0, get_quorum_nodes/1, list_local_mirrored_classic_without_synchronised_mirrors/0, @@ -1094,6 +1094,8 @@ list_local_mirrored_classic_without_synchronised_mirrors() -> [ Q || Q <- list(), amqqueue:get_state(Q) =/= crashed, amqqueue:is_classic(Q), + %% filter out exclusive queues as they won't actually be mirrored + is_not_exclusive(Q), is_local_to_node(amqqueue:get_pid(Q), node()), is_replicated(Q), not has_synchronised_mirrors_online(Q)]. @@ -1952,6 +1954,14 @@ is_replicated(Q) when ?amqqueue_is_quorum(Q) -> is_replicated(Q) -> rabbit_mirror_queue_misc:is_mirrored(Q). +is_exclusive(Q) when ?amqqueue_exclusive_owner_is(Q, none) -> + false; +is_exclusive(Q) when ?amqqueue_exclusive_owner_is_pid(Q) -> + true. + +is_not_exclusive(Q) -> + not is_exclusive(Q). + is_dead_exclusive(Q) when ?amqqueue_exclusive_owner_is(Q, none) -> false; is_dead_exclusive(Q) when ?amqqueue_exclusive_owner_is_pid(Q) -> diff --git a/src/rabbit_quorum_queue.erl b/src/rabbit_quorum_queue.erl index e6f2b4ebe8..28a40ac615 100644 --- a/src/rabbit_quorum_queue.erl +++ b/src/rabbit_quorum_queue.erl @@ -251,7 +251,7 @@ list_with_minimum_quorum_for_cli() -> [begin #resource{name = Name} = amqqueue:get_name(Q), #{ - <<"readable_name">> => rabbit_misc:rs(amqqueue:get_name(Q)), + <<"readable_name">> => rabbit_data_coercion:to_binary(rabbit_misc:rs(amqqueue:get_name(Q))), <<"name">> => Name, <<"virtual_host">> => amqqueue:get_vhost(Q), <<"type">> => <<"quorum">> |
