From bde2a47f150fefd4d8acac8b117358c6418cf7bf Mon Sep 17 00:00:00 2001 From: Michael Klishin Date: Thu, 3 Oct 2019 15:43:06 +0300 Subject: [PATCH 1/2] Error handling improvements in rabbit_epmd_monitor:check_epmd/1 To produce less noise and more informative messages. This also introduces a function that allows for manual check triggering. Closes #2130. --- src/rabbit_epmd_monitor.erl | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/rabbit_epmd_monitor.erl b/src/rabbit_epmd_monitor.erl index 410bff856401..6f0a8a5909f8 100644 --- a/src/rabbit_epmd_monitor.erl +++ b/src/rabbit_epmd_monitor.erl @@ -59,17 +59,29 @@ init_handle_port_please(noport, Mod, Me, Host) -> me = Me, host = Host, port = undefined}, + rabbit_log:info("epmd does not know us, re-registering as ~s~n", [Me]), {ok, ensure_timer(State)}; init_handle_port_please({port, Port, _Version}, Mod, Me, Host) -> + rabbit_log:info("epmd monitor knows us, inter-node communication (distribution) port: ~p", [Port]), State = #state{mod = Mod, me = Me, host = Host, port = Port}, + {ok, ensure_timer(State)}; +init_handle_port_please({error, Error}, Mod, Me, Host) -> + rabbit_log:error("epmd monitor failed to retrieve our port from epmd: ~p", [Error]), + State = #state{mod = Mod, + me = Me, + host = Host, + port = undefined}, {ok, ensure_timer(State)}. handle_call(_Request, _From, State) -> {noreply, State}. +handle_cast(check, State0) -> + {ok, State1} = check_epmd(State0), + {noreply, ensure_timer(State1#state{timer = undefined})}; handle_cast(_Msg, State) -> {noreply, State}. @@ -95,14 +107,19 @@ check_epmd(State = #state{mod = Mod, me = Me, host = Host, port = Port}) -> + rabbit_log:debug("Asked to [re-]register this node (~s@~p) with epmd...", [Me, Host]), Port1 = case Mod:port_please(Me, Host) of noport -> rabbit_log:warning("epmd does not know us, re-registering ~s at port ~b~n", [Me, Port]), Port; {port, NewPort, _Version} -> - NewPort + NewPort; + {error, Error} -> + rabbit_log:error("epmd monitor failed to retrieve our port from epmd: ~p", [Error]), + Port end, rabbit_nodes:ensure_epmd(), Mod:register_node(Me, Port1), + rabbit_log:debug("[Re-]registered this node (~s@~p) with epmd at port ~p", [Me, Host, Port1]), {ok, State#state{port = Port1}}. From ef580fb609740f0a4783c88370209f7e8707eb04 Mon Sep 17 00:00:00 2001 From: Luke Bakken Date: Thu, 3 Oct 2019 09:02:09 -0700 Subject: [PATCH 2/2] Format host atoms as strings --- src/rabbit_epmd_monitor.erl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/rabbit_epmd_monitor.erl b/src/rabbit_epmd_monitor.erl index 6f0a8a5909f8..1d34629cc362 100644 --- a/src/rabbit_epmd_monitor.erl +++ b/src/rabbit_epmd_monitor.erl @@ -107,7 +107,7 @@ check_epmd(State = #state{mod = Mod, me = Me, host = Host, port = Port}) -> - rabbit_log:debug("Asked to [re-]register this node (~s@~p) with epmd...", [Me, Host]), + rabbit_log:debug("Asked to [re-]register this node (~s@~s) with epmd...", [Me, Host]), Port1 = case Mod:port_please(Me, Host) of noport -> rabbit_log:warning("epmd does not know us, re-registering ~s at port ~b~n", @@ -121,5 +121,5 @@ check_epmd(State = #state{mod = Mod, end, rabbit_nodes:ensure_epmd(), Mod:register_node(Me, Port1), - rabbit_log:debug("[Re-]registered this node (~s@~p) with epmd at port ~p", [Me, Host, Port1]), + rabbit_log:debug("[Re-]registered this node (~s@~s) with epmd at port ~p", [Me, Host, Port1]), {ok, State#state{port = Port1}}.