summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Klishin <mklishin@pivotal.io>2020-03-12 00:12:23 +0300
committerMichael Klishin <michael@clojurewerkz.org>2020-03-12 00:12:50 +0300
commitf8d47976d999e8816dacf981f86b71f387dc18fc (patch)
tree040a2938127f47a6bfd9e146b22affeaf11fd9f0 /src
parent2d7ce9961237de7f5ab67375ec99da9299d39a3a (diff)
downloadrabbitmq-server-git-f8d47976d999e8816dacf981f86b71f387dc18fc.tar.gz
Merge pull request #2273 from luos/fix_crashed_queues_on_startup
After network partition some classic queues are crashed, do not have mirrors (cherry picked from commit 3c1b317b08870d3ca4c04c4a59b4067bf768707e)
Diffstat (limited to 'src')
-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'. "