From 2740c80b20f9b3d6eaeed43a09f4adec6c7087e7 Mon Sep 17 00:00:00 2001 From: zhongwencool Date: Mon, 8 Aug 2022 11:59:26 +0800 Subject: [PATCH 1/2] fix: check if trace is enabled when the file is not found --- apps/emqx_plugin_libs/src/emqx_trace/emqx_trace_api.erl | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/apps/emqx_plugin_libs/src/emqx_trace/emqx_trace_api.erl b/apps/emqx_plugin_libs/src/emqx_trace/emqx_trace_api.erl index 49321086b..4fbec0091 100644 --- a/apps/emqx_plugin_libs/src/emqx_trace/emqx_trace_api.erl +++ b/apps/emqx_plugin_libs/src/emqx_trace/emqx_trace_api.erl @@ -145,6 +145,8 @@ stream_log_file(#{name := Name}, Params) -> {eof, Size} -> Meta = #{<<"position">> => Size, <<"bytes">> => Bytes}, {ok, #{meta => Meta, items => <<"">>}}; + {error, trace_disabled} -> + {error, io_lib:format("trace_disable_on_~s", [Node0])}; {error, Reason} -> logger:log(error, "read_file_failed ~p", [{Node, Name, Reason, Position, Bytes}]), {error, Reason}; @@ -194,6 +196,11 @@ read_file(Path, Offset, Bytes) -> after file:close(IoDevice) end; + {error, enoent} -> + case emqx_trace:is_enable() of + false -> {error, trace_disabled}; + true -> {error, enoent} + end; {error, Reason} -> {error, Reason} end. From 9b10aefd80929f7d4692a14f902528d6fb6b64e8 Mon Sep 17 00:00:00 2001 From: zhongwencool Date: Mon, 8 Aug 2022 14:12:15 +0800 Subject: [PATCH 2/2] chore: update changelog and appup.src --- CHANGES-4.4.md | 7 +++++++ apps/emqx_plugin_libs/src/emqx_plugin_libs.app.src | 2 +- apps/emqx_plugin_libs/src/emqx_plugin_libs.appup.src | 6 ++++++ apps/emqx_plugin_libs/src/emqx_trace/emqx_trace.erl | 8 +++++++- apps/emqx_plugin_libs/src/emqx_trace/emqx_trace_api.erl | 3 +++ 5 files changed, 24 insertions(+), 2 deletions(-) diff --git a/CHANGES-4.4.md b/CHANGES-4.4.md index b2b331240..4c4f65ba1 100644 --- a/CHANGES-4.4.md +++ b/CHANGES-4.4.md @@ -1,5 +1,12 @@ # EMQX 4.4 Changes +## v4.4.7 + +### Enhancements (synced from v4.3.18) + +### Bug fixes +- Fix: Check if emqx_mod_trace is enabled when the trace file is not found. + ## v4.4.5 ### Enhancements (synced from v4.3.16) diff --git a/apps/emqx_plugin_libs/src/emqx_plugin_libs.app.src b/apps/emqx_plugin_libs/src/emqx_plugin_libs.app.src index 9315f8c53..4b6b041a2 100644 --- a/apps/emqx_plugin_libs/src/emqx_plugin_libs.app.src +++ b/apps/emqx_plugin_libs/src/emqx_plugin_libs.app.src @@ -1,6 +1,6 @@ {application, emqx_plugin_libs, [{description, "EMQ X Plugin utility libs"}, - {vsn, "4.4.4"}, + {vsn, "4.4.5"}, {modules, []}, {applications, [kernel,stdlib]}, {env, []} diff --git a/apps/emqx_plugin_libs/src/emqx_plugin_libs.appup.src b/apps/emqx_plugin_libs/src/emqx_plugin_libs.appup.src index 3d12e8b8a..e4b8e9d1c 100644 --- a/apps/emqx_plugin_libs/src/emqx_plugin_libs.appup.src +++ b/apps/emqx_plugin_libs/src/emqx_plugin_libs.appup.src @@ -2,6 +2,9 @@ %% Unless you know what you are doing, DO NOT edit manually!! {VSN, [ + {"4.4.4", + [{load_module,emqx_trace,brutal_purge,soft_purge,[]}, + {load_module,emqx_trace_api,brutal_purge,soft_purge,[]}]}, {"4.4.3", [{load_module,emqx_trace,brutal_purge,soft_purge,[]}, {load_module,emqx_trace_api,brutal_purge,soft_purge,[]}]}, @@ -21,6 +24,9 @@ {load_module,emqx_slow_subs_api,brutal_purge,soft_purge,[]}]}, {<<".*">>,[]}], [ + {"4.4.4", + [{load_module,emqx_trace,brutal_purge,soft_purge,[]}, + {load_module,emqx_trace_api,brutal_purge,soft_purge,[]}]}, {"4.4.3", [{load_module,emqx_trace,brutal_purge,soft_purge,[]}, {load_module,emqx_trace_api,brutal_purge,soft_purge,[]}]}, diff --git a/apps/emqx_plugin_libs/src/emqx_trace/emqx_trace.erl b/apps/emqx_plugin_libs/src/emqx_trace/emqx_trace.erl index d2c02d06d..1df2e4bf0 100644 --- a/apps/emqx_plugin_libs/src/emqx_trace/emqx_trace.erl +++ b/apps/emqx_plugin_libs/src/emqx_trace/emqx_trace.erl @@ -177,7 +177,13 @@ trace_file(File) -> Node = atom_to_list(node()), case file:read_file(FileName) of {ok, Bin} -> {ok, Node, Bin}; - {error, Reason} -> {error, Node, Reason} + {error, enoent} -> + case emqx_trace:is_enable() of + false -> {error, Node, trace_disabled}; + true -> {error, Node, enoent} + end; + {error, Reason} -> + {error, Node, Reason} end. delete_files_after_send(TraceLog, Zips) -> diff --git a/apps/emqx_plugin_libs/src/emqx_trace/emqx_trace_api.erl b/apps/emqx_plugin_libs/src/emqx_trace/emqx_trace_api.erl index 4fbec0091..7836aacb0 100644 --- a/apps/emqx_plugin_libs/src/emqx_trace/emqx_trace_api.erl +++ b/apps/emqx_plugin_libs/src/emqx_trace/emqx_trace_api.erl @@ -115,6 +115,9 @@ group_trace_file(ZipDir, TraceLog, TraceFiles) -> ok -> [FileName | Acc]; _ -> Acc end; + {error, Node, trace_disabled} -> + ?LOG(warning, "emqx_mod_trace modules is disabled on ~s ~s", [Node, TraceLog]), + Acc; {error, Node, Reason} -> ?LOG(error, "download trace log error:~p", [{Node, TraceLog, Reason}]), Acc