Browse Source

HADOOP-5688. Fix HftpFileSystem checksum path construction. Contributed by Tsz Wo (Nicholas) Sze

git-svn-id: https://svn.apache.org/repos/asf/hadoop/core/branches/branch-0.20@767637 13f79535-47bb-0310-9956-ffa450edef68
Christopher Douglas 16 years ago
parent
commit
3f7613aa59

+ 7 - 0
CHANGES.txt

@@ -1,5 +1,12 @@
 Hadoop Change Log
 
+Release 0.20.1 - Unreleased
+
+  BUG FIXES
+
+    HADOOP-5688. Fix HftpFileSystem checksum path construction. (Tsz Wo
+    (Nicholas) Sze via cdouglas)
+
 Release 0.20.0 - 2009-04-15
 
   INCOMPATIBLE CHANGES

+ 3 - 2
src/hdfs/org/apache/hadoop/hdfs/HftpFileSystem.java

@@ -273,7 +273,7 @@ public class HftpFileSystem extends FileSystem {
       filechecksum = MD5MD5CRC32FileChecksum.valueOf(attrs);
     }
 
-    private FileChecksum getFileChecksum(Path f) throws IOException {
+    private FileChecksum getFileChecksum(String f) throws IOException {
       final HttpURLConnection connection = openConnection(
           "/fileChecksum" + f, "ugi=" + ugi);
       try {
@@ -299,7 +299,8 @@ public class HftpFileSystem extends FileSystem {
 
   /** {@inheritDoc} */
   public FileChecksum getFileChecksum(Path f) throws IOException {
-    return new ChecksumParser().getFileChecksum(f);
+    final String s = makeQualified(f).toUri().getPath();
+    return new ChecksumParser().getFileChecksum(s);
   }
 
   @Override

+ 7 - 0
src/test/org/apache/hadoop/hdfs/TestDistributedFileSystem.java

@@ -162,6 +162,10 @@ public class TestDistributedFileSystem extends junit.framework.TestCase {
       final FileChecksum hftpfoocs = hftp.getFileChecksum(foo);
       System.out.println("hftpfoocs=" + hftpfoocs);
 
+      final Path qualified = new Path(hftpuri + dir, "foo" + n);
+      final FileChecksum qfoocs = hftp.getFileChecksum(qualified);
+      System.out.println("qfoocs=" + qfoocs);
+
       //write another file
       final Path bar = new Path(dir, "bar" + n);
       {
@@ -179,6 +183,9 @@ public class TestDistributedFileSystem extends junit.framework.TestCase {
 
         assertEquals(hftpfoocs.hashCode(), barhashcode);
         assertEquals(hftpfoocs, barcs);
+
+        assertEquals(qfoocs.hashCode(), barhashcode);
+        assertEquals(qfoocs, barcs);
       }
     }
   }