From bd7a84fe3ed18e7e38179771bf1c0aaddb9418ec Mon Sep 17 00:00:00 2001 From: ieQu1 <99872536+ieQu1@users.noreply.github.com> Date: Sun, 26 Nov 2023 19:18:59 +0100 Subject: [PATCH] revert(ds): Don't duplicate the clean start in session_ds --- apps/emqx/src/emqx_persistent_session_ds.erl | 29 ++++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/apps/emqx/src/emqx_persistent_session_ds.erl b/apps/emqx/src/emqx_persistent_session_ds.erl index 3d38d5e60..e0be4eefc 100644 --- a/apps/emqx/src/emqx_persistent_session_ds.erl +++ b/apps/emqx/src/emqx_persistent_session_ds.erl @@ -153,19 +153,13 @@ open(#{clientid := ClientID} = _ClientInfo, ConnInfo) -> %% somehow isolate those idling not-yet-expired sessions into a separate process %% space, and move this call back into `emqx_cm` where it belongs. ok = emqx_cm:discard_session(ClientID), - case maps:get(clean_start, ConnInfo, false) of + case session_open(ClientID, ConnInfo) of + Session0 = #{} -> + ensure_timers(), + ReceiveMaximum = receive_maximum(ConnInfo), + Session = Session0#{receive_maximum => ReceiveMaximum}, + {true, Session, []}; false -> - case session_open(ClientID, ConnInfo) of - Session0 = #{} -> - ensure_timers(), - ReceiveMaximum = receive_maximum(ConnInfo), - Session = Session0#{receive_maximum => ReceiveMaximum}, - {true, Session, []}; - false -> - false - end; - true -> - session_drop(ClientID), false end. @@ -554,7 +548,7 @@ session_open(SessionId, NewConnInfo) -> EI = expiry_interval(ConnInfo), case ?IS_EXPIRED(NowMS, DisconnectedAt, EI) of true -> - %% Should we drop the session now, or leave it to session GC? + session_drop(SessionId), false; false -> %% new connection being established @@ -831,8 +825,13 @@ session_drop_pubranges(DSSessionId) -> %%-------------------------------------------------------------------------------- transaction(Fun) -> - {atomic, Res} = mria:transaction(?DS_MRIA_SHARD, Fun), - Res. + case mnesia:is_transaction() of + true -> + Fun(); + false -> + {atomic, Res} = mria:transaction(?DS_MRIA_SHARD, Fun), + Res + end. ro_transaction(Fun) -> {atomic, Res} = mria:ro_transaction(?DS_MRIA_SHARD, Fun),