Skip to content

Commit

Permalink
Merge pull request #2399 from rabbitmq/mk-check-if-node-is-mirror-syn…
Browse files Browse the repository at this point in the history
…c-critical-should-ignore-exclusive-queues

Exclude exclusive queues from list_local_mirrored_classic_without_synchronised_mirrors

(cherry picked from commit 9b4ce6c)
  • Loading branch information
michaelklishin committed Jul 1, 2020
1 parent 39e9e83 commit f53532f
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 2 deletions.
12 changes: 11 additions & 1 deletion src/rabbit_amqqueue.erl
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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)].
Expand Down Expand Up @@ -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) ->
Expand Down
2 changes: 1 addition & 1 deletion src/rabbit_quorum_queue.erl
Original file line number Diff line number Diff line change
Expand Up @@ -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">>
Expand Down

0 comments on commit f53532f

Please sign in to comment.