diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacitySchedulerConfiguration.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacitySchedulerConfiguration.java index ce3c0cb3e0c..efd56a24919 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacitySchedulerConfiguration.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacitySchedulerConfiguration.java @@ -1963,7 +1963,7 @@ public Map getAllUserWeightsForQueue(String queuePath) { getQueuePrefix(queuePath).replaceAll("\\.", "\\\\.") + USER_SETTINGS + "\\."; String weightKeyRegex = - qPathPlusPrefix + "\\w+\\." + USER_WEIGHT; + qPathPlusPrefix + "\\S+\\." + USER_WEIGHT; Map props = getValByRegex(weightKeyRegex); for (Entry e : props.entrySet()) { String userName = diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestLeafQueue.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestLeafQueue.java index 4b023107b39..75ab16f3a84 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestLeafQueue.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestLeafQueue.java @@ -1660,17 +1660,25 @@ public void testUserSpecificUserLimits() throws Exception { LeafQueue a = stubLeafQueue((LeafQueue)queues.get(A)); // Set minimum-user-limit-percent for queue "a" in the configs. csConf.setUserLimit(a.getQueuePath(), 50); - // Set weight for "user_0" to be 1.5 for the a queue in the configs. + // Set weight for "user_0" to be 1.5f for the a queue in the configs. csConf.setFloat("yarn.scheduler.capacity." + a.getQueuePath() + ".user-settings.user_0." + CapacitySchedulerConfiguration.USER_WEIGHT, 1.5f); + // Set weight for "firstname.lastname" to be 0.7f for the a queue + // in the configs. Notice the user contains a dot. This is to test + // that weights are accepted for a username that contains dots. + csConf.setFloat("yarn.scheduler.capacity." + a.getQueuePath() + + ".user-settings.firstname.lastname." + + CapacitySchedulerConfiguration.USER_WEIGHT, + 0.7f); when(csContext.getClusterResource()) .thenReturn(Resources.createResource(16 * GB, 32)); // Verify that configs were updated and parsed correctly. Assert.assertNull(a.getUserWeights().get("user_0")); a.reinitialize(a, csContext.getClusterResource()); - assertEquals(1.5, a.getUserWeights().get("user_0").floatValue(), 0.0); + assertEquals(1.5f, a.getUserWeights().get("user_0"), 0.0f); + assertEquals(0.7f, a.getUserWeights().get("firstname.lastname"), 0.0f); // set maxCapacity a.setMaxCapacity(1.0f);