Repository: hadoop Updated Branches: refs/heads/branch-2 8104d5226 -> 35816c438
Revert HDFS-7808. Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/35816c43 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/35816c43 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/35816c43 Branch: refs/heads/branch-2 Commit: 35816c438da2685b2298cd73b26b716d185bcbe4 Parents: 8104d52 Author: Haohui Mai <[email protected]> Authored: Wed Apr 8 15:59:55 2015 -0700 Committer: Haohui Mai <[email protected]> Committed: Wed Apr 8 16:00:10 2015 -0700 ---------------------------------------------------------------------- hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 3 --- .../apache/hadoop/hdfs/tools/DFSHAAdmin.java | 20 ++++++++++++++++++++ .../hadoop/hdfs/tools/TestDFSHAAdmin.java | 20 ++++++++++++++++++++ .../hdfs/tools/TestDFSHAAdminMiniCluster.java | 3 +++ 4 files changed, 43 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/35816c43/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index 32957a5..4612a1d 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -928,9 +928,6 @@ Release 2.7.0 - UNRELEASED HDFS-6662. WebHDFS cannot open a file if its path contains "%". (Gerson Carlos via wheat9) - HDFS-7808. Remove obsolete -ns options in in DFSHAAdmin.java. - (Arshad Mohammad via wheat9) - HDFS-7788. Post-2.6 namenode may not start up with an image containing inodes created with an old release. (Rushabh Shah via kihwal) http://git-wip-us.apache.org/repos/asf/hadoop/blob/35816c43/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/DFSHAAdmin.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/DFSHAAdmin.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/DFSHAAdmin.java index 6b6fb30..e9c611d 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/DFSHAAdmin.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/DFSHAAdmin.java @@ -18,6 +18,7 @@ package org.apache.hadoop.hdfs.tools; import java.io.PrintStream; +import java.util.Arrays; import java.util.Collection; import org.apache.commons.logging.Log; @@ -97,6 +98,25 @@ public class DFSHAAdmin extends HAAdmin { printUsage(errOut); return -1; } + + int i = 0; + String cmd = argv[i++]; + + if ("-ns".equals(cmd)) { + if (i == argv.length) { + errOut.println("Missing nameservice ID"); + printUsage(errOut); + return -1; + } + nameserviceId = argv[i++]; + if (i >= argv.length) { + errOut.println("Missing command"); + printUsage(errOut); + return -1; + } + argv = Arrays.copyOfRange(argv, i, argv.length); + } + return super.runCmd(argv); } http://git-wip-us.apache.org/repos/asf/hadoop/blob/35816c43/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/TestDFSHAAdmin.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/TestDFSHAAdmin.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/TestDFSHAAdmin.java index 8ecc71a..33da4d4 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/TestDFSHAAdmin.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/TestDFSHAAdmin.java @@ -147,6 +147,17 @@ public class TestDFSHAAdmin { } @Test + public void testNameserviceOption() throws Exception { + assertEquals(-1, runTool("-ns")); + assertOutputContains("Missing nameservice ID"); + assertEquals(-1, runTool("-ns", "ns1")); + assertOutputContains("Missing command"); + // "ns1" isn't defined but we check this lazily and help doesn't use the ns + assertEquals(0, runTool("-ns", "ns1", "-help", "transitionToActive")); + assertOutputContains("Transitions the service into Active"); + } + + @Test public void testNamenodeResolution() throws Exception { Mockito.doReturn(STANDBY_READY_RESULT).when(mockProtocol).getServiceStatus(); assertEquals(0, runTool("-getServiceState", "nn1")); @@ -268,6 +279,15 @@ public class TestDFSHAAdmin { } @Test + public void testFailoverWithFencerAndNameservice() throws Exception { + Mockito.doReturn(STANDBY_READY_RESULT).when(mockProtocol).getServiceStatus(); + HdfsConfiguration conf = getHAConf(); + conf.set(DFSConfigKeys.DFS_HA_FENCE_METHODS_KEY, getFencerTrueCommand()); + tool.setConf(conf); + assertEquals(0, runTool("-ns", "ns1", "-failover", "nn1", "nn2")); + } + + @Test public void testFailoverWithFencerConfiguredAndForce() throws Exception { Mockito.doReturn(STANDBY_READY_RESULT).when(mockProtocol).getServiceStatus(); HdfsConfiguration conf = getHAConf(); http://git-wip-us.apache.org/repos/asf/hadoop/blob/35816c43/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/TestDFSHAAdminMiniCluster.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/TestDFSHAAdminMiniCluster.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/TestDFSHAAdminMiniCluster.java index 9047279..2910004 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/TestDFSHAAdminMiniCluster.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/TestDFSHAAdminMiniCluster.java @@ -157,6 +157,9 @@ public class TestDFSHAAdminMiniCluster { assertEquals(0, runTool("-failover", "nn1", "nn2")); assertEquals(0, runTool("-failover", "nn2", "nn1")); + // Test failover with fencer and nameservice + assertEquals(0, runTool("-ns", "minidfs-ns", "-failover", "nn2", "nn1")); + // Fencer has not run yet, since none of the above required fencing assertEquals("", Files.toString(tmpFile, Charsets.UTF_8));
