浏览代码

YARN-2723. Fix rmadmin -replaceLabelsOnNode does not correctly parse
port. Contributed by Naganarasimha G R

Xuan 10 年之前
父节点
当前提交
65d95b1a52

+ 3 - 0
hadoop-yarn-project/CHANGES.txt

@@ -753,6 +753,9 @@ Release 2.6.0 - UNRELEASED
     prevent creating thousands of threads in a large cluster. (Jason Lowe via
     jianhe)
 
+    YARN-2723. Fix rmadmin -replaceLabelsOnNode does not correctly parse port.
+    (Naganarasimha G R via xgong)
+
 Release 2.5.1 - 2014-09-05
 
   INCOMPATIBLE CHANGES

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

@@ -454,7 +454,7 @@ public class RMAdminCLI extends HAAdmin {
       int port;
       if (nodeIdStr.contains(":")) {
         nodeName = nodeIdStr.substring(0, nodeIdStr.indexOf(":"));
-        port = Integer.valueOf(nodeIdStr.substring(nodeIdStr.indexOf(":")));
+        port = Integer.valueOf(nodeIdStr.substring(nodeIdStr.indexOf(":") + 1));
       } else {
         nodeName = nodeIdStr;
         port = 0;

+ 14 - 0
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestRMAdminCLI.java

@@ -488,6 +488,20 @@ public class TestRMAdminCLI {
             "-directlyAccessNodeLabelStore" };
     assertTrue(0 != rmAdminCLI.run(args));
   }
+
+  @Test
+  public void testReplaceLabelsOnNodeWithPort() throws Exception {
+    // Successfully replace labels
+    dummyNodeLabelsManager.addToCluserNodeLabels(ImmutableSet.of("x", "y"));
+    String[] args =
+      { "-replaceLabelsOnNode", "node1:8000,x,y node2:8000,y",
+      "-directlyAccessNodeLabelStore" };
+    assertEquals(0, rmAdminCLI.run(args));
+    assertTrue(dummyNodeLabelsManager.getNodeLabels().containsKey(
+        NodeId.newInstance("node1", 8000)));
+    assertTrue(dummyNodeLabelsManager.getNodeLabels().containsKey(
+        NodeId.newInstance("node2", 8000)));
+  }
   
   @Test
   public void testGetClusterNodeLabels() throws Exception {