summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Klishin <mklishin@pivotal.io>2017-03-20 16:54:52 +0300
committerMichael Klishin <mklishin@pivotal.io>2017-03-20 16:54:52 +0300
commit5565bb9320656533ad1fea78a8c6d2ff57b4a3e1 (patch)
treea7fd01d8de2bd44a6328b5eadaa9877cfcec83c0
parent49eba46c923b472391c5528e3531c375af3fcfc2 (diff)
downloadrabbitmq-server-git-5565bb9320656533ad1fea78a8c6d2ff57b4a3e1.tar.gz
Unregister from peer discovery backend on shutdown
References #1143.
-rw-r--r--src/rabbit.erl7
-rw-r--r--src/rabbit_peer_discovery.erl22
2 files changed, 26 insertions, 3 deletions
diff --git a/src/rabbit.erl b/src/rabbit.erl
index a0c66f1cec..be75321714 100644
--- a/src/rabbit.erl
+++ b/src/rabbit.erl
@@ -22,7 +22,7 @@
stop_and_halt/0, await_startup/0, status/0, is_running/0, alarms/0,
is_running/1, environment/0, rotate_logs/0, force_event_refresh/1,
start_fhc/0]).
--export([start/2, stop/1]).
+-export([start/2, stop/1, prep_stop/1]).
-export([start_apps/1, stop_apps/1]).
-export([log_locations/0, config_files/0, decrypt_config/2]). %% for testing and mgmt-agent
@@ -472,6 +472,7 @@ stop() ->
rabbit_log:info("RabbitMQ is asked to stop...~n", []),
Apps = ?APPS ++ rabbit_plugins:active(),
stop_apps(app_utils:app_dependency_order(Apps, true)),
+ rabbit_peer_discovery:unregister(),
rabbit_log:info("Successfully stopped RabbitMQ and its dependencies~n", []).
stop_and_halt() ->
@@ -753,6 +754,10 @@ start(normal, []) ->
Error
end.
+prep_stop(State) ->
+ rabbit_peer_discovery:unregister(),
+ State.
+
stop(_State) ->
ok = rabbit_alarm:stop(),
ok = case rabbit_mnesia:is_clustered() of
diff --git a/src/rabbit_peer_discovery.erl b/src/rabbit_peer_discovery.erl
index c0b554e3b3..a93c63ac05 100644
--- a/src/rabbit_peer_discovery.erl
+++ b/src/rabbit_peer_discovery.erl
@@ -21,7 +21,8 @@
%%
-export([discover_cluster_nodes/0, backend/0, node_type/0,
- normalize/1, format_discovered_nodes/1, log_configured_backend/0]).
+ normalize/1, format_discovered_nodes/1, log_configured_backend/0,
+ unregister/0]).
-export([append_node_prefix/1, node_prefix/0]).
-define(DEFAULT_BACKEND, rabbit_peer_discovery_classic_config).
@@ -72,6 +73,24 @@ discover_cluster_nodes() ->
normalize(Backend:list_nodes()).
+-spec unregister() -> ok.
+
+unregister() ->
+ Backend = backend(),
+ rabbit_log:info("Will unregister with peer discovery backend ~s", [Backend]),
+ case Backend:unregister() of
+ ok -> ok;
+ {error, Error} ->
+ rabbit_log:error("Failed to unregister with peer discovery backend ~s: ~p",
+ [Backend, Error]),
+ ok
+ end.
+
+
+%%
+%% Implementation
+%%
+
-spec normalize(Nodes :: list() |
{Nodes :: list(), NodeType :: rabbit_types:node_type()} |
{ok, Nodes :: list()} |
@@ -90,7 +109,6 @@ normalize({ok, {Nodes, NodeType}}) when is_list(Nodes) andalso is_atom(NodeType)
normalize({error, Reason}) ->
{error, Reason}.
-
-spec format_discovered_nodes(Nodes :: list()) -> string().
format_discovered_nodes(Nodes) ->