diff --git a/src/ejabberd_redis_sup.erl b/src/ejabberd_redis_sup.erl index 8605d24e5..7bba0882a 100644 --- a/src/ejabberd_redis_sup.erl +++ b/src/ejabberd_redis_sup.erl @@ -45,7 +45,10 @@ start() -> permanent, infinity, supervisor, [?MODULE]}, case supervisor:start_child(ejabberd_db_sup, Spec) of {ok, _} -> ok; - {error, {already_started, _}} -> ok; + {error, {already_started, Pid}} -> + %% Wait for the supervisor to fully start + _ = supervisor:count_children(Pid), + ok; {error, Why} = Err -> ?ERROR_MSG("Failed to start ~ts: ~p", [?MODULE, Why]), Err diff --git a/src/ejabberd_sql_sup.erl b/src/ejabberd_sql_sup.erl index 731612e53..074080f5f 100644 --- a/src/ejabberd_sql_sup.erl +++ b/src/ejabberd_sql_sup.erl @@ -52,7 +52,10 @@ start(Host) -> modules => [?MODULE]}, case supervisor:start_child(ejabberd_db_sup, Spec) of {ok, _} -> ok; - {error, {already_started, _}} -> ok; + {error, {already_started, Pid}} -> + %% Wait for the supervisor to fully start + _ = supervisor:count_children(Pid), + ok; {error, Why} = Err -> ?ERROR_MSG("Failed to start ~ts: ~p", [?MODULE, Why]), Err