summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorkjnilsson <knilsson@pivotal.io>2018-12-19 13:18:58 +0000
committerkjnilsson <knilsson@pivotal.io>2018-12-19 13:18:58 +0000
commitd6dd9d05cab9eea95c49350b287a4182583c693d (patch)
treea0e6c8296823e79daf1da65e6eeaf089e5851653 /src
parente8fb108131762a5511c7c6b091642f19cd29994b (diff)
downloadrabbitmq-server-git-d6dd9d05cab9eea95c49350b287a4182583c693d.tar.gz
quorum queue: reset message bytes on purge
[#161505138]
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_fifo.erl11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/rabbit_fifo.erl b/src/rabbit_fifo.erl
index 8c7b208855..1fc467913e 100644
--- a/src/rabbit_fifo.erl
+++ b/src/rabbit_fifo.erl
@@ -429,6 +429,8 @@ apply(#{index := RaftIdx}, #purge{}, Effects0,
State1#state{ra_indexes = rabbit_fifo_index:empty(),
messages = #{},
returns = lqueue:new(),
+ msg_bytes_enqueue = 0,
+ msg_bytes_checkout = 0,
low_msg_num = undefined}, Effects1),
{State, [garbage_collection | Effects], {purge, Total}};
apply(_, {down, ConsumerPid, noconnection},
@@ -1866,9 +1868,14 @@ purge_test() ->
purge_with_checkout_test() ->
Cid = {<<"purge_test">>, self()},
{State0, _} = check_auto(Cid, 1, test_init(?FUNCTION_NAME)),
- {State1, _} = enq(2, 1, first, State0),
- {State2, _} = enq(3, 2, second, State1),
+ {State1, _} = enq(2, 1, <<"first">>, State0),
+ {State2, _} = enq(3, 2, <<"second">>, State1),
+ %% assert message bytes are non zero
+ ?assert(State2#state.msg_bytes_checkout > 0),
+ ?assert(State2#state.msg_bytes_enqueue > 0),
{State3, _, {purge, 2}} = apply(meta(2), make_purge(), [], State2),
+ ?assertEqual(0, State3#state.msg_bytes_checkout),
+ ?assertEqual(0, State3#state.msg_bytes_enqueue),
#consumer{checked_out = Checked} = maps:get(Cid, State3#state.consumers),
?assertEqual(0, maps:size(Checked)),
ok.