diff options
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">>, |
