From 42182279b7296f60cd926304bbf3a97ecfdf7466 Mon Sep 17 00:00:00 2001 From: Erik Timan Date: Wed, 18 Jan 2023 10:20:41 +0100 Subject: [PATCH] fix(emqx_management): ensure trace file dir is deleted on zip exception --- apps/emqx_management/src/emqx_mgmt_api_trace.erl | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/apps/emqx_management/src/emqx_mgmt_api_trace.erl b/apps/emqx_management/src/emqx_mgmt_api_trace.erl index 5ad04a68c..cc4a905a4 100644 --- a/apps/emqx_management/src/emqx_mgmt_api_trace.erl +++ b/apps/emqx_management/src/emqx_mgmt_api_trace.erl @@ -471,10 +471,15 @@ download_trace_log(get, #{bindings := #{name := Name}, query_string := Query}) - %% Write files to ZipDir and create an in-memory zip file Zips = group_trace_file(ZipDir, TraceLog, TraceFiles), ZipName = binary_to_list(Name) ++ ".zip", - {ok, {ZipName, Binary}} = zip:zip(ZipName, Zips, [memory, {cwd, ZipDir}]), - %% emqx_trace:delete_files_after_send(ZipFileName, Zips), - %% TODO use file replace file_binary.(delete file after send is not ready now). - ok = file:del_dir_r(ZipDir), + Binary = + try + {ok, {ZipName, Bin}} = zip:zip(ZipName, Zips, [memory, {cwd, ZipDir}]), + Bin + after + %% emqx_trace:delete_files_after_send(ZipFileName, Zips), + %% TODO use file replace file_binary.(delete file after send is not ready now). + ok = file:del_dir_r(ZipDir) + end, ?tp(trace_api_download_trace_log, #{ files => Zips, name => Name,