fix(cluster-call): MinDelay clumiscalculation, don't sleep in first check.

This commit is contained in:
zhongwencool 2021-09-17 15:23:25 +08:00
parent ab39284ece
commit 6ed0bdc665
1 changed files with 3 additions and 3 deletions

View File

@ -101,9 +101,9 @@ multicall(M, F, A, RequireNum, Timeout) when RequireNum =:= all orelse RequireNu
end end
end, end,
End = erlang:monotonic_time(), End = erlang:monotonic_time(),
MinDelay = erlang:convert_time_unit(Begin - End, native, millisecond) + 50, MinDelay = erlang:convert_time_unit(End - Begin, native, millisecond) + 50,
%% Fail after 3 attempts. %% Fail after 3 attempts.
RetryTimeout = 3 * max(MinDelay, get_retry_ms()), RetryTimeout = ceil(3 * max(MinDelay, get_retry_ms())),
OkOrFailed = OkOrFailed =
case InitRes of case InitRes of
{ok, _TnxId, _} when RequireNum =:= 1 -> {ok, _TnxId, _} when RequireNum =:= 1 ->
@ -334,9 +334,9 @@ log_and_alarm(false, Res, Meta) ->
emqx_alarm:activate(cluster_rpc_apply_failed, NotOkMeta#{result => ?TO_BIN(Res)}). emqx_alarm:activate(cluster_rpc_apply_failed, NotOkMeta#{result => ?TO_BIN(Res)}).
wait_for_all_nodes_commit(TnxId, Delay, Remain) -> wait_for_all_nodes_commit(TnxId, Delay, Remain) ->
ok = timer:sleep(Delay),
case lagging_node(TnxId) of case lagging_node(TnxId) of
[_ | _] when Remain > 0 -> [_ | _] when Remain > 0 ->
ok = timer:sleep(Delay),
wait_for_all_nodes_commit(TnxId, Delay, Remain - Delay); wait_for_all_nodes_commit(TnxId, Delay, Remain - Delay);
[] -> ok; [] -> ok;
Nodes -> {error, Nodes} Nodes -> {error, Nodes}