diff --git a/apps/emqx_ft/src/emqx_ft_storage_exporter_s3.erl b/apps/emqx_ft/src/emqx_ft_storage_exporter_s3.erl index 0d6086259..4db2255f6 100644 --- a/apps/emqx_ft/src/emqx_ft_storage_exporter_s3.erl +++ b/apps/emqx_ft/src/emqx_ft_storage_exporter_s3.erl @@ -94,7 +94,8 @@ complete(#{pid := Pid} = _ExportSt, _Checksum) -> -spec discard(export_st()) -> ok. discard(#{pid := Pid} = _ExportSt) -> - emqx_s3_uploader:abort(Pid). + % NOTE: will abort upload asynchronously if needed + emqx_s3_uploader:shutdown(Pid). -spec list(options(), query()) -> {ok, page(exportinfo())} | {error, term()}. diff --git a/apps/emqx_s3/src/emqx_s3_uploader.erl b/apps/emqx_s3/src/emqx_s3_uploader.erl index 595612f62..aa547c7cc 100644 --- a/apps/emqx_s3/src/emqx_s3_uploader.erl +++ b/apps/emqx_s3/src/emqx_s3_uploader.erl @@ -18,7 +18,9 @@ complete/2, abort/1, - abort/2 + abort/2, + + shutdown/1 ]). -export([ @@ -87,6 +89,11 @@ abort(Pid) -> abort(Pid, Timeout) -> gen_statem:call(Pid, abort, Timeout). +-spec shutdown(pid()) -> ok. +shutdown(Pid) -> + _ = erlang:exit(Pid, shutdown), + ok. + %%-------------------------------------------------------------------- %% gen_statem callbacks %%--------------------------------------------------------------------