summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorkjnilsson <knilsson@pivotal.io>2020-02-24 17:01:17 +0000
committerkjnilsson <knilsson@pivotal.io>2020-02-24 17:01:17 +0000
commitcc01c0025278e209b980dd3eb8a5971932a2498e (patch)
treedd196186ede0e8e5cc4ed1abe9f44c6b763d7da9 /test
parent227e69480c22fdea58d5c388ec98ecc8ecd4e8ec (diff)
downloadrabbitmq-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.erl21
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.