You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-commits@hadoop.apache.org by ha...@apache.org on 2012/07/10 13:52:14 UTC
svn commit: r1359619 - in
/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs: CHANGES.txt
src/main/java/org/apache/hadoop/hdfs/server/datanode/BlockSender.java
Author: harsh
Date: Tue Jul 10 11:52:13 2012
New Revision: 1359619
URL: http://svn.apache.org/viewvc?rev=1359619&view=rev
Log:
HDFS-3555. idle client socket triggers DN ERROR log (should be INFO or DEBUG). Contributed by Andy Isaacson. (harsh)
Modified:
hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BlockSender.java
Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt?rev=1359619&r1=1359618&r2=1359619&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt (original)
+++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt Tue Jul 10 11:52:13 2012
@@ -287,6 +287,9 @@ Branch-2 ( Unreleased changes )
HDFS-3067. NPE in DFSInputStream.readBuffer if read is repeated on
corrupted block. (Henry Robinson via atm)
+ HDFS-3555. idle client socket triggers DN ERROR log
+ (should be INFO or DEBUG). (Andy Isaacson via harsh)
+
OPTIMIZATIONS
HDFS-2982. Startup performance suffers when there are many edit log
Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BlockSender.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BlockSender.java?rev=1359619&r1=1359618&r2=1359619&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BlockSender.java (original)
+++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BlockSender.java Tue Jul 10 11:52:13 2012
@@ -28,6 +28,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.SocketException;
+import java.net.SocketTimeoutException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.util.Arrays;
@@ -493,18 +494,27 @@ class BlockSender implements java.io.Clo
out.write(buf, 0, dataOff + dataLen);
}
} catch (IOException e) {
- /* 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.
- */
- String ioem = e.getMessage();
- if (!ioem.startsWith("Broken pipe") && !ioem.startsWith("Connection reset")) {
- LOG.error("BlockSender.sendChunks() exception: ", e);
+ if (e instanceof SocketTimeoutException) {
+ /*
+ * writing to client timed out. This happens if the client reads
+ * part of a block and then decides not to read the rest (but leaves
+ * the socket open).
+ */
+ LOG.info("BlockSender.sendChunks() exception: ", e);
+ } else {
+ /* 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.
+ */
+ String ioem = e.getMessage();
+ if (!ioem.startsWith("Broken pipe") && !ioem.startsWith("Connection reset")) {
+ LOG.error("BlockSender.sendChunks() exception: ", e);
+ }
}
throw ioeToSocketException(e);
}