7474-export ([validate_policy /1 , merge_policy_value /3 ]).
7575
7676-export ([force_shrink_member_to_current_member /2 ,
77+ force_vhost_queues_shrink_member_to_current_member /1 ,
7778 force_all_queues_shrink_member_to_current_member /0 ]).
7879
7980% % for backwards compatibility
@@ -1973,8 +1974,17 @@ force_shrink_member_to_current_member(VHost, Name) ->
19731974 {error , not_found }
19741975 end .
19751976
1977+ force_vhost_queues_shrink_member_to_current_member (VHost ) when is_binary (VHost ) ->
1978+ rabbit_log :warning (" Disaster recovery procedure: shrinking all quorum queues in vhost ~tp to a single node cluster" , [VHost ]),
1979+ ListQQs = fun () -> rabbit_amqqueue :list (VHost ) end ,
1980+ force_all_queues_shrink_member_to_current_member (ListQQs ).
1981+
19761982force_all_queues_shrink_member_to_current_member () ->
19771983 rabbit_log :warning (" Disaster recovery procedure: shrinking all quorum queues to a single node cluster" ),
1984+ ListQQs = fun () -> rabbit_amqqueue :list () end ,
1985+ force_all_queues_shrink_member_to_current_member (ListQQs ).
1986+
1987+ force_all_queues_shrink_member_to_current_member (ListQQFun ) when is_function (ListQQFun ) ->
19781988 Node = node (),
19791989 _ = [begin
19801990 QName = amqqueue :get_name (Q ),
@@ -1989,7 +1999,7 @@ force_all_queues_shrink_member_to_current_member() ->
19891999 end ,
19902000 _ = rabbit_amqqueue :update (QName , Fun ),
19912001 _ = [ra :force_delete_server (? RA_SYSTEM , {RaName , N }) || N <- OtherNodes ]
1992- end || Q <- rabbit_amqqueue : list (), amqqueue :get_type (Q ) == ? MODULE ],
2002+ end || Q <- ListQQFun (), amqqueue :get_type (Q ) == ? MODULE ],
19932003 rabbit_log :warning (" Disaster recovery procedure: shrinking finished" ),
19942004 ok .
19952005
0 commit comments