summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Klishin <klishinm@vmware.com>2021-10-18 18:34:38 +0300
committerGitHub <noreply@github.com>2021-10-18 18:34:38 +0300
commite64c316716e06040340a82396d4aab9b5756b884 (patch)
tree524f33f2cd5610577b6c0664f07bf691be6b04c8
parenta0d0fbf904ee78fc23763e9894ae5d3b214eba5e (diff)
parent691de2bea4f471fc2049051ed1ba81b8918d64ec (diff)
downloadrabbitmq-server-git-e64c316716e06040340a82396d4aab9b5756b884.tar.gz
Merge pull request #3586 from rabbitmq/declare-stream-with-node-down-fix
Declare stream with node down fix
-rw-r--r--deps/rabbit/src/rabbit_stream_queue.erl2
-rw-r--r--deps/rabbit/test/rabbit_stream_queue_SUITE.erl18
2 files changed, 18 insertions, 2 deletions
diff --git a/deps/rabbit/src/rabbit_stream_queue.erl b/deps/rabbit/src/rabbit_stream_queue.erl
index 14e83d85d3..da1609be46 100644
--- a/deps/rabbit/src/rabbit_stream_queue.erl
+++ b/deps/rabbit/src/rabbit_stream_queue.erl
@@ -814,7 +814,7 @@ queue_leader_locator(undefined) -> <<"client-local">>;
queue_leader_locator(Val) -> Val.
initial_cluster_size(undefined) ->
- length(rabbit_mnesia:cluster_nodes(running));
+ length(rabbit_nodes:all());
initial_cluster_size(Val) ->
Val.
diff --git a/deps/rabbit/test/rabbit_stream_queue_SUITE.erl b/deps/rabbit/test/rabbit_stream_queue_SUITE.erl
index 7b45b430b1..879b1a3288 100644
--- a/deps/rabbit/test/rabbit_stream_queue_SUITE.erl
+++ b/deps/rabbit/test/rabbit_stream_queue_SUITE.erl
@@ -50,7 +50,8 @@ groups() ->
publish_coordinator_unavailable,
leader_locator_policy]},
{cluster_size_3_1, [], [shrink_coordinator_cluster]},
- {cluster_size_3_2, [], [recover]},
+ {cluster_size_3_2, [], [recover,
+ declare_with_node_down]},
{cluster_size_3_parallel_1, [parallel], [delete_replica,
delete_last_replica,
delete_classic_replica,
@@ -668,6 +669,21 @@ restart_single_node(Config) ->
quorum_queue_utils:wait_for_messages(Config, [[Q, <<"2">>, <<"2">>, <<"0">>]]),
rabbit_ct_broker_helpers:rpc(Config, 0, ?MODULE, delete_testcase_queue, [Q]).
+%% the failing case for this test relies on a particular random condition
+%% please never consider this a flake
+declare_with_node_down(Config) ->
+ [Server1, Server2, Server3] = Servers = rabbit_ct_broker_helpers:get_node_configs(Config, nodename),
+ Ch = rabbit_ct_client_helpers:open_channel(Config, Server1),
+ rabbit_ct_broker_helpers:stop_node(Config, Server2),
+ Q = ?config(queue_name, Config),
+ ?assertEqual({'queue.declare_ok', Q, 0, 0},
+ declare(Ch, Q, [{<<"x-queue-type">>, longstr, <<"stream">>}])),
+
+ check_leader_and_replicas(Config, [Server1, Server3]),
+ rabbit_ct_broker_helpers:start_node(Config, Server2),
+ check_leader_and_replicas(Config, Servers),
+ ok.
+
recover(Config) ->
[Server | _] = Servers0 = rabbit_ct_broker_helpers:get_node_configs(Config, nodename),