@@ -1304,7 +1304,10 @@ get_sys_status(Proc) ->
13041304
13051305 end .
13061306
1307- add_member (VHost , Name , Node , Membership , Timeout ) when is_binary (VHost ) ->
1307+ add_member (VHost , Name , Node , Membership , Timeout )
1308+ when is_binary (VHost ) andalso
1309+ is_binary (Name ) andalso
1310+ is_atom (Node ) ->
13081311 QName = # resource {virtual_host = VHost , name = Name , kind = queue },
13091312 rabbit_log :debug (" Asked to add a replica for queue ~ts on node ~ts " ,
13101313 [rabbit_misc :rs (QName ), Node ]),
@@ -1324,7 +1327,7 @@ add_member(VHost, Name, Node, Membership, Timeout) when is_binary(VHost) ->
13241327 [rabbit_misc :rs (QName ), Node ]),
13251328 ok ;
13261329 false ->
1327- add_member (Q , Node , Membership , Timeout )
1330+ do_add_member (Q , Node , Membership , Timeout )
13281331 end
13291332 end ;
13301333 {ok , _Q } ->
@@ -1333,16 +1336,21 @@ add_member(VHost, Name, Node, Membership, Timeout) when is_binary(VHost) ->
13331336 E
13341337 end .
13351338
1339+ add_member (VHost , Name , Node , Timeout ) when is_binary (VHost ) ->
1340+ % % NOTE needed to pass mixed cluster tests.
1341+ add_member (VHost , Name , Node , promotable , Timeout ).
1342+
13361343add_member (Q , Node ) ->
1337- add_member (Q , Node , promotable ).
1344+ do_add_member (Q , Node , promotable , ? MEMBER_CHANGE_TIMEOUT ).
13381345
13391346add_member (Q , Node , Membership ) ->
1340- add_member (Q , Node , Membership , ? MEMBER_CHANGE_TIMEOUT ).
1347+ do_add_member (Q , Node , Membership , ? MEMBER_CHANGE_TIMEOUT ).
13411348
1342- add_member (VHost , Name , Node , Timeout ) when is_binary (VHost ) ->
1343- % % NOTE needed to pass mixed cluster tests.
1344- add_member (VHost , Name , Node , promotable , Timeout );
1345- add_member (Q , Node , Membership , Timeout ) when ? amqqueue_is_quorum (Q ) ->
1349+
1350+ do_add_member (Q , Node , Membership , Timeout )
1351+ when ? is_amqqueue (Q ) andalso
1352+ ? amqqueue_is_quorum (Q ) andalso
1353+ is_atom (Node ) ->
13461354 {RaName , _ } = amqqueue :get_pid (Q ),
13471355 QName = amqqueue :get_name (Q ),
13481356 % % TODO parallel calls might crash this, or add a duplicate in quorum_nodes
@@ -1354,12 +1362,12 @@ add_member(Q, Node, Membership, Timeout) when ?amqqueue_is_quorum(Q) ->
13541362 case ra :start_server (? RA_SYSTEM , Conf ) of
13551363 ok ->
13561364 ServerIdSpec =
1357- case rabbit_feature_flags :is_enabled (quorum_queue_non_voters ) of
1358- true ->
1359- maps :with ([id , uid , membership ], Conf );
1360- false ->
1361- maps :get (id , Conf )
1362- end ,
1365+ case rabbit_feature_flags :is_enabled (quorum_queue_non_voters ) of
1366+ true ->
1367+ maps :with ([id , uid , membership ], Conf );
1368+ false ->
1369+ maps :get (id , Conf )
1370+ end ,
13631371 case ra :add_member (Members , ServerIdSpec , Timeout ) of
13641372 {ok , {RaIndex , RaTerm }, Leader } ->
13651373 Fun = fun (Q1 ) ->
0 commit comments