diff options
| author | kjnilsson <knilsson@pivotal.io> | 2020-02-24 17:01:17 +0000 |
|---|---|---|
| committer | kjnilsson <knilsson@pivotal.io> | 2020-02-24 17:01:17 +0000 |
| commit | cc01c0025278e209b980dd3eb8a5971932a2498e (patch) | |
| tree | dd196186ede0e8e5cc4ed1abe9f44c6b763d7da9 /test | |
| parent | 227e69480c22fdea58d5c388ec98ecc8ecd4e8ec (diff) | |
| download | rabbitmq-server-git-cc01c0025278e209b980dd3eb8a5971932a2498e.tar.gz | |
Split QQ remove member into two operations
To avoid not updating the amqqueue record if the server data delete part
failed but the Raft cluster was still updated. Also add a function to
repair the quorum queue queue type nodes in the amqqrecord if it should
diverge from what the Ra cluster thinks.
[#171434221]
Diffstat (limited to 'test')
| -rw-r--r-- | test/quorum_queue_SUITE.erl | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/test/quorum_queue_SUITE.erl b/test/quorum_queue_SUITE.erl index 1c96517c85..83e4a0942e 100644 --- a/test/quorum_queue_SUITE.erl +++ b/test/quorum_queue_SUITE.erl @@ -70,6 +70,7 @@ groups() -> recover_from_multiple_failures, leadership_takeover, delete_declare, + delete_member_during_node_down, metrics_cleanup_on_leadership_takeover, metrics_cleanup_on_leader_crash, consume_in_minority, @@ -1413,6 +1414,26 @@ delete_member_not_a_member(Config) -> rpc:call(Server, rabbit_quorum_queue, delete_member, [<<"/">>, QQ, Server])). +delete_member_during_node_down(Config) -> + [Server, DownServer, _] = rabbit_ct_broker_helpers:get_node_configs( + Config, nodename), + + stop_node(Config, DownServer), + % rabbit_ct_broker_helpers:stop_node(Config, DownServer), + Ch = rabbit_ct_client_helpers:open_channel(Config, Server), + QQ = ?config(queue_name, Config), + ?assertEqual({'queue.declare_ok', QQ, 0, 0}, + declare(Ch, QQ, [{<<"x-queue-type">>, longstr, <<"quorum">>}])), + % RaName = ra_name(QQ), + timer:sleep(200), + ?assertEqual(ok, rpc:call(Server, rabbit_quorum_queue, delete_member, + [<<"/">>, QQ, Server])), + + rabbit_ct_broker_helpers:start_node(Config, DownServer), + ?assertEqual(ok, rpc:call(Server, rabbit_quorum_queue, repair_amqqueue_nodes, + [<<"/">>, QQ])), + ok. + %% These tests check if node removal would cause any queues to lose (or not lose) %% their quorum. See rabbitmq/rabbitmq-cli#389 for background. |
