From dd23ee6b15405fde10dde28146bc07961f0f7c4c Mon Sep 17 00:00:00 2001 From: Zaiming Shi Date: Tue, 27 Jul 2021 23:17:35 +0200 Subject: [PATCH] fix(emqx_app): stop listeners in application prep_stop callback Application:stop is call after the root supervisor is stopped, in our case, prior to this fix, emqx_sup is stopped before the listeners (hence the emqx_connection processes). This causes shutdown to emit a lot of error logs e.g. emqx_broker pool is down, but emqx_connection process is still trying to call the pool --- src/emqx_app.erl | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/emqx_app.erl b/src/emqx_app.erl index 8501243a8..8d0ff11a8 100644 --- a/src/emqx_app.erl +++ b/src/emqx_app.erl @@ -19,6 +19,7 @@ -behaviour(application). -export([ start/2 + , prep_stop/1 , stop/1 , get_description/0 , get_release/0 @@ -50,12 +51,14 @@ start(_Type, _Args) -> print_vsn(), {ok, Sup}. --spec(stop(State :: term()) -> term()). -stop(_State) -> +prep_stop(_State) -> ok = emqx_alarm_handler:unload(), emqx_boot:is_enabled(listeners) andalso emqx_listeners:stop(). +stop(_State) -> + ok. + set_backtrace_depth() -> Depth = application:get_env(?APP, backtrace_depth, 16), _ = erlang:system_flag(backtrace_depth, Depth),