Kaynağa Gözat

HDFS-6143. WebHdfsFileSystem open should throw FileNotFoundException for non-existing paths. Contributed by Gera Shegalov.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1585639 13f79535-47bb-0310-9956-ffa450edef68
Haohui Mai 11 yıl önce
ebeveyn
işleme
bcf1f33acd

+ 3 - 0
hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt

@@ -317,6 +317,9 @@ Release 2.5.0 - UNRELEASED
     HDFS-6180. dead node count / listing is very broken in JMX and old GUI.
     (wheat9)
 
+    HDFS-6143. WebHdfsFileSystem open should throw FileNotFoundException for
+    non-existing paths. (Gera Shegalov via wheat9)
+
 Release 2.4.1 - UNRELEASED
 
   INCOMPATIBLE CHANGES

+ 2 - 1
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/web/ByteRangeInputStream.java

@@ -83,9 +83,10 @@ public abstract class ByteRangeInputStream extends FSInputStream {
    * @param o Original url
    * @param r Resolved url
    */
-  public ByteRangeInputStream(URLOpener o, URLOpener r) {
+  public ByteRangeInputStream(URLOpener o, URLOpener r) throws IOException {
     this.originalURL = o;
     this.resolvedURL = r;
+    getInputStream();
   }
 
   protected abstract URL getResolvedUrl(final HttpURLConnection connection

+ 2 - 1
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java

@@ -962,7 +962,8 @@ public class WebHdfsFileSystem extends FileSystem
   }
 
   static class OffsetUrlInputStream extends ByteRangeInputStream {
-    OffsetUrlInputStream(OffsetUrlOpener o, OffsetUrlOpener r) {
+    OffsetUrlInputStream(OffsetUrlOpener o, OffsetUrlOpener r)
+        throws IOException {
       super(o, r);
     }
 

+ 2 - 3
hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/web/TestWebHdfsFileSystemContract.java

@@ -182,9 +182,8 @@ public class TestWebHdfsFileSystemContract extends FileSystemContractBaseTest {
     final Path p = new Path("/test/testOpenNonExistFile");
     //open it as a file, should get FileNotFoundException 
     try {
-      final FSDataInputStream in = fs.open(p);
-      in.read();
-      fail();
+      fs.open(p);
+      fail("Expected FileNotFoundException was not thrown");
     } catch(FileNotFoundException fnfe) {
       WebHdfsFileSystem.LOG.info("This is expected.", fnfe);
     }