summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_mnesia.erl2
-rw-r--r--src/rabbit_peer_discovery.erl18
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()}} |