diff options
author | kjnilsson <knilsson@pivotal.io> | 2020-02-28 15:31:53 +0000 |
---|---|---|
committer | kjnilsson <knilsson@pivotal.io> | 2020-02-28 15:31:53 +0000 |
commit | 7deac6b136939338664f939227afb4aa694eec1c (patch) | |
tree | cb4d2f67134d87873eb05e1521a634984797d9ed | |
parent | 877c1df3098af717f043e2fc8db32aae05257873 (diff) | |
download | rabbitmq-server-git-qq-dead-letter-bug.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.erl | 7 | ||||
-rw-r--r-- | test/rabbit_fifo_SUITE.erl | 7 |
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(_) -> |