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 da...@apache.org on 2012/10/23 17:03:53 UTC
svn commit: r1401309 - in
/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs: CHANGES.txt
src/main/java/org/apache/hadoop/hdfs/DFSClient.java
src/test/java/org/apache/hadoop/hdfs/TestDistributedFileSystem.java
Author: daryn
Date: Tue Oct 23 15:03:53 2012
New Revision: 1401309
URL: http://svn.apache.org/viewvc?rev=1401309&view=rev
Log:
HDFS-4090. getFileChecksum() result incompatible when called against zero-byte files. (Kihwal Lee via daryn)
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/DFSClient.java
hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDistributedFileSystem.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=1401309&r1=1401308&r2=1401309&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt (original)
+++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt Tue Oct 23 15:03:53 2012
@@ -1881,6 +1881,9 @@ Release 0.23.5 - UNRELEASED
HDFS-3224. Bug in check for DN re-registration with different storage ID
(jlowe)
+ HDFS-4090. getFileChecksum() result incompatible when called against
+ zero-byte files. (Kihwal Lee via daryn)
+
Release 0.23.4 - UNRELEASED
INCOMPATIBLE CHANGES
Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DFSClient.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DFSClient.java?rev=1401309&r1=1401308&r2=1401309&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DFSClient.java (original)
+++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DFSClient.java Tue Oct 23 15:03:53 2012
@@ -1769,6 +1769,13 @@ public class DFSClient implements java.i
return new MD5MD5CRC32CastagnoliFileChecksum(bytesPerCRC,
crcPerBlock, fileMD5);
default:
+ // If there is no block allocated for the file,
+ // return one with the magic entry that matches what previous
+ // hdfs versions return.
+ if (locatedblocks.size() == 0) {
+ return new MD5MD5CRC32GzipFileChecksum(0, 0, fileMD5);
+ }
+
// we should never get here since the validity was checked
// when getCrcType() was called above.
return null;
Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDistributedFileSystem.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDistributedFileSystem.java?rev=1401309&r1=1401308&r2=1401309&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDistributedFileSystem.java (original)
+++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDistributedFileSystem.java Tue Oct 23 15:03:53 2012
@@ -542,6 +542,21 @@ public class TestDistributedFileSystem {
final FileChecksum webhdfs_qfoocs = webhdfs.getFileChecksum(webhdfsqualified);
System.out.println("webhdfs_qfoocs=" + webhdfs_qfoocs);
+ //create a zero byte file
+ final Path zeroByteFile = new Path(dir, "zeroByteFile" + n);
+ {
+ final FSDataOutputStream out = hdfs.create(zeroByteFile, false, buffer_size,
+ (short)2, block_size);
+ out.close();
+ }
+
+ // verify the magic val for zero byte files
+ {
+ final FileChecksum zeroChecksum = hdfs.getFileChecksum(zeroByteFile);
+ assertEquals(zeroChecksum.toString(),
+ "MD5-of-0MD5-of-0CRC32:70bc8f4b72a86921468bf8e8441dce51");
+ }
+
//write another file
final Path bar = new Path(dir, "bar" + n);
{