Browse Source

HDFS-15050. Optimize log information when DFSInputStream meet CannotObtainBlockLengthException. Contributed by Xiaoqiao He.

Signed-off-by: Wei-Chiu Chuang <weichiu@apache.org>
He Xiaoqiao 5 years ago
parent
commit
0e28cd8f63

+ 12 - 0
hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/CannotObtainBlockLengthException.java

@@ -52,4 +52,16 @@ public class CannotObtainBlockLengthException extends IOException {
     super("Cannot obtain block length for " + locatedBlock);
     super("Cannot obtain block length for " + locatedBlock);
   }
   }
 
 
+  /**
+   * Constructs an {@code CannotObtainBlockLengthException} with the
+   * specified LocatedBlock and file that failed to obtain block length.
+   *
+   * @param locatedBlock
+   *        The LocatedBlock instance which block length can not be obtained
+   * @param src The file which include this block
+   */
+  public CannotObtainBlockLengthException(LocatedBlock locatedBlock,
+      String src) {
+    super("Cannot obtain block length for " + locatedBlock + " of " + src);
+  }
 }
 }

+ 1 - 1
hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DFSInputStream.java

@@ -383,7 +383,7 @@ public class DFSInputStream extends FSInputStream
       return 0;
       return 0;
     }
     }
 
 
-    throw new CannotObtainBlockLengthException(locatedblock);
+    throw new CannotObtainBlockLengthException(locatedblock, src);
   }
   }
 
 
   public long getFileLength() {
   public long getFileLength() {