Modified: hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/main/native/fuse-dfs/fuse_init.c URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/main/native/fuse-dfs/fuse_init.c?rev=1411007&r1=1411006&r2=1411007&view=diff ============================================================================== --- hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/main/native/fuse-dfs/fuse_init.c (original) +++ hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/main/native/fuse-dfs/fuse_init.c Sun Nov 18 22:31:28 2012 @@ -114,7 +114,6 @@ void *dfs_init(void) // initialize the context dfs->debug = options.debug; - dfs->read_only = options.read_only; dfs->usetrash = options.usetrash; dfs->protectedpaths = NULL; dfs->rdbuffer_size = options.rdbuffer_size;
Modified: hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/main/proto/ClientNamenodeProtocol.proto URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/main/proto/ClientNamenodeProtocol.proto?rev=1411007&r1=1411006&r2=1411007&view=diff ============================================================================== --- hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/main/proto/ClientNamenodeProtocol.proto (original) +++ hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/main/proto/ClientNamenodeProtocol.proto Sun Nov 18 22:31:28 2012 @@ -265,6 +265,7 @@ enum SafeModeActionProto { message SetSafeModeRequestProto { required SafeModeActionProto action = 1; + optional bool checked = 2 [default = false]; } message SetSafeModeResponseProto { Propchange: hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/datanode/ ------------------------------------------------------------------------------ Merged /hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/datanode:r1408927-1410997 Propchange: hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/hdfs/ ------------------------------------------------------------------------------ Merged /hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/hdfs:r1408927-1410997 Propchange: hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/secondary/ ------------------------------------------------------------------------------ Merged /hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/secondary:r1408927-1410997 Propchange: hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/hdfs/ ------------------------------------------------------------------------------ Merged /hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/hdfs:r1408927-1410997 Modified: hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDFSShell.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDFSShell.java?rev=1411007&r1=1411006&r2=1411007&view=diff ============================================================================== --- hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDFSShell.java (original) +++ hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDFSShell.java Sun Nov 18 22:31:28 2012 @@ -452,6 +452,15 @@ public class TestDFSShell { assertEquals(" no error ", 0, ret); assertTrue("empty path specified", (returned.lastIndexOf("empty string") == -1)); + out.reset(); + argv = new String[3]; + argv[0] = "-test"; + argv[1] = "-d"; + argv[2] = "/no/such/dir"; + ret = ToolRunner.run(shell, argv); + returned = out.toString(); + assertEquals(" -test -d wrong result ", 1, ret); + assertTrue(returned.isEmpty()); } finally { if (bak != null) { System.setErr(bak); Modified: hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestFetchImage.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestFetchImage.java?rev=1411007&r1=1411006&r2=1411007&view=diff ============================================================================== --- hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestFetchImage.java (original) +++ hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestFetchImage.java Sun Nov 18 22:31:28 2012 @@ -61,9 +61,11 @@ public class TestFetchImage { fs.mkdirs(new Path("/foo2")); fs.mkdirs(new Path("/foo3")); - cluster.getNameNodeRpc().setSafeMode(SafeModeAction.SAFEMODE_ENTER); + cluster.getNameNodeRpc() + .setSafeMode(SafeModeAction.SAFEMODE_ENTER, false); cluster.getNameNodeRpc().saveNamespace(); - cluster.getNameNodeRpc().setSafeMode(SafeModeAction.SAFEMODE_LEAVE); + cluster.getNameNodeRpc() + .setSafeMode(SafeModeAction.SAFEMODE_LEAVE, false); runFetchImage(dfsAdmin, cluster); } finally { Modified: hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestLeaseRecovery.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestLeaseRecovery.java?rev=1411007&r1=1411006&r2=1411007&view=diff ============================================================================== --- hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestLeaseRecovery.java (original) +++ hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestLeaseRecovery.java Sun Nov 18 22:31:28 2012 @@ -133,14 +133,16 @@ public class TestLeaseRecovery { filestr = "/foo.safemode"; filepath = new Path(filestr); dfs.create(filepath, (short)1); - cluster.getNameNodeRpc().setSafeMode(HdfsConstants.SafeModeAction.SAFEMODE_ENTER); + cluster.getNameNodeRpc().setSafeMode( + HdfsConstants.SafeModeAction.SAFEMODE_ENTER, false); assertTrue(dfs.dfs.exists(filestr)); DFSTestUtil.waitReplication(dfs, filepath, (short)1); waitLeaseRecovery(cluster); // verify that we still cannot recover the lease LeaseManager lm = NameNodeAdapter.getLeaseManager(cluster.getNamesystem()); assertTrue("Found " + lm.countLease() + " lease, expected 1", lm.countLease() == 1); - cluster.getNameNodeRpc().setSafeMode(HdfsConstants.SafeModeAction.SAFEMODE_LEAVE); + cluster.getNameNodeRpc().setSafeMode( + HdfsConstants.SafeModeAction.SAFEMODE_LEAVE, false); } finally { if (cluster != null) {cluster.shutdown();} Modified: hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestSeekBug.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestSeekBug.java?rev=1411007&r1=1411006&r2=1411007&view=diff ============================================================================== --- hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestSeekBug.java (original) +++ hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestSeekBug.java Sun Nov 18 22:31:28 2012 @@ -133,7 +133,69 @@ public class TestSeekBug { cluster.shutdown(); } } - + + /** + * Test (expected to throw IOE) for negative + * <code>FSDataInpuStream#seek</code> argument + */ + @Test (expected=IOException.class) + public void testNegativeSeek() throws IOException { + Configuration conf = new HdfsConfiguration(); + MiniDFSCluster cluster = new MiniDFSCluster.Builder(conf).build(); + FileSystem fs = cluster.getFileSystem(); + try { + Path seekFile = new Path("seekboundaries.dat"); + DFSTestUtil.createFile( + fs, + seekFile, + ONEMB, + ONEMB, + fs.getDefaultBlockSize(seekFile), + fs.getDefaultReplication(seekFile), + seed); + FSDataInputStream stream = fs.open(seekFile); + // Perform "safe seek" (expected to pass) + stream.seek(65536); + assertEquals(65536, stream.getPos()); + // expect IOE for this call + stream.seek(-73); + } finally { + fs.close(); + cluster.shutdown(); + } + } + + /** + * Test (expected to throw IOE) for <code>FSDataInpuStream#seek</code> + * when the position argument is larger than the file size. + */ + @Test (expected=IOException.class) + public void testSeekPastFileSize() throws IOException { + Configuration conf = new HdfsConfiguration(); + MiniDFSCluster cluster = new MiniDFSCluster.Builder(conf).build(); + FileSystem fs = cluster.getFileSystem(); + try { + Path seekFile = new Path("seekboundaries.dat"); + DFSTestUtil.createFile( + fs, + seekFile, + ONEMB, + ONEMB, + fs.getDefaultBlockSize(seekFile), + fs.getDefaultReplication(seekFile), + seed); + FSDataInputStream stream = fs.open(seekFile); + // Perform "safe seek" (expected to pass) + stream.seek(65536); + assertEquals(65536, stream.getPos()); + // expect IOE for this call + stream.seek(ONEMB + ONEMB + ONEMB); + } finally { + fs.close(); + cluster.shutdown(); + } + } + /** * Tests if the seek bug exists in FSDataInputStream in LocalFS. */ Modified: hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/UpgradeUtilities.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/UpgradeUtilities.java?rev=1411007&r1=1411006&r2=1411007&view=diff ============================================================================== --- hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/UpgradeUtilities.java (original) +++ hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/UpgradeUtilities.java Sun Nov 18 22:31:28 2012 @@ -142,9 +142,9 @@ public class UpgradeUtilities { writeFile(fs, new Path(baseDir, "file2"), buffer, bufferSize); // save image - namenode.setSafeMode(SafeModeAction.SAFEMODE_ENTER); + namenode.setSafeMode(SafeModeAction.SAFEMODE_ENTER, false); namenode.saveNamespace(); - namenode.setSafeMode(SafeModeAction.SAFEMODE_LEAVE); + namenode.setSafeMode(SafeModeAction.SAFEMODE_LEAVE, false); // write more files writeFile(fs, new Path(baseDir, "file3"), buffer, bufferSize); Modified: hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/NNThroughputBenchmark.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/NNThroughputBenchmark.java?rev=1411007&r1=1411006&r2=1411007&view=diff ============================================================================== --- hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/NNThroughputBenchmark.java (original) +++ hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/NNThroughputBenchmark.java Sun Nov 18 22:31:28 2012 @@ -278,7 +278,8 @@ public class NNThroughputBenchmark { } void cleanUp() throws IOException { - nameNodeProto.setSafeMode(HdfsConstants.SafeModeAction.SAFEMODE_LEAVE); + nameNodeProto.setSafeMode(HdfsConstants.SafeModeAction.SAFEMODE_LEAVE, + false); if(!keepResults) nameNodeProto.delete(getBaseDir(), true); } @@ -479,7 +480,8 @@ public class NNThroughputBenchmark { @Override long executeOp(int daemonId, int inputIdx, String ignore) throws IOException { - nameNodeProto.setSafeMode(HdfsConstants.SafeModeAction.SAFEMODE_LEAVE); + nameNodeProto.setSafeMode(HdfsConstants.SafeModeAction.SAFEMODE_LEAVE, + false); long start = Time.now(); nameNodeProto.delete(BASE_DIR_NAME, true); long end = Time.now(); @@ -547,7 +549,8 @@ public class NNThroughputBenchmark { @Override void generateInputs(int[] opsPerThread) throws IOException { assert opsPerThread.length == numThreads : "Error opsPerThread.length"; - nameNodeProto.setSafeMode(HdfsConstants.SafeModeAction.SAFEMODE_LEAVE); + nameNodeProto.setSafeMode(HdfsConstants.SafeModeAction.SAFEMODE_LEAVE, + false); // int generatedFileIdx = 0; LOG.info("Generate " + numOpsRequired + " intputs for " + getOpName()); fileNames = new String[numThreads][]; @@ -1035,7 +1038,8 @@ public class NNThroughputBenchmark { FileNameGenerator nameGenerator; nameGenerator = new FileNameGenerator(getBaseDir(), 100); String clientName = getClientName(007); - nameNodeProto.setSafeMode(HdfsConstants.SafeModeAction.SAFEMODE_LEAVE); + nameNodeProto.setSafeMode(HdfsConstants.SafeModeAction.SAFEMODE_LEAVE, + false); for(int idx=0; idx < nrFiles; idx++) { String fileName = nameGenerator.getNextFileName("ThroughputBench"); nameNodeProto.create(fileName, FsPermission.getDefault(), clientName, Modified: hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestCheckpoint.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestCheckpoint.java?rev=1411007&r1=1411006&r2=1411007&view=diff ============================================================================== --- hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestCheckpoint.java (original) +++ hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestCheckpoint.java Sun Nov 18 22:31:28 2012 @@ -1828,11 +1828,11 @@ public class TestCheckpoint { // Now primary NN saves namespace 3 times NamenodeProtocols nn = cluster.getNameNodeRpc(); - nn.setSafeMode(SafeModeAction.SAFEMODE_ENTER); + nn.setSafeMode(SafeModeAction.SAFEMODE_ENTER, false); for (int i = 0; i < 3; i++) { nn.saveNamespace(); } - nn.setSafeMode(SafeModeAction.SAFEMODE_LEAVE); + nn.setSafeMode(SafeModeAction.SAFEMODE_LEAVE, false); // Now the secondary tries to checkpoint again with its // old image in memory. @@ -1919,9 +1919,9 @@ public class TestCheckpoint { // Perform a saveNamespace, so that the NN has a new fsimage, and the 2NN // therefore needs to download a new fsimage the next time it performs a // checkpoint. - cluster.getNameNodeRpc().setSafeMode(SafeModeAction.SAFEMODE_ENTER); + cluster.getNameNodeRpc().setSafeMode(SafeModeAction.SAFEMODE_ENTER, false); cluster.getNameNodeRpc().saveNamespace(); - cluster.getNameNodeRpc().setSafeMode(SafeModeAction.SAFEMODE_LEAVE); + cluster.getNameNodeRpc().setSafeMode(SafeModeAction.SAFEMODE_LEAVE, false); // Ensure that the 2NN can still perform a checkpoint. secondary.doCheckpoint(); @@ -1966,9 +1966,9 @@ public class TestCheckpoint { // Perform a saveNamespace, so that the NN has a new fsimage, and the 2NN // therefore needs to download a new fsimage the next time it performs a // checkpoint. - cluster.getNameNodeRpc().setSafeMode(SafeModeAction.SAFEMODE_ENTER); + cluster.getNameNodeRpc().setSafeMode(SafeModeAction.SAFEMODE_ENTER, false); cluster.getNameNodeRpc().saveNamespace(); - cluster.getNameNodeRpc().setSafeMode(SafeModeAction.SAFEMODE_LEAVE); + cluster.getNameNodeRpc().setSafeMode(SafeModeAction.SAFEMODE_LEAVE, false); // Ensure that the 2NN can still perform a checkpoint. secondary.doCheckpoint(); Modified: hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestEditLog.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestEditLog.java?rev=1411007&r1=1411006&r2=1411007&view=diff ============================================================================== --- hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestEditLog.java (original) +++ hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestEditLog.java Sun Nov 18 22:31:28 2012 @@ -447,7 +447,7 @@ public class TestEditLog { // Now ask to sync edit from B, which should sync both edits. doCallLogSync(threadB, editLog); - assertEquals("logSync from second thread should bump txid up to 2", + assertEquals("logSync from second thread should bump txid up to 3", 3, editLog.getSyncTxId()); // Now ask to sync edit from A, which was already batched in - thus Modified: hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFSDirectory.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFSDirectory.java?rev=1411007&r1=1411006&r2=1411007&view=diff ============================================================================== --- hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFSDirectory.java (original) +++ hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFSDirectory.java Sun Nov 18 22:31:28 2012 @@ -81,7 +81,6 @@ public class TestFSDirectory { DFSTestUtil.createFile(hdfs, file5, 1024, REPLICATION, seed); hdfs.mkdirs(sub2); - } @After @@ -132,6 +131,16 @@ public class TestFSDirectory { Assert.assertTrue(diff.contains(file4.getName())); } + @Test + public void testReset() throws Exception { + fsdir.reset(); + Assert.assertFalse(fsdir.isReady()); + final INodeDirectory root = (INodeDirectory) fsdir.getINode("/"); + Assert.assertTrue(root.getChildrenList(null).isEmpty()); + fsdir.imageLoadComplete(); + Assert.assertTrue(fsdir.isReady()); + } + static void checkClassName(String line) { int i = line.lastIndexOf('('); int j = line.lastIndexOf('@'); Modified: hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestListCorruptFileBlocks.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestListCorruptFileBlocks.java?rev=1411007&r1=1411006&r2=1411007&view=diff ============================================================================== --- hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestListCorruptFileBlocks.java (original) +++ hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestListCorruptFileBlocks.java Sun Nov 18 22:31:28 2012 @@ -149,8 +149,8 @@ public class TestListCorruptFileBlocks { conf.setFloat(DFSConfigKeys.DFS_NAMENODE_REPL_QUEUE_THRESHOLD_PCT_KEY, 0f); cluster = new MiniDFSCluster.Builder(conf).waitSafeMode(false).build(); - cluster.getNameNodeRpc(). - setSafeMode(HdfsConstants.SafeModeAction.SAFEMODE_LEAVE); + cluster.getNameNodeRpc().setSafeMode( + HdfsConstants.SafeModeAction.SAFEMODE_LEAVE, false); FileSystem fs = cluster.getFileSystem(); // create two files with one block each @@ -247,8 +247,8 @@ public class TestListCorruptFileBlocks { cluster.getNameNode().isInSafeMode()); // now leave safe mode so that we can clean up - cluster.getNameNodeRpc(). - setSafeMode(HdfsConstants.SafeModeAction.SAFEMODE_LEAVE); + cluster.getNameNodeRpc().setSafeMode( + HdfsConstants.SafeModeAction.SAFEMODE_LEAVE, false); util.cleanup(fs, "/srcdat10"); } catch (Exception e) { Modified: hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNNStorageRetentionFunctional.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNNStorageRetentionFunctional.java?rev=1411007&r1=1411006&r2=1411007&view=diff ============================================================================== --- hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNNStorageRetentionFunctional.java (original) +++ hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNNStorageRetentionFunctional.java Sun Nov 18 22:31:28 2012 @@ -149,8 +149,8 @@ public class TestNNStorageRetentionFunct private static void doSaveNamespace(NameNode nn) throws IOException { LOG.info("Saving namespace..."); - nn.getRpcServer().setSafeMode(SafeModeAction.SAFEMODE_ENTER); + nn.getRpcServer().setSafeMode(SafeModeAction.SAFEMODE_ENTER, false); nn.getRpcServer().saveNamespace(); - nn.getRpcServer().setSafeMode(SafeModeAction.SAFEMODE_LEAVE); + nn.getRpcServer().setSafeMode(SafeModeAction.SAFEMODE_LEAVE, false); } } Modified: hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameCache.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameCache.java?rev=1411007&r1=1411006&r2=1411007&view=diff ============================================================================== --- hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameCache.java (original) +++ hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameCache.java Sun Nov 18 22:31:28 2012 @@ -58,6 +58,17 @@ public class TestNameCache { for (String s : notMatching) { verifyNameReuse(cache, s, false); } + + cache.reset(); + cache.initialized(); + + for (String s : matching) { + verifyNameReuse(cache, s, false); + } + + for (String s : notMatching) { + verifyNameReuse(cache, s, false); + } } private void verifyNameReuse(NameCache<String> cache, String s, boolean reused) { Modified: hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestStartup.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestStartup.java?rev=1411007&r1=1411006&r2=1411007&view=diff ============================================================================== --- hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestStartup.java (original) +++ hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestStartup.java Sun Nov 18 22:31:28 2012 @@ -384,7 +384,7 @@ public class TestStartup { new PermissionStatus("hairong", null, FsPermission.getDefault()), true); NamenodeProtocols nnRpc = namenode.getRpcServer(); assertTrue(nnRpc.getFileInfo("/test").isDir()); - nnRpc.setSafeMode(SafeModeAction.SAFEMODE_ENTER); + nnRpc.setSafeMode(SafeModeAction.SAFEMODE_ENTER, false); nnRpc.saveNamespace(); namenode.stop(); namenode.join(); @@ -414,7 +414,7 @@ public class TestStartup { NameNode namenode = new NameNode(conf); NamenodeProtocols nnRpc = namenode.getRpcServer(); assertTrue(nnRpc.getFileInfo("/test").isDir()); - nnRpc.setSafeMode(SafeModeAction.SAFEMODE_ENTER); + nnRpc.setSafeMode(SafeModeAction.SAFEMODE_ENTER, false); nnRpc.saveNamespace(); namenode.stop(); namenode.join(); Modified: hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestHASafeMode.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestHASafeMode.java?rev=1411007&r1=1411006&r2=1411007&view=diff ============================================================================== --- hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestHASafeMode.java (original) +++ hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestHASafeMode.java Sun Nov 18 22:31:28 2012 @@ -17,10 +17,11 @@ */ package org.apache.hadoop.hdfs.server.namenode.ha; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.*; import java.io.IOException; +import java.net.InetSocketAddress; +import java.net.URI; import java.util.List; import org.apache.commons.logging.Log; @@ -34,6 +35,7 @@ import org.apache.hadoop.ha.HAServicePro import org.apache.hadoop.ha.HAServiceProtocol.StateChangeRequestInfo; import org.apache.hadoop.hdfs.DFSConfigKeys; import org.apache.hadoop.hdfs.DFSTestUtil; +import org.apache.hadoop.hdfs.DistributedFileSystem; import org.apache.hadoop.hdfs.MiniDFSCluster; import org.apache.hadoop.hdfs.MiniDFSNNTopology; import org.apache.hadoop.hdfs.protocol.HdfsConstants.SafeModeAction; @@ -43,6 +45,8 @@ import org.apache.hadoop.hdfs.server.nam import org.apache.hadoop.hdfs.server.namenode.NameNode; import org.apache.hadoop.hdfs.server.namenode.NameNodeAdapter; import org.apache.hadoop.io.IOUtils; +import org.apache.hadoop.ipc.RemoteException; +import org.apache.hadoop.ipc.StandbyException; import org.apache.hadoop.test.GenericTestUtils; import org.apache.log4j.Level; import org.junit.After; @@ -603,9 +607,9 @@ public class TestHASafeMode { HATestUtil.waitForStandbyToCatchUp(nn0, nn1); // get some blocks in the SBN's image - nn1.getRpcServer().setSafeMode(SafeModeAction.SAFEMODE_ENTER); + nn1.getRpcServer().setSafeMode(SafeModeAction.SAFEMODE_ENTER, false); NameNodeAdapter.saveNamespace(nn1); - nn1.getRpcServer().setSafeMode(SafeModeAction.SAFEMODE_LEAVE); + nn1.getRpcServer().setSafeMode(SafeModeAction.SAFEMODE_LEAVE, false); // and some blocks in the edit logs DFSTestUtil.createFile(fs, new Path("/test2"), 15*BLOCK_SIZE, (short)3, 1L); @@ -664,5 +668,50 @@ public class TestHASafeMode { string + "\n" + "==================================================\n\n"); } + + /** + * DFS#isInSafeMode should check the ActiveNNs safemode in HA enabled cluster. HDFS-3507 + * + * @throws Exception + */ + @Test + public void testIsInSafemode() throws Exception { + // Check for the standby nn without client failover. + NameNode nn2 = cluster.getNameNode(1); + assertTrue("nn2 should be in standby state", nn2.isStandbyState()); + + InetSocketAddress nameNodeAddress = nn2.getNameNodeAddress(); + Configuration conf = new Configuration(); + DistributedFileSystem dfs = new DistributedFileSystem(); + try { + dfs.initialize( + URI.create("hdfs://" + nameNodeAddress.getHostName() + ":" + + nameNodeAddress.getPort()), conf); + dfs.isInSafeMode(); + fail("StandBy should throw exception for isInSafeMode"); + } catch (IOException e) { + if (e instanceof RemoteException) { + IOException sbExcpetion = ((RemoteException) e).unwrapRemoteException(); + assertTrue("StandBy nn should not support isInSafeMode", + sbExcpetion instanceof StandbyException); + } else { + throw e; + } + } finally { + if (null != dfs) { + dfs.close(); + } + } + + // Check with Client FailOver + cluster.transitionToStandby(0); + cluster.transitionToActive(1); + cluster.getNameNodeRpc(1).setSafeMode(SafeModeAction.SAFEMODE_ENTER, false); + DistributedFileSystem dfsWithFailOver = (DistributedFileSystem) fs; + assertTrue("ANN should be in SafeMode", dfsWithFailOver.isInSafeMode()); + + cluster.getNameNodeRpc(1).setSafeMode(SafeModeAction.SAFEMODE_LEAVE, false); + assertFalse("ANN should be out of SafeMode", dfsWithFailOver.isInSafeMode()); + } } Modified: hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/metrics/TestNameNodeMetrics.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/metrics/TestNameNodeMetrics.java?rev=1411007&r1=1411006&r2=1411007&view=diff ============================================================================== --- hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/metrics/TestNameNodeMetrics.java (original) +++ hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/metrics/TestNameNodeMetrics.java Sun Nov 18 22:31:28 2012 @@ -403,9 +403,9 @@ public class TestNameNodeMetrics { assertGauge("TransactionsSinceLastCheckpoint", 4L, getMetrics(NS_METRICS)); assertGauge("TransactionsSinceLastLogRoll", 1L, getMetrics(NS_METRICS)); - cluster.getNameNodeRpc().setSafeMode(SafeModeAction.SAFEMODE_ENTER); + cluster.getNameNodeRpc().setSafeMode(SafeModeAction.SAFEMODE_ENTER, false); cluster.getNameNodeRpc().saveNamespace(); - cluster.getNameNodeRpc().setSafeMode(SafeModeAction.SAFEMODE_LEAVE); + cluster.getNameNodeRpc().setSafeMode(SafeModeAction.SAFEMODE_LEAVE, false); long newLastCkptTime = MetricsAsserts.getLongGauge("LastCheckpointTime", getMetrics(NS_METRICS)); Modified: hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/TestOfflineImageViewer.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/TestOfflineImageViewer.java?rev=1411007&r1=1411006&r2=1411007&view=diff ============================================================================== --- hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/TestOfflineImageViewer.java (original) +++ hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/TestOfflineImageViewer.java Sun Nov 18 22:31:28 2012 @@ -133,7 +133,8 @@ public class TestOfflineImageViewer { } // Write results to the fsimage file - cluster.getNameNodeRpc().setSafeMode(SafeModeAction.SAFEMODE_ENTER); + cluster.getNameNodeRpc() + .setSafeMode(SafeModeAction.SAFEMODE_ENTER, false); cluster.getNameNodeRpc().saveNamespace(); // Determine location of fsimage file Modified: hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/web/resources/TestParam.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/web/resources/TestParam.java?rev=1411007&r1=1411006&r2=1411007&view=diff ============================================================================== --- hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/web/resources/TestParam.java (original) +++ hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/web/resources/TestParam.java Sun Nov 18 22:31:28 2012 @@ -26,6 +26,9 @@ import org.apache.hadoop.hdfs.DFSConfigK import org.junit.Assert; import org.junit.Test; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + public class TestParam { public static final Log LOG = LogFactory.getLog(TestParam.class); @@ -234,4 +237,43 @@ public class TestParam { final String actual = Param.toSortedString(sep, equalParam, ampParam); Assert.assertEquals(expected, actual); } + + @Test + public void userNameEmpty() { + UserParam userParam = new UserParam(""); + assertNull(userParam.getValue()); + } + + @Test(expected = IllegalArgumentException.class) + public void userNameTooLong() { + new UserParam("a123456789012345678901234567890x"); + } + + @Test(expected = IllegalArgumentException.class) + public void userNameInvalidStart() { + new UserParam("1x"); + } + + @Test(expected = IllegalArgumentException.class) + public void userNameInvalidDollarSign() { + new UserParam("1$x"); + } + + @Test + public void userNameMinLength() { + UserParam userParam = new UserParam("a"); + assertNotNull(userParam.getValue()); + } + + @Test + public void userNameMaxLength() { + UserParam userParam = new UserParam("a123456789012345678901234567890"); + assertNotNull(userParam.getValue()); + } + + @Test + public void userNameValidDollarSign() { + UserParam userParam = new UserParam("a$"); + assertNotNull(userParam.getValue()); + } } Modified: hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/resources/testHDFSConf.xml URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/resources/testHDFSConf.xml?rev=1411007&r1=1411006&r2=1411007&view=diff ============================================================================== --- hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/resources/testHDFSConf.xml (original) +++ hadoop/common/branches/HDFS-2802/hadoop-hdfs-project/hadoop-hdfs/src/test/resources/testHDFSConf.xml Sun Nov 18 22:31:28 2012 @@ -6264,8 +6264,8 @@ </cleanup-commands> <comparators> <comparator> - <type>RegexpComparator</type> - <expected-output>^test: `/dir0/file': No such file or directory</expected-output> + <type>ExactComparator</type> + <expected-output></expected-output> </comparator> </comparators> </test> @@ -6280,8 +6280,8 @@ </cleanup-commands> <comparators> <comparator> - <type>RegexpComparator</type> - <expected-output>^test: `file': No such file or directory</expected-output> + <type>ExactComparator</type> + <expected-output></expected-output> </comparator> </comparators> </test> @@ -6296,8 +6296,8 @@ </cleanup-commands> <comparators> <comparator> - <type>RegexpComparator</type> - <expected-output>^test: `/dir': No such file or directory</expected-output> + <type>ExactComparator</type> + <expected-output></expected-output> </comparator> </comparators> </test> @@ -6312,8 +6312,8 @@ </cleanup-commands> <comparators> <comparator> - <type>RegexpComparator</type> - <expected-output>^test: `dir0': No such file or directory</expected-output> + <type>ExactComparator</type> + <expected-output></expected-output> </comparator> </comparators> </test> @@ -6328,8 +6328,8 @@ </cleanup-commands> <comparators> <comparator> - <type>RegexpComparator</type> - <expected-output>^test: `hdfs:///dir0/file': No such file or directory</expected-output> + <type>ExactComparator</type> + <expected-output></expected-output> </comparator> </comparators> </test> @@ -6344,8 +6344,8 @@ </cleanup-commands> <comparators> <comparator> - <type>RegexpComparator</type> - <expected-output>^test: `hdfs:///dir': No such file or directory</expected-output> + <type>ExactComparator</type> + <expected-output></expected-output> </comparator> </comparators> </test> @@ -6360,8 +6360,8 @@ </cleanup-commands> <comparators> <comparator> - <type>RegexpComparator</type> - <expected-output>^test: `hdfs://\w+[-.a-z0-9]*:[0-9]+/dir0/file': No such file or directory</expected-output> + <type>ExactComparator</type> + <expected-output></expected-output> </comparator> </comparators> </test> @@ -6376,8 +6376,8 @@ </cleanup-commands> <comparators> <comparator> - <type>RegexpComparator</type> - <expected-output>^test: `hdfs://\w+[-.a-z0-9]*:[0-9]+/dir': No such file or directory</expected-output> + <type>ExactComparator</type> + <expected-output></expected-output> </comparator> </comparators> </test>
