summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_quorum_queue.erl19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/rabbit_quorum_queue.erl b/src/rabbit_quorum_queue.erl
index 79c07535a4..b9ca15467c 100644
--- a/src/rabbit_quorum_queue.erl
+++ b/src/rabbit_quorum_queue.erl
@@ -37,6 +37,7 @@
-export([requeue/3]).
-export([policy_changed/2]).
-export([cleanup_data_dir/0]).
+-export([shrink_all/1]).
%%-include_lib("rabbit_common/include/rabbit.hrl").
-include_lib("rabbit.hrl").
@@ -725,6 +726,24 @@ delete_member(Q, Node) when ?amqqueue_is_quorum(Q) ->
E
end.
+shrink_all(Node) ->
+ [begin
+ QName = amqqueue:get_name(Q),
+ rabbit_log:info("~s: Removing member ~w",
+ [rabbit_misc:rs(QName), Node]),
+ case delete_member(Q, Node) of
+ ok ->
+ {ok, QName};
+ Err ->
+ rabbit_log:warning("~s: Failed to remove member ~w",
+ [rabbit_misc:rs(QName), Node]),
+ {error, QName, Err}
+ end
+ end || Q <- rabbit_amqqueue:list(),
+ amqqueue:get_type(Q) == quorum,
+ lists:member(Node, amqqueue:get_quorum_nodes(Q))].
+
+
%%----------------------------------------------------------------------------
dlx_mfa(Q) ->
DLX = init_dlx(args_policy_lookup(<<"dead-letter-exchange">>,