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),