diff options
| author | kjnilsson <knilsson@pivotal.io> | 2019-02-14 14:46:41 +0000 |
|---|---|---|
| committer | kjnilsson <knilsson@pivotal.io> | 2019-02-14 14:48:02 +0000 |
| commit | b062641019a849f2c80118bf33c0882335cda431 (patch) | |
| tree | a7f2c1e3868f5c79336bac48c86980b4544489d7 /src | |
| parent | 375f743238ba75376f038544cb6199bbd637bf5b (diff) | |
| download | rabbitmq-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.erl | 19 |
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">>, |
