Skip to content

Commit 7c346a1

Browse files
committed
Ensure peer discovery node connectivity attempts for configured cluster-nodes
are carried out only once on each configured rabbit.discovery_retry_limit loop. The erpc_call/5 abstracts a maximum 10-second timeout which can further delay connection attempts beyond desired configured limits and intervals for nodes which are remain unreacheable. Only single connection attempts are required at this point, i.e. on the rabbit_peer_discovery:sync_desired_cluster/1 phase.
1 parent 1dd2508 commit 7c346a1

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

deps/rabbit/src/rabbit_peer_discovery.erl

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@
5757
-define(DEFAULT_DISCOVERY_RETRY_COUNT, 30).
5858
-define(DEFAULT_DISCOVERY_RETRY_INTERVAL_MS, 1000).
5959

60+
-define(ERPC_CALL_TIMEOUT, 10_000).
61+
6062
-define(NODENAME_PART_SEPARATOR, "@").
6163

6264
-define(PT_PEER_DISC_BACKEND, {?MODULE, backend}).
@@ -636,7 +638,7 @@ query_node_props2([{Node, Members} | Rest], NodesAndProps, FromNode) ->
636638
Node, logger, debug,
637639
["Peer discovery: temporary hidden node '~ts' "
638640
"queries properties from node '~ts'",
639-
[node(), Node]], FromNode),
641+
[node(), Node]], FromNode, ?ERPC_CALL_TIMEOUT),
640642
StartTime = get_node_start_time(Node, FromNode),
641643
IsReady = is_node_db_ready(Node, FromNode),
642644
NodeAndProps = {Node, Members, StartTime, IsReady},
@@ -726,7 +728,7 @@ is_node_db_ready(Node, FromNode) ->
726728
end.
727729

728730
erpc_call(Node, Mod, Fun, Args, FromNode) ->
729-
erpc_call(Node, Mod, Fun, Args, FromNode, 10000).
731+
erpc_call(Node, Mod, Fun, Args, FromNode, 0).
730732

731733
erpc_call(Node, Mod, Fun, Args, FromNode, Timeout) when Timeout >= 0 ->
732734
try

deps/rabbit/test/peer_discovery_classic_config_SUITE.erl

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,8 @@ init_per_testcase(successful_discovery_with_a_subset_of_nodes_coming_online = Te
138138
{rmq_nodes_count, tl(NodeNames)},
139139
{rmq_nodes_clustered, false}
140140
]),
141-
NodeNamesWithHostname = [rabbit_nodes:make({Name, "localhost"}) || Name <- NodeNames],
141+
NodeNamesWithHostname =
142+
[rabbit_nodes:make({Name, "localhost"}) || Name <- [nonexistent1, nonexistent2 | NodeNames]],
142143
%% reduce retry time since we know one node on the list does
143144
%% not exist and not just unreachable
144145
%% We no longer test non-existing nodes, it just times out
@@ -150,6 +151,8 @@ init_per_testcase(successful_discovery_with_a_subset_of_nodes_coming_online = Te
150151
{forced_feature_flags_on_init, []},
151152
{cluster_nodes, {NodeNamesWithHostname, disc}},
152153
{cluster_formation, [
154+
{discovery_retry_limit, 2},
155+
{discovery_retry_interval, 100},
153156
{internal_lock_retries, 10}
154157
]}
155158
]}),

0 commit comments

Comments
 (0)