@@ -1376,6 +1376,7 @@ delete_member(Q, Node) when ?amqqueue_is_quorum(Q) ->
1376
1376
_ = rabbit_amqqueue :update (QName , Fun ),
1377
1377
case ra :force_delete_server (? RA_SYSTEM , ServerId ) of
1378
1378
ok ->
1379
+ rabbit_log :info (" Deleted a replica of quorum ~ts on node ~ts " , [rabbit_misc :rs (QName ), Node ]),
1379
1380
ok ;
1380
1381
{error , {badrpc , nodedown }} ->
1381
1382
ok ;
@@ -1957,13 +1958,15 @@ force_shrink_member_to_current_member(VHost, Name) ->
1957
1958
case rabbit_amqqueue :lookup (QName ) of
1958
1959
{ok , Q } when ? is_amqqueue (Q ) ->
1959
1960
{RaName , _ } = amqqueue :get_pid (Q ),
1961
+ OtherNodes = lists :delete (Node , get_nodes (Q )),
1960
1962
ok = ra_server_proc :force_shrink_members_to_current_member ({RaName , Node }),
1961
1963
Fun = fun (Q0 ) ->
1962
1964
TS0 = amqqueue :get_type_state (Q0 ),
1963
1965
TS = TS0 #{nodes => [Node ]},
1964
1966
amqqueue :set_type_state (Q , TS )
1965
1967
end ,
1966
1968
_ = rabbit_amqqueue :update (QName , Fun ),
1969
+ _ = [ra :force_delete_server (? RA_SYSTEM , {RaName , N }) || N <- OtherNodes ],
1967
1970
rabbit_log :warning (" Disaster recovery procedure: shrinking finished" );
1968
1971
_ ->
1969
1972
rabbit_log :warning (" Disaster recovery procedure: shrinking failed, queue ~p not found at vhost ~p " , [Name , VHost ]),
@@ -1976,14 +1979,16 @@ force_all_queues_shrink_member_to_current_member() ->
1976
1979
_ = [begin
1977
1980
QName = amqqueue :get_name (Q ),
1978
1981
{RaName , _ } = amqqueue :get_pid (Q ),
1982
+ OtherNodes = lists :delete (Node , get_nodes (Q )),
1979
1983
rabbit_log :warning (" Disaster recovery procedure: shrinking queue ~p " , [QName ]),
1980
1984
ok = ra_server_proc :force_shrink_members_to_current_member ({RaName , Node }),
1981
1985
Fun = fun (QQ ) ->
1982
1986
TS0 = amqqueue :get_type_state (QQ ),
1983
1987
TS = TS0 #{nodes => [Node ]},
1984
1988
amqqueue :set_type_state (QQ , TS )
1985
1989
end ,
1986
- _ = rabbit_amqqueue :update (QName , Fun )
1990
+ _ = rabbit_amqqueue :update (QName , Fun ),
1991
+ _ = [ra :force_delete_server (? RA_SYSTEM , {RaName , N }) || N <- OtherNodes ]
1987
1992
end || Q <- rabbit_amqqueue :list (), amqqueue :get_type (Q ) == ? MODULE ],
1988
1993
rabbit_log :warning (" Disaster recovery procedure: shrinking finished" ),
1989
1994
ok .
0 commit comments