Author: szetszwo Date: Tue Nov 1 00:42:14 2011 New Revision: 1195738 URL: http://svn.apache.org/viewvc?rev=1195738&view=rev Log: svn merge -c 1195737 from branch-0.20-security for HDFS-2065. Modified: hadoop/common/branches/branch-0.20-security-205/ (props changed) hadoop/common/branches/branch-0.20-security-205/CHANGES.txt (contents, props changed) hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/DFSClient.java hadoop/common/branches/branch-0.20-security-205/src/test/org/apache/hadoop/hdfs/TestDistributedFileSystem.java Propchange: hadoop/common/branches/branch-0.20-security-205/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Tue Nov 1 00:42:14 2011 @@ -1,6 +1,6 @@ /hadoop/common/branches/branch-0.20:826138,826568,829987,831184,833001,880632,898713,909245,909723,960946,990003,1044225 /hadoop/common/branches/branch-0.20-append:955380,955398,955448,956329 -/hadoop/common/branches/branch-0.20-security:1170042,1170087,1170997,1171137,1171380,1171613,1171891,1171905,1172184,1172188,1172190,1172192,1173470,1174471,1175114,1176179,1176720,1177907,1179036,1179171,1179519,1179857,1183086,1183101,1183176,1183556,1186509,1187141,1189029,1189361,1190079,1190089,1190100 +/hadoop/common/branches/branch-0.20-security:1170042,1170087,1170997,1171137,1171380,1171613,1171891,1171905,1172184,1172188,1172190,1172192,1173470,1174471,1175114,1176179,1176720,1177907,1179036,1179171,1179519,1179857,1183086,1183101,1183176,1183556,1186509,1187141,1189029,1189361,1190079,1190089,1190100,1195737 /hadoop/common/branches/branch-0.20-security-203:1096071,1097011,1097249,1097269,1097281,1097966,1098816,1098819,1098823,1098827,1098832,1098839,1098854,1098863,1099088,1099191,1099324,1099330,1099333,1102071,1128115 /hadoop/common/branches/branch-0.20-security-204:1128390,1147228,1148069,1149316,1154413 /hadoop/core/branches/branch-0.19:713112 Modified: hadoop/common/branches/branch-0.20-security-205/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-205/CHANGES.txt?rev=1195738&r1=1195737&r2=1195738&view=diff ============================================================================== --- hadoop/common/branches/branch-0.20-security-205/CHANGES.txt (original) +++ hadoop/common/branches/branch-0.20-security-205/CHANGES.txt Tue Nov 1 00:42:14 2011 @@ -52,6 +52,9 @@ Release 0.20.205.1 - unreleased getFileStatus on non-existing files; fix bugs in getBlockLocations; and changed getFileChecksum json response root to "FileChecksum". (szetszwo) + HDFS-2065. Add null checks in DFSClient.getFileChecksum(..). (Uma + Maheswara Rao G via szetszwo) + Release 0.20.205.0 - 2011.10.06 NEW FEATURES Propchange: hadoop/common/branches/branch-0.20-security-205/CHANGES.txt ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Tue Nov 1 00:42:14 2011 @@ -1,6 +1,6 @@ /hadoop/common/branches/branch-0.20/CHANGES.txt:826138,826568,829987,831184,833001,880632,898713,909245,909723,960946,990003,1044225 /hadoop/common/branches/branch-0.20-append/CHANGES.txt:955380,955398,955448,956329 -/hadoop/common/branches/branch-0.20-security/CHANGES.txt:1170042,1170087,1170997,1171137,1171181,1171380,1171613,1171891,1171905,1172184,1172188,1172190,1172192,1173470,1173843,1174326,1174471,1174476,1174482,1175114,1176179,1176182,1176270,1176276,1176675,1176720,1177031,1177036,1177098,1177101,1177907,1178074,1179036,1179171,1179471,1179519,1179713,1179722,1179857,1179919,1183086,1183101,1183176,1183556,1186509,1187141,1189029,1189361,1190079,1190089,1190100 +/hadoop/common/branches/branch-0.20-security/CHANGES.txt:1170042,1170087,1170997,1171137,1171181,1171380,1171613,1171891,1171905,1172184,1172188,1172190,1172192,1173470,1173843,1174326,1174471,1174476,1174482,1175114,1176179,1176182,1176270,1176276,1176675,1176720,1177031,1177036,1177098,1177101,1177907,1178074,1179036,1179171,1179471,1179519,1179713,1179722,1179857,1179919,1183086,1183101,1183176,1183556,1186509,1187141,1189029,1189361,1190079,1190089,1190100,1195737 /hadoop/common/branches/branch-0.20-security-203/CHANGES.txt:1096071,1097011,1097249,1097269,1097281,1097966,1098816,1098819,1098823,1098827,1098832,1098839,1098854,1098863,1099088,1099191,1099324,1099330,1099333,1102071,1128115 /hadoop/common/branches/branch-0.20-security-204/CHANGES.txt:1128390,1147228,1148069,1149316,1154413,1159730,1161741 /hadoop/core/branches/branch-0.18/CHANGES.txt:727226 Modified: hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/DFSClient.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/DFSClient.java?rev=1195738&r1=1195737&r2=1195738&view=diff ============================================================================== --- hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/DFSClient.java (original) +++ hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/DFSClient.java Tue Nov 1 00:42:14 2011 @@ -25,7 +25,6 @@ import org.apache.hadoop.fs.*; import org.apache.hadoop.fs.permission.FsPermission; import org.apache.hadoop.ipc.*; import org.apache.hadoop.net.NetUtils; -import org.apache.hadoop.net.NodeBase; import org.apache.hadoop.classification.InterfaceAudience; import org.apache.hadoop.conf.*; import org.apache.hadoop.hdfs.DistributedFileSystem.DiskStatus; @@ -780,8 +779,11 @@ public class DFSClient implements FSCons ClientProtocol namenode, SocketFactory socketFactory, int socketTimeout ) throws IOException { //get all block locations - List locatedblocks - = callGetBlockLocations(namenode, src, 0, Long.MAX_VALUE).getLocatedBlocks(); + LocatedBlocks blockLocations = callGetBlockLocations(namenode, src, 0, Long.MAX_VALUE); + if (null == blockLocations) { + throw new FileNotFoundException("File does not exist: " + src); + } + List locatedblocks = blockLocations.getLocatedBlocks(); final DataOutputBuffer md5out = new DataOutputBuffer(); int bytesPerCRC = 0; long crcPerBlock = 0; @@ -791,8 +793,11 @@ public class DFSClient implements FSCons //get block checksum for each block for(int i = 0; i < locatedblocks.size(); i++) { if (refetchBlocks) { // refetch to get fresh tokens - locatedblocks = callGetBlockLocations(namenode, src, 0, Long.MAX_VALUE) - .getLocatedBlocks(); + blockLocations = callGetBlockLocations(namenode, src, 0, Long.MAX_VALUE); + if (null == blockLocations) { + throw new FileNotFoundException("File does not exist: " + src); + } + locatedblocks = blockLocations.getLocatedBlocks(); refetchBlocks = false; } LocatedBlock lb = locatedblocks.get(i); Modified: hadoop/common/branches/branch-0.20-security-205/src/test/org/apache/hadoop/hdfs/TestDistributedFileSystem.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-205/src/test/org/apache/hadoop/hdfs/TestDistributedFileSystem.java?rev=1195738&r1=1195737&r2=1195738&view=diff ============================================================================== --- hadoop/common/branches/branch-0.20-security-205/src/test/org/apache/hadoop/hdfs/TestDistributedFileSystem.java (original) +++ hadoop/common/branches/branch-0.20-security-205/src/test/org/apache/hadoop/hdfs/TestDistributedFileSystem.java Tue Nov 1 00:42:14 2011 @@ -23,6 +23,7 @@ import static org.junit.Assert.assertFal import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; +import java.io.FileNotFoundException; import java.io.IOException; import java.net.URI; import java.security.PrivilegedExceptionAction; @@ -255,6 +256,25 @@ public class TestDistributedFileSystem { final UserGroupInformation ugi = UserGroupInformation.createUserForTesting( current.getShortUserName() + "x", new String[]{"user"}); + try { + ((DistributedFileSystem) hdfs).getFileChecksum(new Path( + "/test/TestNonExistingFile")); + fail("Expecting FileNotFoundException"); + } catch (FileNotFoundException e) { + assertTrue("Not throwing the intended exception message", e.getMessage() + .contains("File does not exist: /test/TestNonExistingFile")); + } + + try { + Path path = new Path("/test/TestExistingDir/"); + hdfs.mkdirs(path); + ((DistributedFileSystem) hdfs).getFileChecksum(path); + fail("Expecting FileNotFoundException"); + } catch (FileNotFoundException e) { + assertTrue("Not throwing the intended exception message", e.getMessage() + .contains("File does not exist: /test/TestExistingDir")); + } + //hftp final String hftpuri = "hftp://" + nnAddr; System.out.println("hftpuri=" + hftpuri);