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 49321086b..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 @@ -145,6 +148,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 +199,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.