diff options
| author | D Corbacho <diana@rabbitmq.com> | 2017-12-14 17:30:18 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-12-14 17:30:18 +0100 |
| commit | 4f9f87baa316418feb64d76f84bc3cf3b8b2c82d (patch) | |
| tree | 4052cf84ccd31ad4cefda97fd5676ce7ae030f48 /src | |
| parent | ee7ffd2e2cad1c748954245788842d77153e5434 (diff) | |
| parent | e08895d07c87bd0ba0879d1a23c856c233f29191 (diff) | |
| download | rabbitmq-server-git-4f9f87baa316418feb64d76f84bc3cf3b8b2c82d.tar.gz | |
Merge pull request #1451 from rabbitmq/rabbitmq-peer-discovery-common-5
Add an optional init step for peer discovery mechanisms
Diffstat (limited to 'src')
| -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()}} | |
