Skip to content

Commit 20c6c91

Browse files
committed
rabbit_peer_discovery: Fix non-tail-recursive query_node_props2()
This impacts what is reported by the catch.
1 parent fd9f04e commit 20c6c91

File tree

1 file changed

+28
-24
lines changed

1 file changed

+28
-24
lines changed

deps/rabbit/src/rabbit_peer_discovery.erl

Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -621,30 +621,34 @@ query_node_props1([], [], NodesAndProps) ->
621621
query_node_props2(NodesAndProps1, []).
622622

623623
query_node_props2([{Node, Members} | Rest], NodesAndProps) ->
624-
try
625-
erpc_call(
626-
Node, logger, debug,
627-
["Peer discovery: temporary hidden node '~ts' queries properties "
628-
"from node '~ts'", [node(), Node]]),
629-
StartTime = get_node_start_time(Node, microsecond),
630-
IsReady = is_node_db_ready(Node),
631-
NodeAndProps = {Node, Members, StartTime, IsReady},
632-
NodesAndProps1 = [NodeAndProps | NodesAndProps],
633-
query_node_props2(Rest, NodesAndProps1)
634-
catch
635-
_:Error:_ ->
636-
%% If one of the erpc calls we use to get the start time fails,
637-
%% there is something wrong with the remote node because it
638-
%% doesn't depend on RabbitMQ. We exclude it from the discovered
639-
%% nodes.
640-
?LOG_DEBUG(
641-
"Peer discovery: failed to query start time of node '~ts': "
642-
"~0tp~n"
643-
"Peer discovery: node '~ts' excluded from the discovered nodes",
644-
[Node, Error, Node],
645-
#{domain => ?RMQLOG_DOMAIN_PEER_DISC}),
646-
query_node_props2(Rest, NodesAndProps)
647-
end;
624+
NodesAndProps2 = try
625+
erpc_call(
626+
Node, logger, debug,
627+
["Peer discovery: temporary hidden node '~ts' "
628+
"queries properties from node '~ts'",
629+
[node(), Node]]),
630+
StartTime = get_node_start_time(Node, microsecond),
631+
IsReady = is_node_db_ready(Node),
632+
NodeAndProps = {Node, Members, StartTime, IsReady},
633+
NodesAndProps1 = [NodeAndProps | NodesAndProps],
634+
NodesAndProps1
635+
catch
636+
_:Error:_ ->
637+
%% If one of the erpc calls we use to get the
638+
%% start time fails, there is something wrong with
639+
%% the remote node because it doesn't depend on
640+
%% RabbitMQ. We exclude it from the discovered
641+
%% nodes.
642+
?LOG_DEBUG(
643+
"Peer discovery: failed to query start time "
644+
"+ DB readyness of node '~ts': ~0tp~n"
645+
"Peer discovery: node '~ts' excluded from the "
646+
"discovered nodes",
647+
[Node, Error, Node],
648+
#{domain => ?RMQLOG_DOMAIN_PEER_DISC}),
649+
NodesAndProps
650+
end,
651+
query_node_props2(Rest, NodesAndProps2);
648652
query_node_props2([], NodesAndProps) ->
649653
NodesAndProps1 = lists:reverse(NodesAndProps),
650654
?assertEqual([], nodes()),

0 commit comments

Comments
 (0)