diff options
| author | Michael Klishin <mklishin@pivotal.io> | 2017-03-20 16:54:52 +0300 |
|---|---|---|
| committer | Michael Klishin <mklishin@pivotal.io> | 2017-03-20 16:54:52 +0300 |
| commit | 5565bb9320656533ad1fea78a8c6d2ff57b4a3e1 (patch) | |
| tree | a7fd01d8de2bd44a6328b5eadaa9877cfcec83c0 | |
| parent | 49eba46c923b472391c5528e3531c375af3fcfc2 (diff) | |
| download | rabbitmq-server-git-5565bb9320656533ad1fea78a8c6d2ff57b4a3e1.tar.gz | |
Unregister from peer discovery backend on shutdown
References #1143.
| -rw-r--r-- | src/rabbit.erl | 7 | ||||
| -rw-r--r-- | src/rabbit_peer_discovery.erl | 22 |
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) -> |
