Skip to content

Commit 07bfd2b

Browse files
committed
Ensure purge clears out returned messages
Fixes bug introduced with queue limit changes. [#161247380]
1 parent 16f4971 commit 07bfd2b

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

src/rabbit_fifo.erl

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,6 @@
195195
suspected_down = false :: boolean()
196196
}).
197197

198-
199198
-record(state,
200199
{name :: atom(),
201200
queue_resource :: rabbit_types:r('queue'),
@@ -435,17 +434,22 @@ apply(Meta, #checkout{spec = Spec, meta = ConsumerMeta,
435434
checkout(Meta, State1, [{monitor, process, Pid}]);
436435
apply(#{index := RaftIdx}, #purge{},
437436
#state{ra_indexes = Indexes0,
437+
returns = Returns,
438438
messages = Messages} = State0) ->
439-
Total = maps:size(Messages),
440-
Indexes = lists:foldl(fun rabbit_fifo_index:delete/2,
439+
Total = messages_ready(State0),
440+
Indexes1 = lists:foldl(fun rabbit_fifo_index:delete/2,
441441
Indexes0,
442442
[I || {I, _} <- lists:sort(maps:values(Messages))]),
443+
Indexes = lists:foldl(fun rabbit_fifo_index:delete/2,
444+
Indexes1,
445+
[I || {_, {I, _}} <- lqueue:to_list(Returns)]),
443446
{State, _, Effects} =
444447
update_smallest_raft_index(RaftIdx, Indexes0,
445448
State0#state{ra_indexes = Indexes,
446449
messages = #{},
447450
returns = lqueue:new(),
448451
msg_bytes_enqueue = 0,
452+
prefix_msgs = {[], []},
449453
low_msg_num = undefined},
450454
[]),
451455
%% as we're not checking out after a purge (no point) we have to
@@ -646,16 +650,14 @@ tick(_Ts, #state{name = Name,
646650
-spec overview(state()) -> map().
647651
overview(#state{consumers = Cons,
648652
enqueuers = Enqs,
649-
messages = Messages,
650-
ra_indexes = Indexes,
651653
msg_bytes_enqueue = EnqueueBytes,
652654
msg_bytes_checkout = CheckoutBytes} = State) ->
653655
#{type => ?MODULE,
654656
num_consumers => maps:size(Cons),
655657
num_checked_out => num_checked_out(State),
656658
num_enqueuers => maps:size(Enqs),
657-
num_ready_messages => maps:size(Messages),
658-
num_messages => rabbit_fifo_index:size(Indexes),
659+
num_ready_messages => messages_ready(State),
660+
num_messages => messages_total(State),
659661
enqueue_message_bytes => EnqueueBytes,
660662
checkout_message_bytes => CheckoutBytes}.
661663

0 commit comments

Comments
 (0)