Skip to content

Commit 0ee5e74

Browse files
committed
Fix flake in test consume_from_replica
``` make -C deps/rabbit ct-rabbit_stream_queue t=cluster_size_3_parallel_1 RABBITMQ_METADATA_STORE=mnesia ``` flaked prior to this commit locally on Ubuntu with the following error after 11 runs: ``` rabbit_stream_queue_SUITE > cluster_size_3_parallel_1 > consume_from_replica {error, {{shutdown, {server_initiated_close,406, <<"PRECONDITION_FAILED - stream queue 'consume_from_replica' in vhost '/' does not have a running replica on the local node">>}}, {gen_server,call, [<0.8365.0>, {subscribe, {'basic.consume',0,<<"consume_from_replica">>, <<"ctag">>,false,false,false,false, [{<<"x-stream-offset">>,long,0}]}, <0.8151.0>}, infinity]}}} ```
1 parent 13e24d3 commit 0ee5e74

File tree

4 files changed

+13
-31
lines changed

4 files changed

+13
-31
lines changed

deps/rabbit/test/amqp_client_SUITE.erl

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6669,27 +6669,10 @@ ra_name(Q) ->
66696669
wait_for_local_member(<<"stream">>, QName, Config) ->
66706670
%% If it is a stream we need to wait until there is a local member
66716671
%% on the node we want to subscribe from before proceeding.
6672-
rabbit_ct_helpers:await_condition(
6673-
fun() -> rpc(Config, 0, ?MODULE, has_local_member,
6674-
[rabbit_misc:r(<<"/">>, queue, QName)])
6675-
end, 30_000);
6672+
ok = queue_utils:wait_for_local_stream_member(0, <<"/">>, QName, Config);
66766673
wait_for_local_member(_, _, _) ->
66776674
ok.
66786675

6679-
has_local_member(QName) ->
6680-
case rabbit_amqqueue:lookup(QName) of
6681-
{ok, Q} ->
6682-
#{name := StreamId} = amqqueue:get_type_state(Q),
6683-
case rabbit_stream_coordinator:local_pid(StreamId) of
6684-
{ok, Pid} ->
6685-
is_process_alive(Pid);
6686-
{error, _} ->
6687-
false
6688-
end;
6689-
{error, _} ->
6690-
false
6691-
end.
6692-
66936676
-spec find_event(Type, Props, Events) -> Ret when
66946677
Type :: atom(),
66956678
Props :: proplists:proplist(),

deps/rabbit/test/queue_type_SUITE.erl

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -240,11 +240,7 @@ stream(Config) ->
240240

241241
SubCh = rabbit_ct_client_helpers:open_channel(Config, 2),
242242
qos(SubCh, 10, false),
243-
%% wait for local replica
244-
rabbit_ct_helpers:await_condition(
245-
fun() ->
246-
queue_utils:has_local_stream_member(Config, 2, QName, <<"/">>)
247-
end, 60000),
243+
ok = queue_utils:wait_for_local_stream_member(2, <<"/">>, QName, Config),
248244

249245
try
250246
amqp_channel:subscribe(

deps/rabbit/test/queue_utils.erl

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
ra_name/1,
1515
fifo_machines_use_same_version/1,
1616
fifo_machines_use_same_version/2,
17-
has_local_stream_member/4,
17+
wait_for_local_stream_member/4,
1818
has_local_stream_member_rpc/1
1919
]).
2020

@@ -170,11 +170,13 @@ fifo_machines_use_same_version(Config, Nodenames)
170170
|| Nodename <- Nodenames],
171171
lists:all(fun(V) -> V =:= MachineAVersion end, OtherMachinesVersions).
172172

173-
has_local_stream_member(Config, Node, QName, VHost) ->
174-
QRes = rabbit_misc:r(VHost, queue, QName),
175-
rabbit_ct_broker_helpers:rpc(Config, Node, ?MODULE,
176-
has_local_stream_member_rpc,
177-
[QRes]).
173+
wait_for_local_stream_member(Node, Vhost, QNameBin, Config) ->
174+
QName = rabbit_misc:queue_resource(Vhost, QNameBin),
175+
rabbit_ct_helpers:await_condition(
176+
fun() ->
177+
rabbit_ct_broker_helpers:rpc(
178+
Config, Node, ?MODULE, has_local_stream_member_rpc, [QName])
179+
end, 60_000).
178180

179181
has_local_stream_member_rpc(QName) ->
180182
case rabbit_amqqueue:lookup(QName) of
@@ -183,9 +185,9 @@ has_local_stream_member_rpc(QName) ->
183185
case rabbit_stream_coordinator:local_pid(StreamId) of
184186
{ok, Pid} ->
185187
is_process_alive(Pid);
186-
_ ->
188+
{error, _} ->
187189
false
188190
end;
189-
_Err ->
191+
{error, _} ->
190192
false
191193
end.

deps/rabbit/test/rabbit_stream_queue_SUITE.erl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1734,6 +1734,7 @@ consume_from_replica(Config) ->
17341734
Ch2 = rabbit_ct_client_helpers:open_channel(Config, Server3),
17351735
qos(Ch2, 10, false),
17361736

1737+
ok = queue_utils:wait_for_local_stream_member(Server3, <<"/">>, Q, Config),
17371738
subscribe(Ch2, Q, false, 0),
17381739
receive_batch(Ch2, 0, 99),
17391740
rabbit_ct_broker_helpers:rpc(Config, 0, ?MODULE, delete_testcase_queue, [Q]).

0 commit comments

Comments
 (0)