diff --git a/apps/emqx_dashboard_sso/src/emqx_dashboard_sso_manager.erl b/apps/emqx_dashboard_sso/src/emqx_dashboard_sso_manager.erl index ebcfd84cf..ee22a48e8 100644 --- a/apps/emqx_dashboard_sso/src/emqx_dashboard_sso_manager.erl +++ b/apps/emqx_dashboard_sso/src/emqx_dashboard_sso_manager.erl @@ -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} -> diff --git a/apps/emqx_resource/src/emqx_resource_manager.erl b/apps/emqx_resource/src/emqx_resource_manager.erl index d6a932517..288083172 100644 --- a/apps/emqx_resource/src/emqx_resource_manager.erl +++ b/apps/emqx_resource/src/emqx_resource_manager.erl @@ -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.