Merge pull request #13080 from zmstone/0521-default-retry_interval-to-infinity

change `mqtt.retry_interval` default value to `infinity`
This commit is contained in:
zmstone 2024-05-31 21:36:38 +02:00 committed by GitHub
commit 12fd1f6a48
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 16 additions and 8 deletions

View File

@ -3630,9 +3630,9 @@ mqtt_general() ->
)}, )},
{"retry_interval", {"retry_interval",
sc( sc(
duration(), hoconsc:union([infinity, duration()]),
#{ #{
default => <<"30s">>, default => infinity,
desc => ?DESC(mqtt_retry_interval) desc => ?DESC(mqtt_retry_interval)
} }
)}, )},

View File

@ -602,9 +602,9 @@ handle_timeout(ClientInfo, expire_awaiting_rel, Session) ->
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------
-spec retry(clientinfo(), session()) -> -spec retry(clientinfo(), session()) ->
{ok, replies(), session()}. {ok, replies(), session()} | {ok, replies(), timeout(), session()}.
retry(ClientInfo, Session = #session{inflight = Inflight}) -> retry(ClientInfo, Session = #session{inflight = Inflight, retry_interval = Interval}) ->
case emqx_inflight:is_empty(Inflight) of case emqx_inflight:is_empty(Inflight) orelse Interval =:= infinity of
true -> true ->
{ok, [], Session}; {ok, [], Session};
false -> false ->

View File

@ -444,7 +444,7 @@ zone_global_defaults() ->
peer_cert_as_username => disabled, peer_cert_as_username => disabled,
response_information => [], response_information => [],
retain_available => true, retain_available => true,
retry_interval => 30000, retry_interval => infinity,
message_expiry_interval => infinity, message_expiry_interval => infinity,
server_keepalive => disabled, server_keepalive => disabled,
session_expiry_interval => 7200000, session_expiry_interval => 7200000,

View File

@ -78,7 +78,7 @@ t_session_init(_) ->
?assertEqual(0, emqx_session_mem:info(inflight_cnt, Session)), ?assertEqual(0, emqx_session_mem:info(inflight_cnt, Session)),
?assertEqual(64, emqx_session_mem:info(inflight_max, Session)), ?assertEqual(64, emqx_session_mem:info(inflight_max, Session)),
?assertEqual(1, emqx_session_mem:info(next_pkt_id, Session)), ?assertEqual(1, emqx_session_mem:info(next_pkt_id, Session)),
?assertEqual(30000, emqx_session_mem:info(retry_interval, Session)), ?assertEqual(infinity, emqx_session_mem:info(retry_interval, Session)),
?assertEqual(0, emqx_mqueue:len(emqx_session_mem:info(mqueue, Session))), ?assertEqual(0, emqx_mqueue:len(emqx_session_mem:info(mqueue, Session))),
?assertEqual(0, emqx_session_mem:info(awaiting_rel_cnt, Session)), ?assertEqual(0, emqx_session_mem:info(awaiting_rel_cnt, Session)),
?assertEqual(100, emqx_session_mem:info(awaiting_rel_max, Session)), ?assertEqual(100, emqx_session_mem:info(awaiting_rel_max, Session)),
@ -95,7 +95,7 @@ t_session_info(_) ->
#{ #{
subscriptions := #{}, subscriptions := #{},
upgrade_qos := false, upgrade_qos := false,
retry_interval := 30000, retry_interval := infinity,
await_rel_timeout := 300000 await_rel_timeout := 300000
}, },
maps:from_list(emqx_session_mem:info(Keys, session())) maps:from_list(emqx_session_mem:info(Keys, session()))

View File

@ -0,0 +1,8 @@
Change `mqtt.retry_interval` config default to `infinity`.
Previously, the default value for `retry_interval` was 30 seconds.
The new default has been changed to 'infinity'. With this update, EMQX will not automatically retry message deliveries by default.
Aligning with MQTT specification standards, in-session message delivery retries are not typically compliant.
We recognize that some users depend on this feature, so the option to configure retries remains available for backward compatibility.