Skip to content

Commit eb4b826

Browse files
committed
cluster_minority_SUITE: Ensure cluster can be changed before partition
... in `remove_node_when_seed_node_is_leader/1` and `remove_node_when_seed_node_is_follower/1`. [Why] The check was performed after the partition so far. It was incorrect because if a cluster change was not permitted at the time of the partition, it would not be afterwards. Thus there was a race condition here. [How] Now, the check is performed before the partition. This should fix some test flakes we see locally and in CI.
1 parent 1f6341c commit eb4b826

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

deps/rabbit/test/cluster_minority_SUITE.erl

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -387,6 +387,11 @@ remove_node_when_seed_node_is_leader(Config) ->
387387
AMember = {rabbit_khepri:get_store_id(), A},
388388
ra:transfer_leadership(AMember, AMember),
389389
clustering_utils:assert_cluster_status({Cluster, Cluster}, Cluster),
390+
?awaitMatch(
391+
{ok, #{cluster_change_permitted := true}, _},
392+
rabbit_ct_broker_helpers:rpc(
393+
Config1, A, ra, member_overview, [AMember]),
394+
60000),
390395

391396
%% Minority partition: A
392397
partition_3_node_cluster(Config1),
@@ -395,11 +400,6 @@ remove_node_when_seed_node_is_leader(Config) ->
395400
ct:pal("Member A state: ~0p", [Pong]),
396401
case Pong of
397402
{pong, leader} ->
398-
?awaitMatch(
399-
{ok, #{cluster_change_permitted := true}, _},
400-
rabbit_ct_broker_helpers:rpc(
401-
Config1, A, ra, member_overview, [AMember]),
402-
60000),
403403
?awaitMatch(
404404
ok,
405405
rabbit_control_helper:command(
@@ -418,14 +418,19 @@ remove_node_when_seed_node_is_follower(Config) ->
418418
Cluster = [A, B, C],
419419
Config1 = rabbit_ct_broker_helpers:cluster_nodes(Config, Cluster),
420420

421+
AMember = {rabbit_khepri:get_store_id(), A},
421422
CMember = {rabbit_khepri:get_store_id(), C},
422423
ra:transfer_leadership(CMember, CMember),
423424
clustering_utils:assert_cluster_status({Cluster, Cluster}, Cluster),
425+
?awaitMatch(
426+
{ok, #{cluster_change_permitted := true}, _},
427+
rabbit_ct_broker_helpers:rpc(
428+
Config1, A, ra, member_overview, [AMember]),
429+
60000),
424430

425431
%% Minority partition: A
426432
partition_3_node_cluster(Config1),
427433

428-
AMember = {rabbit_khepri:get_store_id(), A},
429434
Pong = ra:ping(AMember, 10000),
430435
ct:pal("Member A state: ~0p", [Pong]),
431436
case Pong of

0 commit comments

Comments
 (0)