diff options
author | Simon MacMullen <simon@rabbitmq.com> | 2012-06-08 17:36:36 +0100 |
---|---|---|
committer | Simon MacMullen <simon@rabbitmq.com> | 2012-06-08 17:36:36 +0100 |
commit | 144e021d94c1a6b841c99b31b11ae74ec4e1dee5 (patch) | |
tree | 6c49eac31eb00cb2ff7428013b8a360233335ada | |
parent | f1a2fdc74e62e517ec155b5c993162da80b4db04 (diff) | |
download | rabbitmq-server-144e021d94c1a6b841c99b31b11ae74ec4e1dee5.tar.gz |
Backport c50d1aceb148 (Merge of bug24984; Normal HA queue exit leaks processes)
-rw-r--r-- | src/rabbit_mirror_queue_coordinator.erl | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/rabbit_mirror_queue_coordinator.erl b/src/rabbit_mirror_queue_coordinator.erl index 17e2ffb4..71e0507a 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) -> + {stop, Reason, State}. handle_info(send_gm_heartbeat, State = #state { gm = GM }) -> gm:broadcast(GM, heartbeat), @@ -402,6 +405,9 @@ 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} = Msg) -> + ok = gen_server2:cast(CPid, Msg), + {stop, Reason}; handle_msg([_CPid], _From, _Msg) -> ok. |