summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Klishin <mklishin@pivotal.io>2019-10-03 19:05:49 +0300
committerGitHub <noreply@github.com>2019-10-03 19:05:49 +0300
commitf201e562052e9963c210718e93bbdc005a58a274 (patch)
tree31ad462a9a3242921d6b173cf92fa1e0e371986a /src
parentbcc93dff559c11bac7df97ed402bd762582ddc49 (diff)
parentef580fb609740f0a4783c88370209f7e8707eb04 (diff)
downloadrabbitmq-server-git-f201e562052e9963c210718e93bbdc005a58a274.tar.gz
Merge pull request #2131 from rabbitmq/rabbitmq-server-2130
Error handling improvements in rabbit_epmd_monitor:check_epmd/1
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..1d34629cc3 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@~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",
[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@~s) with epmd at port ~p", [Me, Host, Port1]),
{ok, State#state{port = Port1}}.