diff --git a/src/emqx_connection.erl b/src/emqx_connection.erl index 88a1ba4d7..28ea67bf8 100644 --- a/src/emqx_connection.erl +++ b/src/emqx_connection.erl @@ -684,9 +684,11 @@ check_oom(State = #state{channel = Channel}) -> Zone = emqx_channel:info(zone, Channel), OomPolicy = emqx_zone:oom_policy(Zone), case ?ENABLED(OomPolicy) andalso emqx_misc:check_oom(OomPolicy) of - Shutdown = {shutdown, _Reason} -> - erlang:send(self(), Shutdown); - _Other -> ok + {shutdown, Reason} -> + %% triggers terminate/2 callback immediately + erlang:exit({shutdown, Reason}); + _Other -> + ok end, State.