Skip to content

Commit 5b8a584

Browse files
Merge pull request #11926 from rabbitmq/mergify/bp/v3.13.x/pr-11924
Reduce Khepri test flakes (backport #11917) (backport #11924)
2 parents d458e77 + ea09d83 commit 5b8a584

File tree

3 files changed

+30
-2
lines changed

3 files changed

+30
-2
lines changed

deps/rabbitmq_ct_helpers/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ rabbitmq_app(
4545
"//deps/rabbit_common:erlang_app",
4646
"@meck//:erlang_app",
4747
"@proper//:erlang_app",
48+
"@ra//:erlang_app",
4849
],
4950
)
5051

deps/rabbitmq_ct_helpers/src/rabbit_ct_broker_helpers.erl

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,8 @@
173173
test_writer/1,
174174
user/1,
175175

176-
configured_metadata_store/1
176+
configured_metadata_store/1,
177+
await_metadata_store_consistent/2
177178
]).
178179

179180
%% Internal functions exported to be used by rpc:call/4.
@@ -990,6 +991,30 @@ enable_khepri_metadata_store(Config, FFs0) ->
990991
end
991992
end, Config, FFs).
992993

994+
%% Waits until the metadata store replica on Node is up to date with the leader.
995+
await_metadata_store_consistent(Config, Node) ->
996+
case configured_metadata_store(Config) of
997+
mnesia ->
998+
ok;
999+
{khepri, _} ->
1000+
RaClusterName = rabbit_khepri:get_ra_cluster_name(),
1001+
Leader = rpc(Config, Node, ra_leaderboard, lookup_leader, [RaClusterName]),
1002+
LastAppliedLeader = ra_last_applied(Leader),
1003+
1004+
NodeName = get_node_config(Config, Node, nodename),
1005+
ServerId = {RaClusterName, NodeName},
1006+
rabbit_ct_helpers:eventually(
1007+
?_assert(
1008+
begin
1009+
LastApplied = ra_last_applied(ServerId),
1010+
is_integer(LastApplied) andalso LastApplied >= LastAppliedLeader
1011+
end))
1012+
end.
1013+
1014+
ra_last_applied(ServerId) ->
1015+
#{last_applied := LastApplied} = ra:key_metrics(ServerId),
1016+
LastApplied.
1017+
9931018
rewrite_node_config_file(Config, Node) ->
9941019
NodeConfig = get_node_config(Config, Node),
9951020
I = if

deps/rabbitmq_mqtt/test/shared_SUITE.erl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@
2828
get_node_config/3,
2929
drain_node/2,
3030
revive_node/2,
31-
is_feature_flag_enabled/2
31+
is_feature_flag_enabled/2,
32+
await_metadata_store_consistent/2
3233
]).
3334
-import(rabbit_ct_helpers,
3435
[eventually/3,
@@ -1245,6 +1246,7 @@ rabbit_mqtt_qos0_queue_kill_node(Config) ->
12451246
SubscriberId = <<"subscriber">>,
12461247
Sub0 = connect(SubscriberId, Config, 0, []),
12471248
{ok, _, [0]} = emqtt:subscribe(Sub0, Topic1, qos0),
1249+
ok = await_metadata_store_consistent(Config, 2),
12481250
ok = emqtt:publish(Pub, Topic1, <<"m0">>, qos0),
12491251
ok = expect_publishes(Sub0, Topic1, [<<"m0">>]),
12501252

0 commit comments

Comments
 (0)