From 0738444da9ed1491db0e5f582aae8c2ae65b1b38 Mon Sep 17 00:00:00 2001 From: Zhongwen Deng Date: Tue, 14 Mar 2023 15:39:50 +0800 Subject: [PATCH 1/2] fix: stop port apps when emqx_machine_terminator shutdown --- apps/emqx_machine/src/emqx_machine_boot.erl | 15 +++++++++++++++ apps/emqx_machine/src/emqx_machine_terminator.erl | 3 ++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/apps/emqx_machine/src/emqx_machine_boot.erl b/apps/emqx_machine/src/emqx_machine_boot.erl index 4b3e5ea7d..82b3d602f 100644 --- a/apps/emqx_machine/src/emqx_machine_boot.erl +++ b/apps/emqx_machine/src/emqx_machine_boot.erl @@ -21,6 +21,7 @@ -export([stop_apps/0, ensure_apps_started/0]). -export([sorted_reboot_apps/0]). -export([start_autocluster/0]). +-export([stop_port_apps/0]). -dialyzer({no_match, [basic_reboot_apps/0]}). @@ -61,6 +62,20 @@ stop_apps() -> _ = emqx_alarm_handler:unload(), lists:foreach(fun stop_one_app/1, lists:reverse(sorted_reboot_apps())). +%% Those port apps are terminated after the main apps +%% Don't need to stop when reboot. +stop_port_apps() -> + Loaded = application:loaded_applications(), + lists:foreach( + fun(App) -> + case lists:keymember(App, 1, Loaded) of + true -> stop_one_app(App); + false -> ok + end + end, + [os_mon, jq] + ). + stop_one_app(App) -> ?SLOG(debug, #{msg => "stopping_app", app => App}), try diff --git a/apps/emqx_machine/src/emqx_machine_terminator.erl b/apps/emqx_machine/src/emqx_machine_terminator.erl index 314b8c705..7120cc19b 100644 --- a/apps/emqx_machine/src/emqx_machine_terminator.erl +++ b/apps/emqx_machine/src/emqx_machine_terminator.erl @@ -87,7 +87,8 @@ handle_cast(_Cast, State) -> handle_call(?DO_IT, _From, State) -> try - emqx_machine_boot:stop_apps() + emqx_machine_boot:stop_apps(), + emqx_machine_boot:stop_port_apps() catch C:E:St -> Apps = [element(1, A) || A <- application:which_applications()], From 4b46c35e74fa7f8ab2c093a9095b7e4f5891278f Mon Sep 17 00:00:00 2001 From: Zhongwen Deng Date: Tue, 14 Mar 2023 15:53:32 +0800 Subject: [PATCH 2/2] chore: add changelog --- changes/ce/fix-10132.en.md | 1 + changes/ce/fix-10132.zh.md | 1 + 2 files changed, 2 insertions(+) create mode 100644 changes/ce/fix-10132.en.md create mode 100644 changes/ce/fix-10132.zh.md diff --git a/changes/ce/fix-10132.en.md b/changes/ce/fix-10132.en.md new file mode 100644 index 000000000..ceb617d11 --- /dev/null +++ b/changes/ce/fix-10132.en.md @@ -0,0 +1 @@ +Fix `systemctl stop emqx` command not stopping jq, os_mon application properly, generating some error logs. diff --git a/changes/ce/fix-10132.zh.md b/changes/ce/fix-10132.zh.md new file mode 100644 index 000000000..36811e1bf --- /dev/null +++ b/changes/ce/fix-10132.zh.md @@ -0,0 +1 @@ +修复`systemctl stop emqx` 命令没有正常停止 jq, os_mon 组件,产生一些错误日志。