2626 normalize /1 ,
2727 append_node_prefix /1 ,
2828 node_prefix /0 ]).
29- -export ([do_query_node_props /2 ]).
29+ -export ([do_query_node_props /1 ]).
3030
3131-ifdef (TEST ).
3232-export ([query_node_props /1 ,
@@ -444,7 +444,12 @@ query_node_props(Nodes) when Nodes =/= [] ->
444444 [Peer ],
445445 #{domain => ? RMQLOG_DOMAIN_PEER_DISC }),
446446 try
447- peer :call (Pid , ? MODULE , do_query_node_props , [Nodes , ThisNode ], 180000 )
447+ NodesAndProps1 = (
448+ do_query_node_props ([ThisNode ]) ++
449+ peer :call (
450+ Pid , ? MODULE , do_query_node_props , [Nodes ], 180000 )),
451+ NodesAndProps2 = sort_nodes_and_props (NodesAndProps1 ),
452+ NodesAndProps2
448453 after
449454 peer :stop (Pid )
450455 end ;
@@ -567,25 +572,23 @@ maybe_add_tls_arguments(VMArgs) ->
567572 end ,
568573 VMArgs2 .
569574
570- do_query_node_props (Nodes , ThisNode ) when Nodes =/= [] ->
575+ do_query_node_props (Nodes ) when Nodes =/= [] ->
571576 % % Make sure all log messages are forwarded from this temporary hidden
572577 % % node to the upstream node, regardless of their level.
573578 _ = logger :set_primary_config (level , debug ),
574579
575580 % % TODO: Replace with `rabbit_nodes:list_members/0' when the oldest
576581 % % supported version has it.
577582 MembersPerNode = erpc :multicall (Nodes , rabbit_nodes , all , []),
578- query_node_props1 (Nodes , MembersPerNode , [], ThisNode ).
583+ query_node_props1 (Nodes , MembersPerNode , []).
579584
580585query_node_props1 (
581- [Node | Nodes ], [{ok , Members } | MembersPerNode ], NodesAndProps ,
582- ThisNode ) ->
586+ [Node | Nodes ], [{ok , Members } | MembersPerNode ], NodesAndProps ) ->
583587 NodeAndProps = {Node , Members },
584588 NodesAndProps1 = [NodeAndProps | NodesAndProps ],
585- query_node_props1 (Nodes , MembersPerNode , NodesAndProps1 , ThisNode );
589+ query_node_props1 (Nodes , MembersPerNode , NodesAndProps1 );
586590query_node_props1 (
587- [Node | Nodes ], [{error , _ } = Error | MembersPerNode ], NodesAndProps ,
588- ThisNode ) ->
591+ [Node | Nodes ], [{error , _ } = Error | MembersPerNode ], NodesAndProps ) ->
589592 % % We consider that an error means the remote node is unreachable or not
590593 % % ready. Therefore, we exclude it from the list of discovered nodes as we
591594 % % won't be able to join it anyway.
@@ -594,22 +597,22 @@ query_node_props1(
594597 " Peer discovery: node '~ts ' excluded from the discovered nodes" ,
595598 [Node , Error , Node ],
596599 #{domain => ? RMQLOG_DOMAIN_PEER_DISC }),
597- query_node_props1 (Nodes , MembersPerNode , NodesAndProps , ThisNode );
598- query_node_props1 ([], [], NodesAndProps , ThisNode ) ->
600+ query_node_props1 (Nodes , MembersPerNode , NodesAndProps );
601+ query_node_props1 ([], [], NodesAndProps ) ->
599602 NodesAndProps1 = lists :reverse (NodesAndProps ),
600- query_node_props2 (NodesAndProps1 , [], ThisNode ).
603+ query_node_props2 (NodesAndProps1 , []).
601604
602- query_node_props2 ([{Node , Members } | Rest ], NodesAndProps , ThisNode ) ->
605+ query_node_props2 ([{Node , Members } | Rest ], NodesAndProps ) ->
603606 try
604607 erpc :call (
605608 Node , logger , debug ,
606609 [" Peer discovery: temporary hidden node '~ts ' queries properties "
607610 " from node '~ts '" , [node (), Node ]]),
608611 StartTime = get_node_start_time (Node , microsecond ),
609- IsReady = is_node_db_ready (Node , ThisNode ),
612+ IsReady = is_node_db_ready (Node ),
610613 NodeAndProps = {Node , Members , StartTime , IsReady },
611614 NodesAndProps1 = [NodeAndProps | NodesAndProps ],
612- query_node_props2 (Rest , NodesAndProps1 , ThisNode )
615+ query_node_props2 (Rest , NodesAndProps1 )
613616 catch
614617 _ :Error :_ ->
615618 % % If one of the erpc calls we use to get the start time fails,
@@ -622,14 +625,13 @@ query_node_props2([{Node, Members} | Rest], NodesAndProps, ThisNode) ->
622625 " Peer discovery: node '~ts ' excluded from the discovered nodes" ,
623626 [Node , Error , Node ],
624627 #{domain => ? RMQLOG_DOMAIN_PEER_DISC }),
625- query_node_props2 (Rest , NodesAndProps , ThisNode )
628+ query_node_props2 (Rest , NodesAndProps )
626629 end ;
627- query_node_props2 ([], NodesAndProps , _ThisNode ) ->
630+ query_node_props2 ([], NodesAndProps ) ->
628631 NodesAndProps1 = lists :reverse (NodesAndProps ),
629- NodesAndProps2 = sort_nodes_and_props (NodesAndProps1 ),
630632 ? assertEqual ([], nodes ()),
631- ? assert (length (NodesAndProps2 ) =< length (nodes (hidden ))),
632- NodesAndProps2 .
633+ ? assert (length (NodesAndProps1 ) =< length (nodes (hidden ))),
634+ NodesAndProps1 .
633635
634636-spec get_node_start_time (Node , Unit ) -> StartTime when
635637 Node :: node (),
@@ -662,21 +664,20 @@ get_node_start_time(Node, Unit) ->
662664 [SystemStartTime , native , Unit ]),
663665 StartTime .
664666
665- -spec is_node_db_ready (Node , ThisNode ) -> IsReady when
667+ -spec is_node_db_ready (Node ) -> IsReady when
666668 Node :: node (),
667- ThisNode :: node (),
668669 IsReady :: boolean () | undefined .
669670% % @doc Returns if the node's DB layer is ready or not.
670671% %
671672% % @private
672673
673- is_node_db_ready (ThisNode , ThisNode ) ->
674+ is_node_db_ready (Node ) when Node =:= node ( ) ->
674675 % % The current node is running peer discovery, thus way before we mark the
675676 % % DB layer as ready. Consider it ready in this case, otherwise if the
676677 % % current node is selected, it will loop forever waiting for itself to be
677678 % % ready.
678679 true ;
679- is_node_db_ready (Node , _ThisNode ) ->
680+ is_node_db_ready (Node ) ->
680681 try
681682 erpc :call (Node , rabbit_db , is_init_finished , [])
682683 catch
0 commit comments