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/CapacityScheduler.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/CapacityScheduler.java index 37acb608c8a..dea702f68ef 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/CapacityScheduler.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/CapacityScheduler.java @@ -952,6 +952,16 @@ private CSQueue getOrCreateQueueFromPlacementContext(ApplicationId ApplicationPlacementContext fallbackContext = placementContext; if (queue == null) { + // It means queueName for leaf queue not existed, + // queueName for queuePath also not existed. + // I may be ensureRootPrefix consistent with FairScheduler. + if (!queueName.startsWith("root.") && !queueName.equals("root")) { + CSQueue needRootPrefix = getQueue("root." + queueName); + if (needRootPrefix != null) { + return needRootPrefix; + } + } + // Even if placement rules are turned off, we still have the opportunity // to auto create a queue. if (placementContext == null) {