summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Klishin <michael@clojurewerkz.org>2020-07-01 17:56:42 +0300
committerMichael Klishin <michael@clojurewerkz.org>2020-07-01 17:56:42 +0300
commit811a18c6f0e30a00f46f37b0728027f513b6ee97 (patch)
tree870a359660026f05fd914f624fb0032f161e115a
parent167c376be968da27a5b1e90e562930474680a7a8 (diff)
downloadrabbitmq-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.
-rw-r--r--src/rabbit_amqqueue.erl12
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) ->