diff options
| author | Michael Klishin <michael@clojurewerkz.org> | 2020-07-01 17:56:42 +0300 |
|---|---|---|
| committer | Michael Klishin <michael@clojurewerkz.org> | 2020-07-01 17:56:42 +0300 |
| commit | 811a18c6f0e30a00f46f37b0728027f513b6ee97 (patch) | |
| tree | 870a359660026f05fd914f624fb0032f161e115a /src | |
| parent | 167c376be968da27a5b1e90e562930474680a7a8 (diff) | |
| download | rabbitmq-server-git-811a18c6f0e30a00f46f37b0728027f513b6ee97.tar.gz | |
Exclude exclusive queues from list_local_mirrored_classic_without_synchronised_mirrors
as they are not actually mirrored.
References rabbitmq/rabbitmq-cli#432.
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_amqqueue.erl | 12 |
1 files changed, 11 insertions, 1 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) -> |
