summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
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,