Skip to content

Commit e5cc386

Browse files
committed
Fix cluster status command and join_cluster error formatting
1 parent 41d89e5 commit e5cc386

File tree

3 files changed

+28
-6
lines changed

3 files changed

+28
-6
lines changed

deps/rabbit/src/rabbit_core_ff.erl

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -205,8 +205,12 @@ mds_phase1_migration_post_enable(#{feature_name := FeatureName}) ->
205205
mds_migration_post_enable(FeatureName, Tables).
206206

207207
mds_migration_enable(FeatureName, TablesAndOwners) ->
208-
ok = ensure_khepri_cluster_matches_mnesia(FeatureName),
209-
mds_migrate_tables_to_khepri(FeatureName, TablesAndOwners).
208+
case ensure_khepri_cluster_matches_mnesia(FeatureName) of
209+
ok ->
210+
mds_migrate_tables_to_khepri(FeatureName, TablesAndOwners);
211+
Error ->
212+
Error
213+
end.
210214

211215
mds_migration_post_enable(FeatureName, TablesAndOwners) ->
212216
?assert(rabbit_khepri:is_enabled(non_blocking)),
@@ -221,7 +225,12 @@ ensure_khepri_cluster_matches_mnesia(FeatureName) ->
221225
"Feature flag `~s`: updating the Khepri cluster to match "
222226
"the Mnesia cluster",
223227
[FeatureName]),
224-
rabbit_khepri:init_cluster().
228+
try
229+
rabbit_khepri:init_cluster()
230+
catch
231+
error:{khepri_mnesia_migration_ex, _, _} = Reason ->
232+
{error, Reason}
233+
end.
225234

226235
mds_plugin_migration_enable(FeatureName, TablesAndOwners) ->
227236
global:set_lock({FeatureName, self()}),

deps/rabbit/src/rabbit_khepri.erl

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -472,9 +472,9 @@ get_sys_status(Proc) ->
472472
cli_cluster_status() ->
473473
case rabbit:is_running() of
474474
true ->
475-
Nodes = nodes(),
476-
[{nodes, [{disc, [N || N <- Nodes, rabbit_nodes:is_running(N)]}]},
477-
{running_nodes, Nodes},
475+
Nodes = locally_known_nodes(),
476+
[{nodes, [{disc, Nodes}]},
477+
{running_nodes, [N || N <- Nodes, rabbit_nodes:is_running(N)]},
478478
{cluster_name, rabbit_nodes:cluster_name()}];
479479
false ->
480480
[]
@@ -498,6 +498,9 @@ init_cluster() ->
498498
_ = application:ensure_all_started(khepri_mnesia_migration),
499499
rabbit_log:debug("Khepri clustering: syncing cluster membership"),
500500
mnesia_to_khepri:sync_cluster_membership(?STORE_ID)
501+
catch
502+
error:{khepri_mnesia_migration_ex, _, _} = Reason ->
503+
{error, Reason}
501504
after
502505
case IsRunning of
503506
true -> ok;

deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/join_cluster_command.ex

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,16 @@ defmodule RabbitMQ.CLI.Ctl.Commands.JoinClusterCommand do
7878
"Error: cannot cluster node with itself: #{node_name}"}
7979
end
8080

81+
def output(
82+
{:error,
83+
{:khepri_mnesia_migration_ex, :all_mnesia_nodes_must_run,
84+
%{all_nodes: nodes, running_nodes: running}}},
85+
_opts
86+
) do
87+
{:error, RabbitMQ.CLI.Core.ExitCodes.exit_software(),
88+
"Error: all mnesia nodes must run to join the cluster, mnesia nodes: #{inspect(nodes)}, running nodes: #{inspect(running)}"}
89+
end
90+
8191
use RabbitMQ.CLI.DefaultOutput
8292

8393
def banner([target_node], %{node: node_name}) do

0 commit comments

Comments
 (0)