Merge pull request #12041 from thalesmg/ds-estimate-last-alive-m-20231128
fix(ds_session): take conservative estimate of `last_alive_at` when bumping
This commit is contained in:
commit
fdafe2493e
|
@ -426,8 +426,13 @@ handle_timeout(_ClientInfo, get_streams, Session) ->
|
||||||
ensure_timer(get_streams),
|
ensure_timer(get_streams),
|
||||||
{ok, [], Session};
|
{ok, [], Session};
|
||||||
handle_timeout(_ClientInfo, bump_last_alive_at, Session0) ->
|
handle_timeout(_ClientInfo, bump_last_alive_at, Session0) ->
|
||||||
NowMS = now_ms(),
|
%% Note: we take a pessimistic approach here and assume that the client will be alive
|
||||||
Session = session_set_last_alive_at_trans(Session0, NowMS),
|
%% until the next bump timeout. With this, we avoid garbage collecting this session
|
||||||
|
%% too early in case the session/connection/node crashes earlier without having time
|
||||||
|
%% to commit the time.
|
||||||
|
BumpInterval = emqx_config:get([session_persistence, last_alive_update_interval]),
|
||||||
|
EstimatedLastAliveAt = now_ms() + BumpInterval,
|
||||||
|
Session = session_set_last_alive_at_trans(Session0, EstimatedLastAliveAt),
|
||||||
ensure_timer(bump_last_alive_at),
|
ensure_timer(bump_last_alive_at),
|
||||||
{ok, [], Session}.
|
{ok, [], Session}.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue