diff options
| -rw-r--r-- | src/rabbit_mnesia.erl | 2 | ||||
| -rw-r--r-- | src/rabbit_peer_discovery.erl | 18 |
2 files changed, 19 insertions, 1 deletions
diff --git a/src/rabbit_mnesia.erl b/src/rabbit_mnesia.erl index a0363b69d0..10b6aef609 100644 --- a/src/rabbit_mnesia.erl +++ b/src/rabbit_mnesia.erl @@ -107,11 +107,13 @@ init() -> "Assuming we need to join an existing cluster or initialise from scratch...~n", [dir()]), rabbit_peer_discovery:log_configured_backend(), + rabbit_peer_discovery:maybe_init(), init_with_lock(); false -> NodeType = node_type(), init_db_and_upgrade(cluster_nodes(all), NodeType, NodeType =:= ram, _Retry = true), + rabbit_peer_discovery:maybe_init(), rabbit_peer_discovery:maybe_register() end, %% We intuitively expect the global name server to be synced when diff --git a/src/rabbit_peer_discovery.erl b/src/rabbit_peer_discovery.erl index 1abf2b7cc7..30ae500b67 100644 --- a/src/rabbit_peer_discovery.erl +++ b/src/rabbit_peer_discovery.erl @@ -20,7 +20,7 @@ %% API %% --export([discover_cluster_nodes/0, backend/0, node_type/0, +-export([maybe_init/0, discover_cluster_nodes/0, backend/0, node_type/0, normalize/1, format_discovered_nodes/1, log_configured_backend/0, register/0, unregister/0, maybe_register/0, maybe_unregister/0, maybe_inject_randomized_delay/0, lock/0, unlock/1]). @@ -88,6 +88,22 @@ lock_acquisition_failure_mode() -> log_configured_backend() -> rabbit_log:info("Configured peer discovery backend: ~s~n", [backend()]). +maybe_init() -> + Backend = backend(), + case erlang:function_exported(Backend, init, 0) of + true -> + rabbit_log:debug("Peer discovery backend supports initialisation."), + case Backend:init() of + ok -> + rabbit_log:debug("Peer discovery backend initialisation succeeded."), + ok; + {error, Error} -> + rabbit_log:warn("Peer discovery backend initialisation failed: ~p.", [Error]), + ok + end; + false -> ok + end. + -spec discover_cluster_nodes() -> {ok, Nodes :: list()} | {ok, {Nodes :: list(), NodeType :: rabbit_types:node_type()}} | |
