|
72 | 72 | -export([do_join/1]).
|
73 | 73 | %% To add the current node to an existing cluster
|
74 | 74 | -export([check_join_cluster/1,
|
75 |
| - join_cluster/1, |
76 | 75 | leave_cluster/1]).
|
77 | 76 | -export([is_clustered/0]).
|
78 | 77 | -export([check_cluster_consistency/0,
|
@@ -435,10 +434,26 @@ cli_cluster_status() ->
|
435 | 434 | init_cluster() ->
|
436 | 435 | %% Ensure the local Khepri store is running before we can join it. It
|
437 | 436 | %% could be stopped if RabbitMQ is not running for instance.
|
438 |
| - ok = setup(), |
439 |
| - khepri:info(?RA_CLUSTER_NAME), |
440 |
| - _ = application:ensure_all_started(khepri_mnesia_migration), |
441 |
| - mnesia_to_khepri:sync_cluster_membership(?STORE_ID). |
| 437 | + rabbit_log:debug("Khepri clustering: starting Mnesia..."), |
| 438 | + IsRunning = rabbit_mnesia:is_running(), |
| 439 | + try |
| 440 | + case IsRunning of |
| 441 | + true -> ok; |
| 442 | + false -> rabbit_mnesia:start_mnesia(false) |
| 443 | + end, |
| 444 | + rabbit_log:debug("Khepri clustering: starting Khepri..."), |
| 445 | + ok = setup(), |
| 446 | + khepri:info(?RA_CLUSTER_NAME), |
| 447 | + rabbit_log:debug("Khepri clustering: starting khepri_mnesia_migration..."), |
| 448 | + _ = application:ensure_all_started(khepri_mnesia_migration), |
| 449 | + rabbit_log:debug("Khepri clustering: syncing cluster membership"), |
| 450 | + mnesia_to_khepri:sync_cluster_membership(?STORE_ID) |
| 451 | + after |
| 452 | + case IsRunning of |
| 453 | + true -> ok; |
| 454 | + false -> rabbit_mnesia:stop_mnesia() |
| 455 | + end |
| 456 | + end. |
442 | 457 |
|
443 | 458 | %%%%%%%%
|
444 | 459 | %% TODO run_peer_discovery!!
|
@@ -468,31 +483,6 @@ check_join_cluster(DiscoveryNode) ->
|
468 | 483 | end
|
469 | 484 | end.
|
470 | 485 |
|
471 |
| -join_cluster(DiscoveryNode) -> |
472 |
| - {ClusterNodes, _} = discover_cluster([DiscoveryNode]), |
473 |
| - case me_in_nodes(ClusterNodes) of |
474 |
| - false -> |
475 |
| - case check_cluster_consistency(DiscoveryNode, false) of |
476 |
| - {ok, _S} -> |
477 |
| - ThisNode = node(), |
478 |
| - retry_khepri_op(fun() -> add_member(ThisNode, [DiscoveryNode]) end, 60); |
479 |
| - Error -> |
480 |
| - Error |
481 |
| - end; |
482 |
| - true -> |
483 |
| - %% DiscoveryNode thinks that we are part of a cluster, but |
484 |
| - %% do we think so ourselves? |
485 |
| - case are_we_clustered_with(DiscoveryNode) of |
486 |
| - true -> |
487 |
| - rabbit_log:info("Asked to join a cluster but already a member of it: ~tp", [ClusterNodes]), |
488 |
| - {ok, already_member}; |
489 |
| - false -> |
490 |
| - Msg = format_inconsistent_cluster_message(DiscoveryNode, node()), |
491 |
| - rabbit_log:error(Msg), |
492 |
| - {error, {inconsistent_cluster, Msg}} |
493 |
| - end |
494 |
| - end. |
495 |
| - |
496 | 486 | discover_cluster(Nodes) ->
|
497 | 487 | case lists:foldl(fun (_, {ok, Res}) -> {ok, Res};
|
498 | 488 | (Node, _) -> discover_cluster0(Node)
|
|
0 commit comments