diff --git a/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/XceiverClientGrpc.java b/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/XceiverClientGrpc.java index 105aa1bf4d08..84d66970e23a 100644 --- a/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/XceiverClientGrpc.java +++ b/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/XceiverClientGrpc.java @@ -38,6 +38,7 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.Semaphore; import java.util.concurrent.TimeUnit; +import org.apache.hadoop.hdds.HddsConfigKeys; import org.apache.hadoop.hdds.HddsUtils; import org.apache.hadoop.hdds.conf.ConfigurationSource; import org.apache.hadoop.hdds.protocol.DatanodeDetails; @@ -184,8 +185,13 @@ private synchronized void connectToDatanode(DatanodeDetails dn) protected NettyChannelBuilder createChannel(DatanodeDetails dn, int port) throws IOException { - NettyChannelBuilder channelBuilder = - NettyChannelBuilder.forAddress(dn.getIpAddress(), port).usePlaintext() + String dnHost; + if (datanodeUseHostName()) { + dnHost = dn.getHostName(); + } else { + dnHost = dn.getIpAddress(); + } + NettyChannelBuilder channelBuilder = NettyChannelBuilder.forAddress(dnHost, port) .maxInboundMessageSize(OzoneConsts.OZONE_SCM_CHUNK_MAX_SIZE) .proxyDetector(uri -> null) .intercept(new GrpcClientInterceptor()); @@ -205,6 +211,12 @@ protected NettyChannelBuilder createChannel(DatanodeDetails dn, int port) return channelBuilder; } + private boolean datanodeUseHostName() { + return config.getBoolean( + HddsConfigKeys.HDDS_DATANODE_USE_DN_HOSTNAME, + HddsConfigKeys.HDDS_DATANODE_USE_DN_HOSTNAME_DEFAULT); + } + /** * Checks if the client has a live connection channel to the specified * Datanode. @@ -570,7 +582,7 @@ public XceiverClientReply sendCommandAsync( DatanodeID dnId = dn.getID(); if (LOG.isDebugEnabled()) { LOG.debug("Send command {} to datanode {}", - request.getCmdType(), dn.getIpAddress()); + request.getCmdType(), dn); } final CompletableFuture replyFuture = new CompletableFuture<>();