summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmile Joubert <emile@rabbitmq.com>2012-06-08 12:55:44 +0100
committerEmile Joubert <emile@rabbitmq.com>2012-06-08 12:55:44 +0100
commitfe06b054ea050520603c2d7e5a7e8aa1c9e7e5ec (patch)
tree65a17689fb42ccb574aa2a6a764572c520e7e0f2
parente56438f93b1e50457e9aad14d2e1a71cb627631f (diff)
downloadrabbitmq-server-fe06b054ea050520603c2d7e5a7e8aa1c9e7e5ec.tar.gz
Stop mirror coordinator gen_server when deleting queue
-rw-r--r--src/rabbit_mirror_queue_coordinator.erl8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/rabbit_mirror_queue_coordinator.erl b/src/rabbit_mirror_queue_coordinator.erl
index c99fc21e..b2fb0856 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.