fix(ds_session): take conservative estimate of `last_alive_at` when bumping
Addresses https://github.com/emqx/emqx/pull/12024#discussion_r1407432154
This commit is contained in:
parent
26e59f9508
commit
f5c4fb5860
|
@ -399,8 +399,13 @@ handle_timeout(_ClientInfo, get_streams, Session) ->
|
|||
ensure_timer(get_streams),
|
||||
{ok, [], Session};
|
||||
handle_timeout(_ClientInfo, bump_last_alive_at, Session0) ->
|
||||
NowMS = now_ms(),
|
||||
Session = session_set_last_alive_at_trans(Session0, NowMS),
|
||||
%% Note: we take a pessimistic approach here and assume that the client will be alive
|
||||
%% 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),
|
||||
{ok, [], Session}.
|
||||
|
||||
|
|
Loading…
Reference in New Issue