summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Klishin <michael@clojurewerkz.org>2019-10-03 15:43:06 +0300
committerMichael Klishin <michael@clojurewerkz.org>2019-10-03 15:43:06 +0300
commitbde2a47f150fefd4d8acac8b117358c6418cf7bf (patch)
treedf42996d5caac05c127aaa64dfda9a92f2345c1c /src
parentbcc93dff559c11bac7df97ed402bd762582ddc49 (diff)
downloadrabbitmq-server-git-bde2a47f150fefd4d8acac8b117358c6418cf7bf.tar.gz
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.
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_epmd_monitor.erl19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/rabbit_epmd_monitor.erl b/src/rabbit_epmd_monitor.erl
index 410bff8564..6f0a8a5909 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}}.