YARN-3395. FairScheduler: Trim whitespaces when using username for queuename. (Zhihai Xu via kasha)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/a60f78e9 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/a60f78e9 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/a60f78e9 Branch: refs/heads/HDFS-7240 Commit: a60f78e98ed73ab320576c652c577f119ce70901 Parents: 1773aac Author: Karthik Kambatla <[email protected]> Authored: Sat May 9 15:41:20 2015 -0700 Committer: Karthik Kambatla <[email protected]> Committed: Sat May 9 15:41:20 2015 -0700 ---------------------------------------------------------------------- hadoop-yarn-project/CHANGES.txt | 3 ++ .../scheduler/fair/QueuePlacementRule.java | 4 ++- .../scheduler/fair/TestFairScheduler.java | 35 ++++++++++++++++++++ 3 files changed, 41 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/a60f78e9/hadoop-yarn-project/CHANGES.txt ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt index ba73b2e..9791411 100644 --- a/hadoop-yarn-project/CHANGES.txt +++ b/hadoop-yarn-project/CHANGES.txt @@ -221,6 +221,9 @@ Release 2.8.0 - UNRELEASED YARN-1287. Consolidate MockClocks. (Sebastian Wong and Anubhav Dhoot via kasha) + YARN-3395. FairScheduler: Trim whitespaces when using username for + queuename. (Zhihai Xu via kasha) + OPTIMIZATIONS YARN-3339. TestDockerContainerExecutor should pull a single image and not http://git-wip-us.apache.org/repos/asf/hadoop/blob/a60f78e9/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/QueuePlacementRule.java ---------------------------------------------------------------------- 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/fair/QueuePlacementRule.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/QueuePlacementRule.java index 80de315..f2e32e6 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/QueuePlacementRule.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/QueuePlacementRule.java @@ -345,9 +345,11 @@ public abstract class QueuePlacementRule { } /** - * Replace the periods in the username or groupname with "_dot_". + * Replace the periods in the username or groupname with "_dot_" and + * remove trailing and leading whitespace. */ protected String cleanName(String name) { + name = name.trim(); if (name.contains(".")) { String converted = name.replaceAll("\\.", "_dot_"); LOG.warn("Name " + name + " is converted to " + converted http://git-wip-us.apache.org/repos/asf/hadoop/blob/a60f78e9/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestFairScheduler.java ---------------------------------------------------------------------- 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/fair/TestFairScheduler.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestFairScheduler.java index a26209b..69e0a8c 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestFairScheduler.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestFairScheduler.java @@ -4335,4 +4335,39 @@ public class TestFairScheduler extends FairSchedulerTestBase { "Failed to initialize FairScheduler")); } } + + @Test + public void testUserAsDefaultQueueWithLeadingTrailingSpaceUserName() + throws Exception { + conf.set(FairSchedulerConfiguration.USER_AS_DEFAULT_QUEUE, "true"); + scheduler.init(conf); + scheduler.start(); + scheduler.reinitialize(conf, resourceManager.getRMContext()); + ApplicationAttemptId appAttemptId = createAppAttemptId(1, 1); + createApplicationWithAMResource(appAttemptId, "default", " user1", null); + assertEquals(1, scheduler.getQueueManager().getLeafQueue("user1", true) + .getNumRunnableApps()); + assertEquals(0, scheduler.getQueueManager().getLeafQueue("default", true) + .getNumRunnableApps()); + assertEquals("root.user1", resourceManager.getRMContext().getRMApps() + .get(appAttemptId.getApplicationId()).getQueue()); + + ApplicationAttemptId attId2 = createAppAttemptId(2, 1); + createApplicationWithAMResource(attId2, "default", "user1 ", null); + assertEquals(2, scheduler.getQueueManager().getLeafQueue("user1", true) + .getNumRunnableApps()); + assertEquals(0, scheduler.getQueueManager().getLeafQueue("default", true) + .getNumRunnableApps()); + assertEquals("root.user1", resourceManager.getRMContext().getRMApps() + .get(attId2.getApplicationId()).getQueue()); + + ApplicationAttemptId attId3 = createAppAttemptId(3, 1); + createApplicationWithAMResource(attId3, "default", "user1", null); + assertEquals(3, scheduler.getQueueManager().getLeafQueue("user1", true) + .getNumRunnableApps()); + assertEquals(0, scheduler.getQueueManager().getLeafQueue("default", true) + .getNumRunnableApps()); + assertEquals("root.user1", resourceManager.getRMContext().getRMApps() + .get(attId3.getApplicationId()).getQueue()); + } }
