summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDaniil Fedotov <dfedotov@pivotal.io>2017-07-27 13:16:41 +0100
committerDaniil Fedotov <dfedotov@pivotal.io>2017-07-31 12:18:00 +0100
commit4f6574b258168b26775e7764ca23de2eee32bc85 (patch)
tree4bf674fdf7f9df72a6913d36577acbd4a6446698 /src
parentc36ad89fe024ec2ae450c6fafd61771a6e6ecc06 (diff)
downloadrabbitmq-server-git-4f6574b258168b26775e7764ca23de2eee32bc85.tar.gz
Check if vhost supervisor is running when starting slaves.
We should not fail a node boot process if cannot create slaves on down vhosts.
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_mirror_queue_misc.erl20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/rabbit_mirror_queue_misc.erl b/src/rabbit_mirror_queue_misc.erl
index 59522da4a9..4f13b5d408 100644
--- a/src/rabbit_mirror_queue_misc.erl
+++ b/src/rabbit_mirror_queue_misc.erl
@@ -228,11 +228,21 @@ add_mirror(QName, MirrorNode, SyncMode) ->
rabbit_misc:with_exit_handler(
rabbit_misc:const(ok),
fun () ->
- SPid = rabbit_amqqueue_sup_sup:start_queue_process(
- MirrorNode, Q, slave),
- log_info(QName, "Adding mirror on node ~p: ~p~n",
- [MirrorNode, SPid]),
- rabbit_mirror_queue_slave:go(SPid, SyncMode)
+ #amqqueue{name = #resource{virtual_host = VHost}} = Q,
+ case rabbit_vhost_sup_sup:get_vhost_sup(VHost, MirrorNode) of
+ {ok, _} ->
+ SPid = rabbit_amqqueue_sup_sup:start_queue_process(
+ MirrorNode, Q, slave),
+ log_info(QName, "Adding mirror on node ~p: ~p~n",
+ [MirrorNode, SPid]),
+ rabbit_mirror_queue_slave:go(SPid, SyncMode);
+ {error, Error} ->
+ log_warning(QName,
+ "Unable to start queue slave on node '~p'. "
+ "Vhost is not started: ~p~n",
+ [MirrorNode, Error]),
+ ok
+ end
end);
{error, not_found} = E ->
E