소스 검색

YARN-9985. Unsupported transitionToObserver option displaying for rmadmin command. Contributed by Ayush Saxena.

(cherry picked from commit dc66de744826e0501040f8c2ca9e1edc076a80cf)
Akira Ajisaka 5 년 전
부모
커밋
a3cdba7713

+ 6 - 3
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/RMAdminCLI.java

@@ -251,7 +251,8 @@ public class RMAdminCLI extends HAAdmin {
     if (isHAEnabled) {
       for (Map.Entry<String,UsageInfo> cmdEntry : USAGE.entrySet()) {
         String cmdKey = cmdEntry.getKey();
-        if (!cmdKey.equals("-help")) {
+        if (!cmdKey.equals("-help") && !cmdKey.equals("-failover")
+            && !cmdKey.equals("-transitionToObserver")) {
           UsageInfo usageInfo = cmdEntry.getValue();
           if (usageInfo.args == null) {
             builder.append("   " + cmdKey + "\n");
@@ -323,7 +324,8 @@ public class RMAdminCLI extends HAAdmin {
    */
   private static void printUsage(String cmd, boolean isHAEnabled) {
     StringBuilder usageBuilder = new StringBuilder();
-    if (ADMIN_USAGE.containsKey(cmd) || USAGE.containsKey(cmd)) {
+    if (ADMIN_USAGE.containsKey(cmd) || USAGE.containsKey(cmd)
+        && (!cmd.equals("-failover") && !cmd.equals("-transitionToObserver"))) {
       buildIndividualUsageMsg(cmd, usageBuilder);
     } else {
       buildUsageMsg(usageBuilder, isHAEnabled);
@@ -730,7 +732,8 @@ public class RMAdminCLI extends HAAdmin {
       return exitCode;
     }
 
-    if (USAGE.containsKey(cmd)) {
+    if (USAGE.containsKey(cmd) && !cmd.equals("-failover")
+        && !cmd.equals("-transitionToObserver")) {
       if (isHAEnabled) {
         return super.run(args);
       }

+ 31 - 6
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestRMAdminCLI.java

@@ -780,11 +780,6 @@ public class TestRMAdminCLI {
           "Usage: yarn rmadmin [-getServiceState <serviceId>]", dataErr, 0);
       testError(new String[] { "-help", "-checkHealth" },
           "Usage: yarn rmadmin [-checkHealth <serviceId>]", dataErr, 0);
-      testError(new String[] { "-help", "-failover" },
-          "Usage: yarn rmadmin " +
-              "[-failover [--forcefence] [--forceactive] " +
-              "<serviceId> <serviceId>]",
-          dataErr, 0);
 
       testError(new String[] { "-help", "-badParameter" },
           "Usage: yarn rmadmin", dataErr, 0);
@@ -1067,7 +1062,7 @@ public class TestRMAdminCLI {
     ByteArrayOutputStream errOutBytes = new ByteArrayOutputStream();
     rmAdminCLIWithHAEnabled.setErrOut(new PrintStream(errOutBytes));
     try {
-      String[] args = { "-failover" };
+      String[] args = {"-transitionToActive"};
       assertEquals(-1, rmAdminCLIWithHAEnabled.run(args));
       String errOut = new String(errOutBytes.toByteArray(), Charsets.UTF_8);
       errOutBytes.reset();
@@ -1077,4 +1072,34 @@ public class TestRMAdminCLI {
     }
   }
 
+  @Test
+  public void testNoUnsupportedHACommandsInHelp() throws Exception {
+    ByteArrayOutputStream dataErr = new ByteArrayOutputStream();
+    System.setErr(new PrintStream(dataErr));
+    String[] args = {};
+    assertEquals(-1, rmAdminCLIWithHAEnabled.run(args));
+    String errOut = dataErr.toString();
+    assertFalse(errOut.contains("-transitionToObserver"));
+    dataErr.reset();
+    String[] args1 = {"-transitionToObserver"};
+    assertEquals(-1, rmAdminCLIWithHAEnabled.run(args1));
+    errOut = dataErr.toString();
+    assertTrue(errOut.contains("transitionToObserver: Unknown command"));
+    dataErr.reset();
+    args1[0] = "-failover";
+    assertEquals(-1, rmAdminCLIWithHAEnabled.run(args1));
+    errOut = dataErr.toString();
+    assertTrue(errOut.contains("failover: Unknown command"));
+    dataErr.reset();
+    String[] args2 = {"-help", "-transitionToObserver"};
+    assertEquals(0, rmAdminCLIWithHAEnabled.run(args2));
+    errOut = dataErr.toString();
+    assertFalse(errOut.contains("-transitionToObserver"));
+    dataErr.reset();
+    args2[1] = "-failover";
+    assertEquals(0, rmAdminCLIWithHAEnabled.run(args2));
+    errOut = dataErr.toString();
+    assertFalse(errOut.contains("-failover"));
+    dataErr.reset();
+  }
 }

+ 0 - 2
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/YarnCommands.md

@@ -218,7 +218,6 @@ Usage:
      -updateNodeResource [NodeID] [MemSize] [vCores] ([OvercommitTimeout]) or -updateNodeResource [NodeID] [ResourceTypes] ([OvercommitTimeout])
      -transitionToActive [--forceactive] <serviceId>
      -transitionToStandby <serviceId>
-     -failover [--forcefence] [--forceactive] <serviceId> <serviceId>
      -getServiceState <serviceId>
      -getAllServiceState
      -checkHealth <serviceId>
@@ -244,7 +243,6 @@ Usage:
 | -updateNodeResource [NodeID] [ResourceTypes] \([OvercommitTimeout]\) | Update resource types on specific node. Resource Types is comma-delimited key value pairs of any resources availale at Resource Manager. For example, memory-mb=1024Mi,vcores=1,resource1=2G,resource2=4m|
 | -transitionToActive [--forceactive] [--forcemanual] \<serviceId\> | Transitions the service into Active state. Try to make the target active without checking that there is no active node if the --forceactive option is used. This command can not be used if automatic failover is enabled. Though you can override this by --forcemanual option, you need caution. This command can not be used if automatic failover is enabled.|
 | -transitionToStandby [--forcemanual] \<serviceId\> | Transitions the service into Standby state. This command can not be used if automatic failover is enabled. Though you can override this by --forcemanual option, you need caution. |
-| -failover [--forceactive] \<serviceId1\> \<serviceId2\> | Initiate a failover from serviceId1 to serviceId2. Try to failover to the target service even if it is not ready if the --forceactive option is used. This command can not be used if automatic failover is enabled. |
 | -getServiceState \<serviceId\> | Returns the state of the service. |
 | -getAllServiceState | Returns the state of all the services. |
 | -checkHealth \<serviceId\> | Requests that the service perform a health check. The RMAdmin tool will exit with a non-zero exit code if the check fails. |