summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorkjnilsson <knilsson@pivotal.io>2019-02-14 14:46:41 +0000
committerkjnilsson <knilsson@pivotal.io>2019-02-14 14:48:02 +0000
commitb062641019a849f2c80118bf33c0882335cda431 (patch)
treea7f2c1e3868f5c79336bac48c86980b4544489d7 /src
parent375f743238ba75376f038544cb6199bbd637bf5b (diff)
downloadrabbitmq-server-git-b062641019a849f2c80118bf33c0882335cda431.tar.gz
Add shrink_all/1 function
That takes a node and removes all quorum queue members for this node and returns an list of results for each queue. [#162782789]
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">>,