summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2012-11-29 12:35:00 +0000
committerSimon MacMullen <simon@rabbitmq.com>2012-11-29 12:35:00 +0000
commite8b1d3b7a299c09f0d1866acf63d90b7bddb3c68 (patch)
tree06177a4b4ccae868cea028666d0d04bf8c5a54ff
parentac19894dee2c633375bb025eab8a1806561f4b71 (diff)
downloadrabbitmq-server-git-e8b1d3b7a299c09f0d1866acf63d90b7bddb3c68.tar.gz
Make sure newly-started slaves don't respond and confuse things.
-rw-r--r--src/rabbit_mirror_queue_master.erl2
-rw-r--r--src/rabbit_mirror_queue_slave.erl7
2 files changed, 6 insertions, 3 deletions
diff --git a/src/rabbit_mirror_queue_master.erl b/src/rabbit_mirror_queue_master.erl
index 2f9f4c02de..d8737938ca 100644
--- a/src/rabbit_mirror_queue_master.erl
+++ b/src/rabbit_mirror_queue_master.erl
@@ -136,7 +136,7 @@ sync_mirrors(State = #state { name = QName,
{ok, #amqqueue{slave_pids = SPids}} = rabbit_amqqueue:lookup(QName),
Ref = make_ref(),
Syncer = rabbit_mirror_queue_sync:master_prepare(Ref, QName, SPids),
- gm:broadcast(GM, {sync_start, Ref, Syncer}),
+ gm:broadcast(GM, {sync_start, Ref, Syncer, SPids}),
S = fun(BQSN) -> State#state{backing_queue_state = BQSN} end,
case rabbit_mirror_queue_sync:master_go(Syncer, Ref, QName, BQ, BQS) of
{shutdown, R, BQS1} -> {stop, R, S(BQS1)};
diff --git a/src/rabbit_mirror_queue_slave.erl b/src/rabbit_mirror_queue_slave.erl
index 2b216a5f0f..1658b2ad3f 100644
--- a/src/rabbit_mirror_queue_slave.erl
+++ b/src/rabbit_mirror_queue_slave.erl
@@ -375,8 +375,11 @@ handle_msg([_SPid], _From, process_death) ->
handle_msg([CPid], _From, {delete_and_terminate, _Reason} = Msg) ->
ok = gen_server2:cast(CPid, {gm, Msg}),
{stop, {shutdown, ring_shutdown}};
-handle_msg([SPid], _From, {sync_start, Ref, Syncer}) ->
- gen_server2:cast(SPid, {sync_start, Ref, Syncer});
+handle_msg([SPid], _From, {sync_start, Ref, Syncer, SPids}) ->
+ case lists:member(SPid, SPids) of
+ true -> gen_server2:cast(SPid, {sync_start, Ref, Syncer});
+ false -> ok
+ end;
handle_msg([SPid], _From, Msg) ->
ok = gen_server2:cast(SPid, {gm, Msg}).