From 368e5aa8a088d74ed584ee8c970d9fa029dccfb2 Mon Sep 17 00:00:00 2001 From: Matthias Radestock Date: Fri, 12 Oct 2012 08:57:15 +0100 Subject: monitor channel on discard just as we do for publish/publish_delivered w/o that there is a 20s delay in slaves cleaning up after channel closure if all the messages sent on the channel were discarded. --- src/rabbit_mirror_queue_master.erl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/rabbit_mirror_queue_master.erl b/src/rabbit_mirror_queue_master.erl index d865d675..6dac2808 100644 --- a/src/rabbit_mirror_queue_master.erl +++ b/src/rabbit_mirror_queue_master.erl @@ -379,8 +379,10 @@ discard(Msg = #basic_message { id = MsgId }, ChPid, case dict:find(MsgId, SS) of error -> ok = gm:broadcast(GM, {discard, ChPid, Msg}), - State #state { backing_queue_state = BQ:discard(Msg, ChPid, BQS), - seen_status = dict:erase(MsgId, SS) }; + ensure_monitoring( + ChPid, State #state { + backing_queue_state = BQ:discard(Msg, ChPid, BQS), + seen_status = dict:erase(MsgId, SS) }); {ok, discarded} -> State end. -- cgit v1.2.1