diff options
| author | Emile Joubert <emile@rabbitmq.com> | 2012-06-08 12:55:44 +0100 |
|---|---|---|
| committer | Emile Joubert <emile@rabbitmq.com> | 2012-06-08 12:55:44 +0100 |
| commit | 3d869f04a20e69c2c9042c6b608a51e5dbcd269f (patch) | |
| tree | 65a17689fb42ccb574aa2a6a764572c520e7e0f2 | |
| parent | 62e4f7f7f0d9a8c5c94faa99a8b57106bfe7f363 (diff) | |
| download | rabbitmq-server-git-3d869f04a20e69c2c9042c6b608a51e5dbcd269f.tar.gz | |
Stop mirror coordinator gen_server when deleting queue
| -rw-r--r-- | src/rabbit_mirror_queue_coordinator.erl | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/rabbit_mirror_queue_coordinator.erl b/src/rabbit_mirror_queue_coordinator.erl index c99fc21eb3..b2fb085664 100644 --- a/src/rabbit_mirror_queue_coordinator.erl +++ b/src/rabbit_mirror_queue_coordinator.erl @@ -354,7 +354,10 @@ handle_cast(request_length, State = #state { length_fun = LengthFun }) -> noreply(State); handle_cast({ensure_monitoring, Pids}, State = #state { monitors = Mons }) -> - noreply(State #state { monitors = pmon:monitor_all(Pids, Mons) }). + noreply(State #state { monitors = pmon:monitor_all(Pids, Mons) }); + +handle_cast({delete_and_terminate, Reason}, State = #state { monitors = Mons }) -> + {stop, Reason, State}. handle_info(send_gm_heartbeat, State = #state { gm = GM }) -> gm:broadcast(GM, heartbeat), @@ -402,7 +405,8 @@ handle_msg([CPid], _From, request_length = Msg) -> ok = gen_server2:cast(CPid, Msg); handle_msg([CPid], _From, {ensure_monitoring, _Pids} = Msg) -> ok = gen_server2:cast(CPid, Msg); -handle_msg([_CPid], _From, {delete_and_terminate, Reason}) -> +handle_msg([CPid], _From, {delete_and_terminate, Reason} = Msg) -> + ok = gen_server2:cast(CPid, Msg), {stop, Reason}; handle_msg([_CPid], _From, _Msg) -> ok. |
