diff --git a/apps/emqx_resource/src/emqx_resource.erl b/apps/emqx_resource/src/emqx_resource.erl index bbafcf43d..99d663b09 100644 --- a/apps/emqx_resource/src/emqx_resource.erl +++ b/apps/emqx_resource/src/emqx_resource.erl @@ -265,7 +265,7 @@ call_start(InstId, Mod, Config) -> ?SAFE_CALL(Mod:on_start(InstId, Config)). -spec call_health_check(instance_id(), module(), resource_state()) -> - {ok, resource_state()} | {error, Reason:: term(), resource_state()}. + {ok, resource_state()} | {error, Reason:: term()} | {error, Reason:: term(), resource_state()}. call_health_check(InstId, Mod, ResourceState) -> ?SAFE_CALL(Mod:on_health_check(InstId, ResourceState)). diff --git a/apps/emqx_resource/src/emqx_resource_instance.erl b/apps/emqx_resource/src/emqx_resource_instance.erl index 059ceefdf..41852cafb 100644 --- a/apps/emqx_resource/src/emqx_resource_instance.erl +++ b/apps/emqx_resource/src/emqx_resource_instance.erl @@ -295,6 +295,11 @@ do_health_check(Group, #{id := InstId, mod := Mod, state := ResourceState0} = Da ets:insert(emqx_resource_instance, {InstId, Group, Data#{status => connected, state => ResourceState1}}), ok; + {error, Reason} -> + logger:error("health check for ~p failed: ~p", [InstId, Reason]), + ets:insert(emqx_resource_instance, + {InstId, Group, Data#{status => connecting}}), + {error, Reason}; {error, Reason, ResourceState1} -> logger:error("health check for ~p failed: ~p", [InstId, Reason]), ets:insert(emqx_resource_instance,