From cce474ce9876891c4318c1689ea645dba15879f8 Mon Sep 17 00:00:00 2001 From: Andrew Mayorov Date: Fri, 1 Dec 2023 11:06:41 +0300 Subject: [PATCH 1/2] fix(session): include session term in stacktrace --- apps/emqx/src/emqx_session.erl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/emqx/src/emqx_session.erl b/apps/emqx/src/emqx_session.erl index 108e8ec09..6059fc590 100644 --- a/apps/emqx/src/emqx_session.erl +++ b/apps/emqx/src/emqx_session.erl @@ -611,8 +611,8 @@ maybe_mock_impl_mod({Mock, _State}) when is_atom(Mock) -> Mock. -else. -spec maybe_mock_impl_mod(_Session) -> no_return(). -maybe_mock_impl_mod(_) -> - error(noimpl). +maybe_mock_impl_mod(Session) -> + error(noimpl, [Session]). -endif. -spec choose_impl_mod(conninfo()) -> module(). From 6b17920fea38932442c07d183b00f68f8da8091e Mon Sep 17 00:00:00 2001 From: Andrew Mayorov Date: Fri, 1 Dec 2023 11:11:02 +0300 Subject: [PATCH 2/2] fix(channel): expect there's no session yet on disconnect --- apps/emqx/src/emqx_channel.erl | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/apps/emqx/src/emqx_channel.erl b/apps/emqx/src/emqx_channel.erl index 816ab7b2b..0d0e57c7e 100644 --- a/apps/emqx/src/emqx_channel.erl +++ b/apps/emqx/src/emqx_channel.erl @@ -1211,7 +1211,7 @@ handle_info( ) when ConnState =:= connected orelse ConnState =:= reauthenticating -> - {Intent, Session1} = emqx_session:disconnect(ClientInfo, ConnInfo, Session), + {Intent, Session1} = session_disconnect(ClientInfo, ConnInfo, Session), Channel1 = ensure_disconnected(Reason, maybe_publish_will_msg(Channel)), Channel2 = Channel1#channel{session = Session1}, case maybe_shutdown(Reason, Intent, Channel2) of @@ -2191,6 +2191,11 @@ ensure_disconnected( emqx_cm:mark_channel_disconnected(ChanPid), Channel#channel{conninfo = NConnInfo, conn_state = disconnected}. +session_disconnect(ClientInfo, ConnInfo, Session) when Session /= undefined -> + emqx_session:disconnect(ClientInfo, ConnInfo, Session); +session_disconnect(_ClientInfo, _ConnInfo, undefined) -> + {shutdown, undefined}. + %%-------------------------------------------------------------------- %% Maybe Publish will msg