Skip to content

Commit a7a1db9

Browse files
Merge pull request #11837 from rabbitmq/mergify/bp/v3.13.x/pr-11833
rabbit_khepri: Retry register_projections during boot (backport #11741) (backport #11833)
2 parents c9acbc1 + 9b8a7cf commit a7a1db9

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

deps/rabbit/src/rabbit_khepri.erl

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@ setup(_) ->
263263
case khepri:start(?RA_SYSTEM, RaServerConfig) of
264264
{ok, ?STORE_ID} ->
265265
wait_for_leader(),
266-
register_projections(),
266+
wait_for_register_projections(),
267267
?LOG_DEBUG(
268268
"Khepri-based " ?RA_FRIENDLY_NAME " ready",
269269
#{domain => ?RMQLOG_DOMAIN_GLOBAL}),
@@ -306,6 +306,21 @@ wait_for_leader(Timeout, Retries) ->
306306
throw(Reason)
307307
end.
308308

309+
wait_for_register_projections() ->
310+
wait_for_register_projections(retry_timeout(), retry_limit()).
311+
312+
wait_for_register_projections(_Timeout, 0) ->
313+
exit(timeout_waiting_for_khepri_projections);
314+
wait_for_register_projections(Timeout, Retries) ->
315+
rabbit_log:info("Waiting for Khepri projections for ~tp ms, ~tp retries left",
316+
[Timeout, Retries - 1]),
317+
try
318+
register_projections()
319+
catch
320+
throw : timeout ->
321+
wait_for_register_projections(Timeout, Retries -1)
322+
end.
323+
309324
%% @private
310325

311326
can_join_cluster(DiscoveryNode) when is_atom(DiscoveryNode) ->

deps/rabbitmq_cli/lib/rabbitmq/cli/default_output.ex

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,10 @@ defmodule RabbitMQ.CLI.DefaultOutput do
8282
{:error, RabbitMQ.CLI.Core.ExitCodes.exit_tempfail(), khepri_timeout_error(node_name)}
8383
end
8484

85+
defp format_khepri_output({:error, :timeout_waiting_for_khepri_projections}, %{node: node_name}) do
86+
{:error, RabbitMQ.CLI.Core.ExitCodes.exit_tempfail(), khepri_timeout_error(node_name)}
87+
end
88+
8589
defp format_khepri_output(result, _opts) do
8690
result
8791
end

0 commit comments

Comments
 (0)