@@ -1427,20 +1427,20 @@ do_add_member(Q0, Node, Membership, Timeout)
14271427 % % TODO parallel calls might crash this, or add a duplicate in quorum_nodes
14281428 ServerId = {RaName , Node },
14291429 Members = members (Q0 ),
1430- QTypeState0 = #{nodes := _Nodes } = amqqueue :get_type_state (Q0 ),
1430+ QTypeState0 = #{nodes := Nodes } = amqqueue :get_type_state (Q0 ),
14311431 NewRaUId = ra :new_uid (ra_lib :to_binary (RaName )),
1432- % QTypeState = case Nodes of
1433- % L when is_list(L) ->
1434- % %% Queue is not aware of node to uid mapping, just add the new node
1435- % QTypeState0#{nodes := lists:usort([Node | Nodes])};
1436- % #{Node := _} ->
1437- % %% Queue is aware and uid for targeted node exists, do nothing
1438- % QTypeState0;
1439- % _ ->
1440- % %% Queue is aware but current node has no UId, regen uid
1441- % QTypeState0#{nodes := Nodes#{Node => NewRaUId}}
1442- % end,
1443- Q = amqqueue :set_type_state (Q0 , QTypeState0 ),
1432+ QTypeState = case Nodes of
1433+ L when is_list (L ) ->
1434+ % % Queue is not aware of node to uid mapping, just add the new node
1435+ QTypeState0 #{nodes => lists :usort ([Node | Nodes ])};
1436+ #{Node := _ } ->
1437+ % % Queue is aware and uid for targeted node exists, do nothing
1438+ QTypeState0 ;
1439+ _ ->
1440+ % % Queue is aware but current node has no UId, regen uid
1441+ QTypeState0 #{nodes => Nodes #{Node => NewRaUId }}
1442+ end ,
1443+ Q = amqqueue :set_type_state (Q0 , QTypeState ),
14441444 MachineVersion = erpc_call (Node , rabbit_fifo , version , [], infinity ),
14451445 Conf = make_ra_conf (Q , ServerId , Membership , MachineVersion ),
14461446 case ra :start_server (? RA_SYSTEM , Conf ) of
@@ -1458,7 +1458,7 @@ do_add_member(Q0, Node, Membership, Timeout)
14581458 Q2 = update_type_state (
14591459 Q1 , fun (#{nodes := NodesList } = Ts ) when is_list (NodesList ) ->
14601460 Ts #{nodes => lists :usort ([Node | NodesList ])};
1461- (#{nodes := #{Node := _ } = _NodesMap } = Ts ) ->
1461+ (#{nodes := #{Node := _ }} = Ts ) ->
14621462 Ts ;
14631463 (#{nodes := NodesMap } = Ts ) when is_map (NodesMap ) ->
14641464 Ts #{nodes => maps :put (Node , NewRaUId , NodesMap )}
@@ -2060,7 +2060,7 @@ make_ra_conf(Q, ServerId, TickTimeout,
20602060 [{ClusterName , _ } | _ ] = Members = members (Q ),
20612061 {_ , Node } = ServerId ,
20622062 UId = case amqqueue :get_type_state (Q ) of
2063- #{uids := #{Node := Id }} ->
2063+ #{nodes := #{Node := Id }} ->
20642064 Id ;
20652065 _ ->
20662066 % % Queue was declared on an older version of RabbitMQ
0 commit comments