From c26a18e9497cab80ad637d5ae28da9ef73353175 Mon Sep 17 00:00:00 2001 From: zhongwencool Date: Wed, 20 Sep 2023 18:02:42 +0800 Subject: [PATCH 1/2] fix: always return ok when remove local resource --- apps/emqx_resource/src/emqx_resource.erl | 19 +++++++++++++++++-- .../test/emqx_resource_SUITE.erl | 2 +- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/apps/emqx_resource/src/emqx_resource.erl b/apps/emqx_resource/src/emqx_resource.erl index d41364315..a2a92662e 100644 --- a/apps/emqx_resource/src/emqx_resource.erl +++ b/apps/emqx_resource/src/emqx_resource.erl @@ -19,6 +19,7 @@ -include("emqx_resource.hrl"). -include("emqx_resource_utils.hrl"). -include("emqx_resource_errors.hrl"). +-include_lib("emqx/include/logger.hrl"). %% APIs for resource types @@ -257,9 +258,23 @@ recreate_local(ResId, ResourceType, Config, Opts) -> remove(ResId) -> emqx_resource_proto_v1:remove(ResId). --spec remove_local(resource_id()) -> ok | {error, Reason :: term()}. +-spec remove_local(resource_id()) -> ok. remove_local(ResId) -> - emqx_resource_manager:remove(ResId). + case emqx_resource_manager:remove(ResId) of + ok -> + ok; + {error, not_found} -> + ok; + Error -> + %% Only log, the ResId worker is always remove in manager's remove action. + ?SLOG(warning, #{ + msg => "remove_local_resource_failed", + error => Error, + resource_id => ResId + }), + ok + end, + ok. -spec reset_metrics_local(resource_id()) -> ok. reset_metrics_local(ResId) -> diff --git a/apps/emqx_resource/test/emqx_resource_SUITE.erl b/apps/emqx_resource/test/emqx_resource_SUITE.erl index ef9ee29c7..6f1fd66b3 100644 --- a/apps/emqx_resource/test/emqx_resource_SUITE.erl +++ b/apps/emqx_resource/test/emqx_resource_SUITE.erl @@ -164,7 +164,7 @@ t_create_remove_local(_) -> ), ?assertEqual(ok, emqx_resource:remove_local(?ID)), - ?assertMatch({error, _}, emqx_resource:remove_local(?ID)), + ?assertMatch(ok, emqx_resource:remove_local(?ID)), ?assertMatch( ?RESOURCE_ERROR(not_found), From dd687d95829a530b2fa170f3650f4bf09817e340 Mon Sep 17 00:00:00 2001 From: zhongwencool Date: Wed, 20 Sep 2023 22:05:21 +0800 Subject: [PATCH 2/2] fix: dialyzer warning --- apps/emqx_bridge/src/emqx_bridge_resource.erl | 6 +----- apps/emqx_resource/src/emqx_resource.erl | 2 +- apps/emqx_resource/test/emqx_resource_SUITE.erl | 2 +- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/apps/emqx_bridge/src/emqx_bridge_resource.erl b/apps/emqx_bridge/src/emqx_bridge_resource.erl index 0756e1382..90c3ad72a 100644 --- a/apps/emqx_bridge/src/emqx_bridge_resource.erl +++ b/apps/emqx_bridge/src/emqx_bridge_resource.erl @@ -298,11 +298,7 @@ remove(Type, Name) -> %% just for perform_bridge_changes/1 remove(Type, Name, _Conf, _Opts) -> ?SLOG(info, #{msg => "remove_bridge", type => Type, name => Name}), - case emqx_resource:remove_local(resource_id(Type, Name)) of - ok -> ok; - {error, not_found} -> ok; - {error, Reason} -> {error, Reason} - end. + emqx_resource:remove_local(resource_id(Type, Name)). %% convert bridge configs to what the connector modules want parse_confs( diff --git a/apps/emqx_resource/src/emqx_resource.erl b/apps/emqx_resource/src/emqx_resource.erl index a2a92662e..ffb03209b 100644 --- a/apps/emqx_resource/src/emqx_resource.erl +++ b/apps/emqx_resource/src/emqx_resource.erl @@ -266,7 +266,7 @@ remove_local(ResId) -> {error, not_found} -> ok; Error -> - %% Only log, the ResId worker is always remove in manager's remove action. + %% Only log, the ResId worker is always removed in manager's remove action. ?SLOG(warning, #{ msg => "remove_local_resource_failed", error => Error, diff --git a/apps/emqx_resource/test/emqx_resource_SUITE.erl b/apps/emqx_resource/test/emqx_resource_SUITE.erl index 6f1fd66b3..9f5f9cf30 100644 --- a/apps/emqx_resource/test/emqx_resource_SUITE.erl +++ b/apps/emqx_resource/test/emqx_resource_SUITE.erl @@ -110,7 +110,7 @@ t_create_remove(_) -> ?assert(is_process_alive(Pid)), ?assertEqual(ok, emqx_resource:remove(?ID)), - ?assertMatch({error, _}, emqx_resource:remove(?ID)), + ?assertMatch(ok, emqx_resource:remove(?ID)), ?assertNot(is_process_alive(Pid)) end,