diff options
| author | Simon MacMullen <simon@rabbitmq.com> | 2012-11-29 12:35:00 +0000 |
|---|---|---|
| committer | Simon MacMullen <simon@rabbitmq.com> | 2012-11-29 12:35:00 +0000 |
| commit | e8b1d3b7a299c09f0d1866acf63d90b7bddb3c68 (patch) | |
| tree | 06177a4b4ccae868cea028666d0d04bf8c5a54ff | |
| parent | ac19894dee2c633375bb025eab8a1806561f4b71 (diff) | |
| download | rabbitmq-server-git-e8b1d3b7a299c09f0d1866acf63d90b7bddb3c68.tar.gz | |
Make sure newly-started slaves don't respond and confuse things.
| -rw-r--r-- | src/rabbit_mirror_queue_master.erl | 2 | ||||
| -rw-r--r-- | src/rabbit_mirror_queue_slave.erl | 7 |
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}). |
