diff --git a/apps/emqx_bridge/src/emqx_bridge_resource.erl b/apps/emqx_bridge/src/emqx_bridge_resource.erl index a6c190838..e4bc26924 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 d41364315..ffb03209b 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 removed 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..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, @@ -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),