summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rabbit_mirror_queue_misc.erl16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/rabbit_mirror_queue_misc.erl b/src/rabbit_mirror_queue_misc.erl
index 6589660245..d92e74ea7e 100644
--- a/src/rabbit_mirror_queue_misc.erl
+++ b/src/rabbit_mirror_queue_misc.erl
@@ -243,11 +243,21 @@ add_mirror(QName, MirrorNode, SyncMode) ->
#resource{virtual_host = VHost} = amqqueue:get_name(Q),
case rabbit_vhost_sup_sup:get_vhost_sup(VHost, MirrorNode) of
{ok, _} ->
- SPid = rabbit_amqqueue_sup_sup:start_queue_process(
+ try
+ SPid = rabbit_amqqueue_sup_sup:start_queue_process(
MirrorNode, Q, slave),
- log_info(QName, "Adding mirror on node ~p: ~p~n",
+ log_info(QName, "Adding mirror on node ~p: ~p~n",
[MirrorNode, SPid]),
- rabbit_mirror_queue_slave:go(SPid, SyncMode);
+ rabbit_mirror_queue_slave:go(SPid, SyncMode)
+ of
+ _ -> ok
+ catch
+ error:QError ->
+ log_warning(QName,
+ "Unable to start queue mirror on node '~p'. "
+ "Target queue supervisor is not running: ~p~n",
+ [MirrorNode, QError])
+ end;
{error, Error} ->
log_warning(QName,
"Unable to start queue mirror on node '~p'. "