summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorArnaud Cogoluègnes <acogoluegnes@gmail.com>2020-02-28 17:18:14 +0100
committerGitHub <noreply@github.com>2020-02-28 17:18:14 +0100
commit3653d237f5dff7603c4f578bbb5a6ddbc919b786 (patch)
treecb4d2f67134d87873eb05e1521a634984797d9ed /src
parent7aa77b2f0b832fd1fd4fa08f8e0ef86a7009e1fe (diff)
parent7deac6b136939338664f939227afb4aa694eec1c (diff)
downloadrabbitmq-server-git-3653d237f5dff7603c4f578bbb5a6ddbc919b786.tar.gz
Merge pull request #2263 from rabbitmq/qq-dead-letter-bug
Take snapshots when messages are returned
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_fifo.erl7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/rabbit_fifo.erl b/src/rabbit_fifo.erl
index d5fab879c2..762963419c 100644
--- a/src/rabbit_fifo.erl
+++ b/src/rabbit_fifo.erl
@@ -1087,7 +1087,7 @@ maybe_enqueue(RaftIdx, From, MsgSeqNo, RawMsg, Effects0,
snd(T) ->
element(2, T).
-return(Meta, ConsumerId, Returned,
+return(#{index := IncomingRaftIdx} = Meta, ConsumerId, Returned,
Effects0, #?MODULE{service_queue = SQ0} = State0) ->
{State1, Effects1} = maps:fold(
fun(MsgId, {Tag, _} = Msg, {S0, E0})
@@ -1102,9 +1102,10 @@ return(Meta, ConsumerId, Returned,
Con = Con0#consumer{credit = increase_credit(Con0, map_size(Returned))},
{Cons, SQ, Effects2} = update_or_remove_sub(ConsumerId, Con, Cons0,
SQ0, Effects1),
- State = State1#?MODULE{consumers = Cons,
+ State2 = State1#?MODULE{consumers = Cons,
service_queue = SQ},
- checkout(Meta, State, Effects2).
+ {State, ok, Effects} = checkout(Meta, State2, Effects2),
+ update_smallest_raft_index(IncomingRaftIdx, State, Effects).
% used to processes messages that are finished
complete(ConsumerId, Discarded,