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/AppSchedulingInfo.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AppSchedulingInfo.java index ca7d9ce712e..386f8ea6d44 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AppSchedulingInfo.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AppSchedulingInfo.java @@ -791,4 +791,18 @@ public boolean precheckNode(SchedulerRequestKey schedulerKey, public Map getApplicationSchedulingEnvs() { return applicationSchedulingEnvs; } + + /** + * Get the defaultNodeLabelExpression for the application's current queue + * + * @return defaultNodeLabelExpression + */ + public String getDefaultNodeLabelExpression() { + try { + this.readLock.lock(); + return queue.getDefaultNodeLabelExpression(); + } finally { + this.readLock.unlock(); + } + } } 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/placement/SingleConstraintAppPlacementAllocator.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/placement/SingleConstraintAppPlacementAllocator.java index 54e46667296..09063a518e1 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/placement/SingleConstraintAppPlacementAllocator.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/placement/SingleConstraintAppPlacementAllocator.java @@ -253,7 +253,10 @@ private void validateAndSetSchedulingRequest(SchedulingRequest // Currently only single constraint is handled. private String validateAndGetTargetNodePartition( PlacementConstraint placementConstraint) { - String nodePartition = RMNodeLabelsManager.NO_LABEL; + String defaultNodeLabelExpression = + appSchedulingInfo.getDefaultNodeLabelExpression(); + String nodePartition = defaultNodeLabelExpression == null ? + RMNodeLabelsManager.NO_LABEL : defaultNodeLabelExpression; if (placementConstraint != null && placementConstraint.getConstraintExpr() != null) { PlacementConstraint.AbstractConstraint ac =