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 ea5c892ce3e5b..6584a5ac270a6 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 @@ -334,6 +334,10 @@ public class CapacitySchedulerConfiguration extends ReservationSchedulerConfigur @Private public static final Integer DEFAULT_CONFIGURATION_APPLICATION_PRIORITY = 0; + @Private + public static final String DEFAULT_APPLICATION_PRIORITY_GLOBAL = + PREFIX + "default-application-priority"; + @Private public static final String AVERAGE_CAPACITY = "average-capacity"; @@ -1815,11 +1819,17 @@ public Priority getClusterLevelApplicationMaxPriority() { YarnConfiguration.DEFAULT_CLUSTER_LEVEL_APPLICATION_PRIORITY)); } - public Integer getDefaultApplicationPriorityConfPerQueue(QueuePath queue) { - Integer defaultPriority = getInt(getQueuePrefix(queue) - + DEFAULT_APPLICATION_PRIORITY, + /** + * Get the global default application priority setting. + * @return global default priority or DEFAULT_CONFIGURATION_APPLICATION_PRIORITY if not set */ + private Integer getDefaultApplicationPriority() { + return getInt(DEFAULT_APPLICATION_PRIORITY_GLOBAL, DEFAULT_CONFIGURATION_APPLICATION_PRIORITY); - return defaultPriority; + } + + public Integer getDefaultApplicationPriorityConfPerQueue(QueuePath queue) { + return getInt(getQueuePrefix(queue) + DEFAULT_APPLICATION_PRIORITY, + getDefaultApplicationPriority()); } @VisibleForTesting 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/TestApplicationLimits.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/TestApplicationLimits.java index 1d3df1198478d..f7efc33e84a11 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/TestApplicationLimits.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/TestApplicationLimits.java @@ -384,6 +384,20 @@ public void testLimitsComputation() throws Exception { csConf.getMaximumApplicationMasterResourcePerQueuePercent( queue.getQueuePathObject()), epsilon); + assertEquals( + (int)CapacitySchedulerConfiguration.DEFAULT_CONFIGURATION_APPLICATION_PRIORITY, + (int)csConf.getDefaultApplicationPriorityConfPerQueue( + queue.getQueuePathObject()) + ); + + csConf.setInt(PREFIX + queue.getQueuePath() + + ".default-application-priority", 6); + + assertEquals((int) 6, + (int) csConf.getDefaultApplicationPriorityConfPerQueue( + queue.getQueuePathObject()) + ); + assertThat(queue.calculateAndGetAMResourceLimit()).isEqualTo( Resource.newInstance(800 * GB, 1)); assertThat(queue.getUserAMResourceLimit()).isEqualTo(