Merge pull request #11700 from lafirest/fix/res_start_timeout

fix(resource): respect the start_timeout
This commit is contained in:
lafirest 2023-09-28 17:32:49 +08:00 committed by GitHub
commit 4c810c3e72
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 3 deletions

View File

@ -50,6 +50,10 @@
start_after_created => false
}).
-define(DEFAULT_START_OPTS, #{
start_timeout => timer:seconds(30)
}).
-record(?MOD_TAB, {
backend :: atom(),
state :: undefined | map(),
@ -301,7 +305,7 @@ lookup(Backend) ->
%% to avoid resource leakage the resource start will never affect the update result,
%% so the resource_id will always be recorded
start_resource_if_enabled(ResourceId, {ok, _} = Result, #{enable := true, backend := Backend}) ->
case emqx_resource:start(ResourceId) of
case emqx_resource:start(ResourceId, ?DEFAULT_START_OPTS) of
ok ->
ok;
{error, Reason} ->

View File

@ -223,9 +223,10 @@ restart(ResId, Opts) when is_binary(ResId) ->
%% @doc Start the resource
-spec start(resource_id(), creation_opts()) -> ok | {error, Reason :: term()}.
start(ResId, Opts) ->
case safe_call(ResId, start, ?T_OPERATION) of
StartTimeout = maps:get(start_timeout, Opts, ?T_OPERATION),
case safe_call(ResId, start, StartTimeout) of
ok ->
wait_for_ready(ResId, maps:get(start_timeout, Opts, 5000));
wait_for_ready(ResId, StartTimeout);
{error, _Reason} = Error ->
Error
end.