You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-dev@hadoop.apache.org by "MaoYuan Xian (JIRA)" <ji...@apache.org> on 2014/01/09 08:39:51 UTC

[jira] [Created] (HDFS-5745) Unnecessary disk check triggered when socket operation has problem.

MaoYuan Xian created HDFS-5745:
----------------------------------

             Summary: Unnecessary disk check triggered when socket operation has problem.
                 Key: HDFS-5745
                 URL: https://issues.apache.org/jira/browse/HDFS-5745
             Project: Hadoop HDFS
          Issue Type: Improvement
          Components: datanode
    Affects Versions: 1.2.1
            Reporter: MaoYuan Xian


When BlockReceiver transfer data fails, it can be found SocketOutputStream translates the exception as IOException with the message "The stream is closed":
2014-01-06 11:48:04,716 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: IOException in BlockReceiver.run():
java.io.IOException: The stream is closed
at org.apache.hadoop.net.SocketOutputStream.write
at java.io.BufferedOutputStream.flushBuffer
at java.io.BufferedOutputStream.flush
at java.io.DataOutputStream.flush
at org.apache.hadoop.hdfs.server.datanode.BlockReceiver$PacketResponder.run
at java.lang.Thread.run

Which makes the checkDiskError method of DataNode called and triggers the disk scan.

Can we make the modifications like below in checkDiskError to avoiding this unneccessary disk scan operations?:
{code}
--- a/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataNode.java
+++ b/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataNode.java
@@ -938,7 +938,8 @@ public class DataNode extends Configured
          || e.getMessage().startsWith("An established connection was aborted")
          || e.getMessage().startsWith("Broken pipe")
          || e.getMessage().startsWith("Connection reset")
-         || e.getMessage().contains("java.nio.channels.SocketChannel")) {
+         || e.getMessage().contains("java.nio.channels.SocketChannel")
+         || e.getMessage().startsWith("The stream is closed")) {
       LOG.info("Not checking disk as checkDiskError was called on a network" +
         " related exception"); 
       return;
{code}




--
This message was sent by Atlassian JIRA
(v6.1.5#6160)