|
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