diff --git a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/EndpointStateMachine.java b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/EndpointStateMachine.java index a6c3b11de92..b3854e7ecd2 100644 --- a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/EndpointStateMachine.java +++ b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/EndpointStateMachine.java @@ -234,12 +234,17 @@ public void logIfNeeded(Exception ex) { } if (missCounter == 0) { + long missedDurationSeconds = TimeUnit.MILLISECONDS.toSeconds( + this.getMissedCount() * getScmHeartbeatInterval(this.conf) + ); LOG.warn( - "Unable to communicate to {} server at {} for past {} seconds.", - serverName, - getAddress().getHostString() + ":" + getAddress().getPort(), - TimeUnit.MILLISECONDS.toSeconds(this.getMissedCount() * - getScmHeartbeatInterval(this.conf)), ex); + "Unable to communicate to {} server at {}:{} for past {} seconds.", + serverName, + address.getAddress(), + address.getPort(), + missedDurationSeconds, + ex + ); } if (LOG.isTraceEnabled()) { diff --git a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/states/endpoint/VersionEndpointTask.java b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/states/endpoint/VersionEndpointTask.java index e702b1e6e15..968c9b9a6e6 100644 --- a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/states/endpoint/VersionEndpointTask.java +++ b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/states/endpoint/VersionEndpointTask.java @@ -17,6 +17,7 @@ package org.apache.hadoop.ozone.container.common.states.endpoint; import java.io.IOException; +import java.net.BindException; import java.util.concurrent.Callable; import org.apache.hadoop.hdds.conf.ConfigurationSource; @@ -104,7 +105,7 @@ public EndpointStateMachine.EndPointStates call() throws Exception { LOG.debug("Cannot execute GetVersion task as endpoint state machine " + "is in {} state", rpcEndPoint.getState()); } - } catch (DiskOutOfSpaceException ex) { + } catch (DiskOutOfSpaceException | BindException ex) { rpcEndPoint.setState(EndpointStateMachine.EndPointStates.SHUTDOWN); } catch (IOException ex) { rpcEndPoint.logIfNeeded(ex); diff --git a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/XceiverServerGrpc.java b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/XceiverServerGrpc.java index ad9c5c9d9ca..42daaa94be3 100644 --- a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/XceiverServerGrpc.java +++ b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/XceiverServerGrpc.java @@ -19,6 +19,7 @@ package org.apache.hadoop.ozone.container.common.transport.server; import java.io.IOException; +import java.net.BindException; import java.util.Collections; import java.util.List; import java.util.UUID; @@ -185,7 +186,16 @@ public HddsProtos.ReplicationType getServerType() { @Override public void start() throws IOException { if (!isStarted) { - server.start(); + try { + server.start(); + } catch (IOException e) { + LOG.error("Error while starting the server", e); + if (e.getMessage().contains("Failed to bind to address")) { + throw new BindException(e.getMessage()); + } else { + throw e; + } + } int realPort = server.getPort(); if (port == 0) {