diff options
| author | Michael Klishin <michael@clojurewerkz.org> | 2017-12-14 18:37:46 +0300 |
|---|---|---|
| committer | Michael Klishin <michael@clojurewerkz.org> | 2017-12-14 18:37:46 +0300 |
| commit | e08895d07c87bd0ba0879d1a23c856c233f29191 (patch) | |
| tree | 4052cf84ccd31ad4cefda97fd5676ce7ae030f48 /src | |
| parent | ee7ffd2e2cad1c748954245788842d77153e5434 (diff) | |
| download | rabbitmq-server-git-e08895d07c87bd0ba0879d1a23c856c233f29191.tar.gz | |
Add an optional init step for peer discovery mechanisms
Sometimes they need to perform some initialisation very early on,
e.g. to configure HTTP client proxy settings or similar.
Part of rabbitmq/rabbitmq-peer-discovery-common#5.
[#153615554]
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()}} | |
