Author: stack Date: Tue Jul 12 20:27:51 2011 New Revision: 1145752 URL: http://svn.apache.org/viewvc?rev=1145752&view=rev Log: HDFS-2054 BlockSender.sendChunk() prints ERROR for connection closures encountered during transferToFully()
Modified: hadoop/common/branches/branch-0.22/hdfs/CHANGES.txt hadoop/common/branches/branch-0.22/hdfs/src/java/org/apache/hadoop/hdfs/server/datanode/BlockSender.java Modified: hadoop/common/branches/branch-0.22/hdfs/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.22/hdfs/CHANGES.txt?rev=1145752&r1=1145751&r2=1145752&view=diff ============================================================================== --- hadoop/common/branches/branch-0.22/hdfs/CHANGES.txt (original) +++ hadoop/common/branches/branch-0.22/hdfs/CHANGES.txt Tue Jul 12 20:27:51 2011 @@ -270,6 +270,10 @@ Release 0.22.0 - Unreleased HADOOP-7106. Reorganize project SVN layout to "unsplit" the projects. (todd, nigel) + HDFS-2054 BlockSender.sendChunk() prints ERROR for connection closures + encountered during transferToFully() (Kihwal Lee via stack) + + OPTIMIZATIONS HDFS-1140. Speedup INode.getPathComponents. (Dmytro Molkov via shv) Modified: hadoop/common/branches/branch-0.22/hdfs/src/java/org/apache/hadoop/hdfs/server/datanode/BlockSender.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.22/hdfs/src/java/org/apache/hadoop/hdfs/server/datanode/BlockSender.java?rev=1145752&r1=1145751&r2=1145752&view=diff ============================================================================== --- hadoop/common/branches/branch-0.22/hdfs/src/java/org/apache/hadoop/hdfs/server/datanode/BlockSender.java (original) +++ hadoop/common/branches/branch-0.22/hdfs/src/java/org/apache/hadoop/hdfs/server/datanode/BlockSender.java Tue Jul 12 20:27:51 2011 @@ -401,10 +401,19 @@ class BlockSender implements java.io.Clo } } catch (IOException e) { - /* exception while writing to the client (well, with transferTo(), - * it could also be while reading from the local file). + /* Exception while writing to the client. Connection closure from + * the other end is mostly the case and we do not care much about + * it. But other things can go wrong, especially in transferTo(), + * which we do not want to ignore. + * + * The message parsing below should not be considered as a good + * coding example. NEVER do it to drive a program logic. NEVER. + * It was done here because the NIO throws an IOException for EPIPE. */ - LOG.error("BlockSender.sendChunks() exception: " + StringUtils.stringifyException(e)); + String ioem = e.getMessage(); + if (!ioem.startsWith("Broken pipe") && !ioem.startsWith("Connection reset")) { + LOG.error("BlockSender.sendChunks() exception: ", e); + } throw ioeToSocketException(e); }