diff options
| author | Jean-Sébastien Pédron <jean-sebastien@rabbitmq.com> | 2020-07-24 16:03:38 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-07-24 16:03:38 +0200 |
| commit | 2b542351573a007740c9863f6a6359ca4dc344d8 (patch) | |
| tree | 02268c092bd3e44b3af77c270ca380ae25ccf167 /src | |
| parent | 8629a1cd3d59bfff96129e2cbc9b0d7042651675 (diff) | |
| parent | 30d3ffb89a5a27982c45da57f961461cd27cf9a6 (diff) | |
| download | rabbitmq-server-git-2b542351573a007740c9863f6a6359ca4dc344d8.tar.gz | |
Merge pull request #2417 from rabbitmq/mark-node-as-ready-after-it-is
Mark node as ready after it actually is
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit.erl | 33 | ||||
| -rw-r--r-- | src/rabbit_networking.erl | 17 |
2 files changed, 28 insertions, 22 deletions
diff --git a/src/rabbit.erl b/src/rabbit.erl index 8298dfe79d..f58ae1db94 100644 --- a/src/rabbit.erl +++ b/src/rabbit.erl @@ -684,7 +684,7 @@ status() -> {log_files, log_locations()}, {data_directory, rabbit_mnesia:dir()}, {raft_data_directory, ra_env:data_dir()}], - Totals = case rabbit:is_running() of + Totals = case is_running() of true -> [{virtual_host_count, rabbit_vhost:count()}, {connection_count, @@ -912,26 +912,31 @@ do_run_postlaunch_phase() -> end end, Plugins), + %% Successful boot resets node maintenance state. rabbit_log_prelaunch:info("Resetting node maintenance status"), - %% successful boot resets node maintenance state - rabbit_maintenance:unmark_as_being_drained(), - rabbit_log_prelaunch:debug("Marking ~s as running", [product_name()]), - rabbit_boot_state:set(ready), + _ = rabbit_maintenance:unmark_as_being_drained(), - ok = rabbit_lager:broker_is_started(), - ok = log_broker_started( - rabbit_plugins:strictly_plugins(rabbit_plugins:active())), - %% export definitions after all plugins have been enabled, + %% Export definitions after all plugins have been enabled, %% see rabbitmq/rabbitmq-server#2384 case rabbit_definitions:maybe_load_definitions() of - ok -> ok; + ok -> ok; DefLoadError -> throw(DefLoadError) end, - %% start listeners after all plugins have been enabled, - %% see rabbitmq/rabbitmq-server#2405 - rabbit_log_prelaunch:info("Ready to start client connection listeners"), - ok = rabbit_networking:boot() + %% Start listeners after all plugins have been enabled, + %% see rabbitmq/rabbitmq-server#2405. + rabbit_log_prelaunch:info( + "Ready to start client connection listeners"), + ok = rabbit_networking:boot(), + + %% The node is ready: mark it as such and log it. + %% NOTE: PLEASE DO NOT ADD CRITICAL NODE STARTUP CODE AFTER THIS. + ok = rabbit_lager:broker_is_started(), + ok = log_broker_started( + rabbit_plugins:strictly_plugins(rabbit_plugins:active())), + + rabbit_log_prelaunch:debug("Marking ~s as running", [product_name()]), + rabbit_boot_state:set(ready) catch throw:{error, _} = Error -> rabbit_prelaunch_errors:log_error(Error), diff --git a/src/rabbit_networking.erl b/src/rabbit_networking.erl index 966601d222..63760cd2e3 100644 --- a/src/rabbit_networking.erl +++ b/src/rabbit_networking.erl @@ -67,12 +67,7 @@ -type protocol() :: atom(). -type label() :: string(). -%% @todo Remove once Dialyzer only runs on Erlang/OTP 21.3 or above. --dialyzer({nowarn_function, boot/0}). --dialyzer({nowarn_function, boot_listeners/3}). --dialyzer({nowarn_function, record_distribution_listener/0}). - --spec boot() -> 'ok'. +-spec boot() -> 'ok' | no_return(). boot() -> ok = record_distribution_listener(), @@ -338,10 +333,16 @@ tcp_listener_stopped(Protocol, Opts, IPAddress, Port) -> port = Port, opts = Opts}). +-spec record_distribution_listener() -> ok | no_return(). + record_distribution_listener() -> {Name, Host} = rabbit_nodes:parts(node()), - {port, Port, _Version} = erl_epmd:port_please(Name, Host), - tcp_listener_started(clustering, [], {0,0,0,0,0,0,0,0}, Port). + case erl_epmd:port_please(Name, Host, infinity) of + {port, Port, _Version} -> + tcp_listener_started(clustering, [], {0,0,0,0,0,0,0,0}, Port); + noport -> + throw({error, no_epmd_port}) + end. -spec active_listeners() -> [rabbit_types:listener()]. |
