summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorkjnilsson <knilsson@pivotal.io>2020-02-28 12:30:27 +0000
committerkjnilsson <knilsson@pivotal.io>2020-02-28 12:30:27 +0000
commit877c1df3098af717f043e2fc8db32aae05257873 (patch)
treef3035422a09194a91ba49512fed85c15463fae66 /test
parenteb061384fe508a8acaa39b75d32afd7c5a8ecee2 (diff)
downloadrabbitmq-server-git-877c1df3098af717f043e2fc8db32aae05257873.tar.gz
Fix QQ dead letter crash
that would occur when dead-lettering a message that was not kept in memory. At that point the dead lettering function failed as the message had not be restored from the Ra log.
Diffstat (limited to 'test')
-rw-r--r--test/quorum_queue_SUITE.erl16
1 files changed, 16 insertions, 0 deletions
diff --git a/test/quorum_queue_SUITE.erl b/test/quorum_queue_SUITE.erl
index 64a2dc4205..0fd76dd0fb 100644
--- a/test/quorum_queue_SUITE.erl
+++ b/test/quorum_queue_SUITE.erl
@@ -107,6 +107,7 @@ all_tests() ->
publish_and_restart,
subscribe_should_fail_when_global_qos_true,
dead_letter_to_classic_queue,
+ dead_letter_with_memory_limit,
dead_letter_to_quorum_queue,
dead_letter_from_classic_to_quorum_queue,
dead_letter_policy,
@@ -774,6 +775,21 @@ dead_letter_to_classic_queue(Config) ->
?assertEqual({'queue.declare_ok', CQ, 0, 0}, declare(Ch, CQ, [])),
test_dead_lettering(true, Config, Ch, Servers, ra_name(QQ), QQ, CQ).
+dead_letter_with_memory_limit(Config) ->
+ [Server | _] = Servers = rabbit_ct_broker_helpers:get_node_configs(Config, nodename),
+
+ Ch = rabbit_ct_client_helpers:open_channel(Config, Server),
+ QQ = ?config(queue_name, Config),
+ CQ = <<"classic-dead_letter_with_memory_limit">>,
+ ?assertEqual({'queue.declare_ok', QQ, 0, 0},
+ declare(Ch, QQ, [{<<"x-queue-type">>, longstr, <<"quorum">>},
+ {<<"x-max-in-memory-length">>, long, 0},
+ {<<"x-dead-letter-exchange">>, longstr, <<>>},
+ {<<"x-dead-letter-routing-key">>, longstr, CQ}
+ ])),
+ ?assertEqual({'queue.declare_ok', CQ, 0, 0}, declare(Ch, CQ, [])),
+ test_dead_lettering(true, Config, Ch, Servers, ra_name(QQ), QQ, CQ).
+
test_dead_lettering(PolicySet, Config, Ch, Servers, RaName, Source, Destination) ->
publish(Ch, Source),
wait_for_messages_ready(Servers, RaName, 1),