summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkjnilsson <knilsson@pivotal.io>2020-02-28 15:31:53 +0000
committerkjnilsson <knilsson@pivotal.io>2020-02-28 15:31:53 +0000
commit7deac6b136939338664f939227afb4aa694eec1c (patch)
treecb4d2f67134d87873eb05e1521a634984797d9ed
parent877c1df3098af717f043e2fc8db32aae05257873 (diff)
downloadrabbitmq-server-git-7deac6b136939338664f939227afb4aa694eec1c.tar.gz
Take snapshots when messages are returnedqq-dead-letter-bug
and there is a delivery-limit in place. Also fix rabbit_fifo tests.
-rw-r--r--src/rabbit_fifo.erl7
-rw-r--r--test/rabbit_fifo_SUITE.erl7
2 files changed, 7 insertions, 7 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,
diff --git a/test/rabbit_fifo_SUITE.erl b/test/rabbit_fifo_SUITE.erl
index a756f4f838..8e513e5555 100644
--- a/test/rabbit_fifo_SUITE.erl
+++ b/test/rabbit_fifo_SUITE.erl
@@ -329,7 +329,7 @@ return_checked_out_limit_test(_) ->
{State2, ok, [{send_msg, _, {delivery, _, [{MsgId2, _}]}, _},
{aux, active}]} =
apply(meta(3), rabbit_fifo:make_return(Cid, [MsgId]), State1),
- {#rabbit_fifo{ra_indexes = RaIdxs}, ok, []} =
+ {#rabbit_fifo{ra_indexes = RaIdxs}, ok, [_ReleaseEff]} =
apply(meta(4), rabbit_fifo:make_return(Cid, [MsgId2]), State2),
?assertEqual(0, rabbit_fifo_index:size(RaIdxs)),
ok.
@@ -453,7 +453,7 @@ discarded_message_without_dead_letter_handler_is_removed_test(_) ->
Effects2),
ok.
-discarded_message_with_dead_letter_handler_emits_mod_call_effect_test(_) ->
+discarded_message_with_dead_letter_handler_emits_log_effect_test(_) ->
Cid = {<<"completed_consumer_yields_demonitor_effect_test">>, self()},
State00 = init(#{name => test,
queue_resource => rabbit_misc:r(<<"/">>, queue, <<"test">>),
@@ -466,8 +466,7 @@ discarded_message_with_dead_letter_handler_emits_mod_call_effect_test(_) ->
Effects1),
{_State2, _, Effects2} = apply(meta(1), rabbit_fifo:make_discard(Cid, [0]), State1),
% assert mod call effect with appended reason and message
- ?ASSERT_EFF({mod_call, somemod, somefun, [somearg, [{rejected, first}]]},
- Effects2),
+ ?ASSERT_EFF({log, _RaftIdxs, _}, Effects2),
ok.
tick_test(_) ->