From 3d428a2e0ec9128f5a11d597036a4d24a945d46e Mon Sep 17 00:00:00 2001 From: Andrew Mayorov Date: Thu, 25 May 2023 19:18:16 +0300 Subject: [PATCH] fix(ft-s3): rely on asynchronous upload abort So that upload aborts would not block assemblers. This should not affect the expected behavior since S3 API usually allows having concurrent uploads, plus we couldn't really guarantee successful aborts anyway. --- apps/emqx_ft/src/emqx_ft_storage_exporter_s3.erl | 3 ++- apps/emqx_s3/src/emqx_s3_uploader.erl | 9 ++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) 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 %%--------------------------------------------------------------------