7676-export ([validate_policy /1 , merge_policy_value /3 ]).
7777
7878-export ([force_shrink_member_to_current_member /2 ,
79+ force_vhost_queues_shrink_member_to_current_member /1 ,
7980 force_all_queues_shrink_member_to_current_member /0 ]).
8081
8182-ifdef (TEST ).
@@ -1909,8 +1910,17 @@ force_shrink_member_to_current_member(VHost, Name) ->
19091910 {error , not_found }
19101911 end .
19111912
1913+ force_vhost_queues_shrink_member_to_current_member (VHost ) when is_binary (VHost ) ->
1914+ rabbit_log :warning (" Disaster recovery procedure: shrinking all quorum queues in vhost ~tp to a single node cluster" , [VHost ]),
1915+ ListQQs = fun () -> rabbit_amqqueue :list (VHost ) end ,
1916+ force_all_queues_shrink_member_to_current_member (ListQQs ).
1917+
19121918force_all_queues_shrink_member_to_current_member () ->
19131919 rabbit_log :warning (" Disaster recovery procedure: shrinking all quorum queues to a single node cluster" ),
1920+ ListQQs = fun () -> rabbit_amqqueue :list () end ,
1921+ force_all_queues_shrink_member_to_current_member (ListQQs ).
1922+
1923+ force_all_queues_shrink_member_to_current_member (ListQQFun ) when is_function (ListQQFun ) ->
19141924 Node = node (),
19151925 _ = [begin
19161926 QName = amqqueue :get_name (Q ),
@@ -1925,7 +1935,7 @@ force_all_queues_shrink_member_to_current_member() ->
19251935 end ,
19261936 _ = rabbit_amqqueue :update (QName , Fun ),
19271937 _ = [ra :force_delete_server (? RA_SYSTEM , {RaName , N }) || N <- OtherNodes ]
1928- end || Q <- rabbit_amqqueue : list (), amqqueue :get_type (Q ) == ? MODULE ],
1938+ end || Q <- ListQQFun (), amqqueue :get_type (Q ) == ? MODULE ],
19291939 rabbit_log :warning (" Disaster recovery procedure: shrinking finished" ),
19301940 ok .
19311941
0 commit comments