summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Radestock <matthias@rabbitmq.com>2012-10-12 08:57:15 +0100
committerMatthias Radestock <matthias@rabbitmq.com>2012-10-12 08:57:15 +0100
commit30c88fec4edcc57b7e24f5778fdeb762fb00d9c6 (patch)
tree3b098c167bc9e2f217a83f1960913959a6d0f486
parent80931756a9ec0b45ed6a75ae5ce24e2ee4de4449 (diff)
downloadrabbitmq-server-git-30c88fec4edcc57b7e24f5778fdeb762fb00d9c6.tar.gz
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.
-rw-r--r--src/rabbit_mirror_queue_master.erl6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/rabbit_mirror_queue_master.erl b/src/rabbit_mirror_queue_master.erl
index d865d6751b..6dac280851 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.