Skip to content

Commit

Permalink
Merge pull request rabbitmq#11507 from rabbitmq/revert-retry-after-no…
Browse files Browse the repository at this point in the history
…connection-in-feature-flags-subsystem

Revert "rabbit_feature_flags: Retry after erpc:call() fails with `noconnection`"
  • Loading branch information
dumbbell authored Jun 20, 2024
2 parents 71d882e + d0c13b4 commit 8f1219a
Showing 1 changed file with 0 additions and 23 deletions.
23 changes: 0 additions & 23 deletions deps/rabbit/src/rabbit_ff_controller.erl
Original file line number Diff line number Diff line change
Expand Up @@ -1390,32 +1390,9 @@ this_node_first(Nodes) ->
Ret :: term() | {error, term()}.

rpc_call(Node, Module, Function, Args, Timeout) ->
SleepBetweenRetries = 5000,
T0 = erlang:monotonic_time(),
try
erpc:call(Node, Module, Function, Args, Timeout)
catch
%% In case of `noconnection' with `Timeout'=infinity, we don't retry
%% at all. This is because the infinity "timeout" is used to run
%% callbacks on remote node and they can last an indefinite amount of
%% time, for instance, if there is a lot of data to migrate.
error:{erpc, noconnection} = Reason
when is_integer(Timeout) andalso Timeout > SleepBetweenRetries ->
?LOG_WARNING(
"Feature flags: no connection to node `~ts`; "
"retrying in ~b milliseconds",
[Node, SleepBetweenRetries],
#{domain => ?RMQLOG_DOMAIN_FEAT_FLAGS}),
timer:sleep(SleepBetweenRetries),
T1 = erlang:monotonic_time(),
TDiff = erlang:convert_time_unit(T1 - T0, native, millisecond),
Remaining = Timeout - TDiff,
Timeout1 = erlang:max(Remaining, 0),
case Timeout1 of
0 -> {error, Reason};
_ -> rpc_call(Node, Module, Function, Args, Timeout1)
end;

Class:Reason:Stacktrace ->
Message0 = erl_error:format_exception(Class, Reason, Stacktrace),
Message1 = lists:flatten(Message0),
Expand Down

0 comments on commit 8f1219a

Please sign in to comment.