diff options
author | Matthias Radestock <matthias@rabbitmq.com> | 2012-04-20 13:40:59 +0100 |
---|---|---|
committer | Matthias Radestock <matthias@rabbitmq.com> | 2012-04-20 13:40:59 +0100 |
commit | 6e19bea5673ba3ba2f12747e57aeb044fa294c2b (patch) | |
tree | cd89d23e031a9ef61e56b2a49faaae52b977bf1f | |
parent | 447b4219c71af18ae23b092ae48331559e90169e (diff) | |
parent | 3105f1a500d2d957083e564d7405ce1d4a50cd40 (diff) | |
download | rabbitmq-server-6e19bea5673ba3ba2f12747e57aeb044fa294c2b.tar.gz |
merge bug24882 into default
-rw-r--r-- | src/rabbit_amqqueue_process.erl | 16 | ||||
-rw-r--r-- | src/rabbit_mirror_queue_master.erl | 5 |
2 files changed, 15 insertions, 6 deletions
diff --git a/src/rabbit_amqqueue_process.erl b/src/rabbit_amqqueue_process.erl index 526a8b1d..04306ab3 100644 --- a/src/rabbit_amqqueue_process.erl +++ b/src/rabbit_amqqueue_process.erl @@ -717,6 +717,14 @@ ensure_ttl_timer(State = #q{backing_queue = BQ, ensure_ttl_timer(State) -> State. +ack_if_no_dlx(AckTags, State = #q{dlx = undefined, + backing_queue = BQ, + backing_queue_state = BQS }) -> + {_Guids, BQS1} = BQ:ack(AckTags, BQS), + State#q{backing_queue_state = BQS1}; +ack_if_no_dlx(_AckTags, State) -> + State. + dead_letter_fun(_Reason, #q{dlx = undefined}) -> undefined; dead_letter_fun(Reason, _State) -> @@ -1226,11 +1234,13 @@ handle_cast({reject, AckTags, Requeue, ChPid}, State) -> ChPid, AckTags, State, case Requeue of true -> fun (State1) -> requeue_and_run(AckTags, State1) end; - false -> Fun = dead_letter_fun(rejected, State), - fun (State1 = #q{backing_queue = BQ, + false -> fun (State1 = #q{backing_queue = BQ, backing_queue_state = BQS}) -> + Fun = dead_letter_fun(rejected, State1), BQS1 = BQ:fold(Fun, BQS, AckTags), - State1#q{backing_queue_state = BQS1} + ack_if_no_dlx( + AckTags, + State1#q{backing_queue_state = BQS1}) end end)); diff --git a/src/rabbit_mirror_queue_master.erl b/src/rabbit_mirror_queue_master.erl index 1cb58569..e6ef5c57 100644 --- a/src/rabbit_mirror_queue_master.erl +++ b/src/rabbit_mirror_queue_master.erl @@ -246,9 +246,8 @@ ack(AckTags, State = #state { gm = GM, {MsgIds, State #state { backing_queue_state = BQS1, ack_msg_id = AM1 }}. -fold(MsgFun, State = #state { gm = GM, - backing_queue = BQ, - backing_queue_state = BQS}, AckTags) -> +fold(MsgFun, State = #state { backing_queue = BQ, + backing_queue_state = BQS }, AckTags) -> State #state { backing_queue_state = BQ:fold(MsgFun, BQS, AckTags) }. requeue(AckTags, State = #state { gm = GM, |