diff options
| author | kjnilsson <knilsson@pivotal.io> | 2020-02-28 12:30:27 +0000 |
|---|---|---|
| committer | kjnilsson <knilsson@pivotal.io> | 2020-02-28 12:30:27 +0000 |
| commit | 877c1df3098af717f043e2fc8db32aae05257873 (patch) | |
| tree | f3035422a09194a91ba49512fed85c15463fae66 /test | |
| parent | eb061384fe508a8acaa39b75d32afd7c5a8ecee2 (diff) | |
| download | rabbitmq-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.erl | 16 |
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), |
