diff options
| author | Gerhard Lazu <gerhard@lazu.co.uk> | 2017-05-10 15:29:25 +0100 |
|---|---|---|
| committer | Gerhard Lazu <gerhard@lazu.co.uk> | 2017-05-10 15:43:56 +0100 |
| commit | 6719f476a76a49e9c25a2fcfc73528a6eecc9ef2 (patch) | |
| tree | 740272c3d4c366ed02ee3198d841c39dd6794dec /src/rabbit.erl | |
| parent | b25935c1ac0ccbc178e4df909c3945b040a8f7db (diff) | |
| parent | de2843dc2aa0d6a047e5aa2ca2dd6b9bc3a01900 (diff) | |
| download | rabbitmq-server-git-6719f476a76a49e9c25a2fcfc73528a6eecc9ef2.tar.gz | |
Merge remote-tracking branch 'origin/stable'
Diffstat (limited to 'src/rabbit.erl')
| -rw-r--r-- | src/rabbit.erl | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/src/rabbit.erl b/src/rabbit.erl index 8e6c9ead26..bc71994169 100644 --- a/src/rabbit.erl +++ b/src/rabbit.erl @@ -471,7 +471,7 @@ stop() -> undefined -> ok; _ -> rabbit_log:info("RabbitMQ hasn't finished starting yet. Waiting for startup to finish before stopping..."), - await_startup(true) + wait_to_finish_booting() end, rabbit_log:info("RabbitMQ is asked to stop...~n", []), Apps = ?APPS ++ rabbit_plugins:active(), @@ -641,19 +641,32 @@ handle_app_error(Term) -> end. await_startup() -> - await_startup(false). + case is_booting() of + true -> wait_to_finish_booting(); + false -> + case is_running() of + true -> ok; + false -> wait_to_start_booting(), + wait_to_finish_booting() + end + end. + +is_booting() -> + whereis(rabbit_boot) /= undefined. + +wait_to_start_booting() -> + case whereis(rabbit_boot) of + undefined -> timer:sleep(100), + wait_to_start_booting(); + _ -> ok + end. -await_startup(HaveSeenRabbitBoot) -> - %% We don't take absence of rabbit_boot as evidence we've started, - %% since there's a small window before it is registered. +wait_to_finish_booting() -> case whereis(rabbit_boot) of - undefined -> case HaveSeenRabbitBoot orelse is_running() of - true -> ok; - false -> timer:sleep(100), - await_startup(false) - end; + undefined -> true = is_running(), + ok; _ -> timer:sleep(100), - await_startup(true) + wait_to_finish_booting() end. status() -> |
