Skip to content

Commit e08895d

Browse files
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]
1 parent ee7ffd2 commit e08895d

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

src/rabbit_mnesia.erl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,11 +107,13 @@ init() ->
107107
"Assuming we need to join an existing cluster or initialise from scratch...~n",
108108
[dir()]),
109109
rabbit_peer_discovery:log_configured_backend(),
110+
rabbit_peer_discovery:maybe_init(),
110111
init_with_lock();
111112
false ->
112113
NodeType = node_type(),
113114
init_db_and_upgrade(cluster_nodes(all), NodeType,
114115
NodeType =:= ram, _Retry = true),
116+
rabbit_peer_discovery:maybe_init(),
115117
rabbit_peer_discovery:maybe_register()
116118
end,
117119
%% We intuitively expect the global name server to be synced when

src/rabbit_peer_discovery.erl

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
%% API
2121
%%
2222

23-
-export([discover_cluster_nodes/0, backend/0, node_type/0,
23+
-export([maybe_init/0, discover_cluster_nodes/0, backend/0, node_type/0,
2424
normalize/1, format_discovered_nodes/1, log_configured_backend/0,
2525
register/0, unregister/0, maybe_register/0, maybe_unregister/0,
2626
maybe_inject_randomized_delay/0, lock/0, unlock/1]).
@@ -88,6 +88,22 @@ lock_acquisition_failure_mode() ->
8888
log_configured_backend() ->
8989
rabbit_log:info("Configured peer discovery backend: ~s~n", [backend()]).
9090

91+
maybe_init() ->
92+
Backend = backend(),
93+
case erlang:function_exported(Backend, init, 0) of
94+
true ->
95+
rabbit_log:debug("Peer discovery backend supports initialisation."),
96+
case Backend:init() of
97+
ok ->
98+
rabbit_log:debug("Peer discovery backend initialisation succeeded."),
99+
ok;
100+
{error, Error} ->
101+
rabbit_log:warn("Peer discovery backend initialisation failed: ~p.", [Error]),
102+
ok
103+
end;
104+
false -> ok
105+
end.
106+
91107

92108
-spec discover_cluster_nodes() -> {ok, Nodes :: list()} |
93109
{ok, {Nodes :: list(), NodeType :: rabbit_types:node_type()}} |

0 commit comments

Comments
 (0)