Hello, I find when we transfer data (DataTransfer), we set the socket read timeout to *targets.length * socketTimeout*, but not socketTimeout + READ_TIMEOUT_EXTENSION * (targets.length-1) as we do in the setting of the pipeline.
What's the purpose of this setting? public void doRun() throws IOException { xmitsInProgress.getAndIncrement(); Socket sock = null; DataOutputStream out = null; DataInputStream in = null; BlockSender blockSender = null; final boolean isClient = clientname.length() > 0; try { final String dnAddr = targets[0].getXferAddr(connectToDnViaHostname); InetSocketAddress curTarget = NetUtils.createSocketAddr(dnAddr); if (LOG.isDebugEnabled()) { LOG.debug("Connecting to datanode " + dnAddr); } sock = newSocket(); NetUtils.connect(sock, curTarget, dnConf.socketTimeout); * sock.setSoTimeout(targets.length * dnConf.socketTimeout);<<<<-----* long writeTimeout = dnConf.socketWriteTimeout + HdfsServerConstants.WRITE_TIMEOUT_EXTENSION * (targets.length-1); -- Xie Gang