summaryrefslogtreecommitdiff
path: root/src/rabbit.erl
diff options
context:
space:
mode:
authorGerhard Lazu <gerhard@lazu.co.uk>2017-05-10 15:29:25 +0100
committerGerhard Lazu <gerhard@lazu.co.uk>2017-05-10 15:43:56 +0100
commit6719f476a76a49e9c25a2fcfc73528a6eecc9ef2 (patch)
tree740272c3d4c366ed02ee3198d841c39dd6794dec /src/rabbit.erl
parentb25935c1ac0ccbc178e4df909c3945b040a8f7db (diff)
parentde2843dc2aa0d6a047e5aa2ca2dd6b9bc3a01900 (diff)
downloadrabbitmq-server-git-6719f476a76a49e9c25a2fcfc73528a6eecc9ef2.tar.gz
Merge remote-tracking branch 'origin/stable'
Diffstat (limited to 'src/rabbit.erl')
-rw-r--r--src/rabbit.erl35
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() ->