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/AbstractCSQueue.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/AbstractCSQueue.java index 3477f63afdcd0..132d63dbfdb0f 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/AbstractCSQueue.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/AbstractCSQueue.java @@ -518,21 +518,27 @@ protected void updateCapacityConfigType() { CapacityConfigType localType = CapacityConfigType.NONE; - // TODO: revisit this later - // AbstractCSQueue.CapacityConfigType has only None, Percentage and Absolute mode - final Set definedCapacityTypes = - getConfiguredCapacityVector(label).getDefinedCapacityTypes(); - if (definedCapacityTypes.size() == 1) { - QueueCapacityVector.ResourceUnitCapacityType next = definedCapacityTypes.iterator().next(); - if (Objects.requireNonNull(next) == PERCENTAGE) { - localType = CapacityConfigType.PERCENTAGE; - } else if (next == QueueCapacityVector.ResourceUnitCapacityType.ABSOLUTE) { - localType = CapacityConfigType.ABSOLUTE_RESOURCE; - } else if (next == WEIGHT) { + if (queueContext.getConfiguration().isLegacyQueueMode()) { + localType = checkConfigTypeIsAbsoluteResource( + getQueuePath(), label) ? CapacityConfigType.ABSOLUTE_RESOURCE + : CapacityConfigType.PERCENTAGE; + } else { + // TODO: revisit this later + // AbstractCSQueue.CapacityConfigType has only None, Percentage and Absolute mode + final Set definedCapacityTypes = + getConfiguredCapacityVector(label).getDefinedCapacityTypes(); + if (definedCapacityTypes.size() == 1) { + QueueCapacityVector.ResourceUnitCapacityType next = definedCapacityTypes.iterator().next(); + if (Objects.requireNonNull(next) == PERCENTAGE) { + localType = CapacityConfigType.PERCENTAGE; + } else if (next == QueueCapacityVector.ResourceUnitCapacityType.ABSOLUTE) { + localType = CapacityConfigType.ABSOLUTE_RESOURCE; + } else if (next == WEIGHT) { + localType = CapacityConfigType.PERCENTAGE; + } + } else { // Mixed type localType = CapacityConfigType.PERCENTAGE; } - } else { // Mixed type - localType = CapacityConfigType.PERCENTAGE; } if (this.capacityConfigType.equals(CapacityConfigType.NONE)) { diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/helper/CapacitySchedulerInfoHelper.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/helper/CapacitySchedulerInfoHelper.java index 7db9b6434ff52..a915839866657 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/helper/CapacitySchedulerInfoHelper.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/helper/CapacitySchedulerInfoHelper.java @@ -70,19 +70,35 @@ public class CapacitySchedulerInfoHelper { private CapacitySchedulerInfoHelper() {} public static String getMode(CSQueue queue) { - final Set definedCapacityTypes = - queue.getConfiguredCapacityVector(NO_LABEL).getDefinedCapacityTypes(); - if (definedCapacityTypes.size() == 1) { - QueueCapacityVector.ResourceUnitCapacityType next = definedCapacityTypes.iterator().next(); - if (Objects.requireNonNull(next) == PERCENTAGE) { - return "percentage"; - } else if (next == QueueCapacityVector.ResourceUnitCapacityType.ABSOLUTE) { + if (((AbstractCSQueue) queue).getQueueContext().getConfiguration().isLegacyQueueMode()) { + if (queue.getCapacityConfigType() == + AbstractCSQueue.CapacityConfigType.ABSOLUTE_RESOURCE) { return "absolute"; - } else if (next == QueueCapacityVector.ResourceUnitCapacityType.WEIGHT) { - return "weight"; + } else if (queue.getCapacityConfigType() == + AbstractCSQueue.CapacityConfigType.PERCENTAGE) { + float weight = queue.getQueueCapacities().getWeight(); + if (weight == -1) { + //-1 indicates we are not in weight mode + return "percentage"; + } else { + return "weight"; + } + } + } else { + final Set definedCapacityTypes = + queue.getConfiguredCapacityVector(NO_LABEL).getDefinedCapacityTypes(); + if (definedCapacityTypes.size() == 1) { + QueueCapacityVector.ResourceUnitCapacityType next = definedCapacityTypes.iterator().next(); + if (Objects.requireNonNull(next) == PERCENTAGE) { + return "percentage"; + } else if (next == QueueCapacityVector.ResourceUnitCapacityType.ABSOLUTE) { + return "absolute"; + } else if (next == QueueCapacityVector.ResourceUnitCapacityType.WEIGHT) { + return "weight"; + } + } else if (definedCapacityTypes.size() > 1) { + return "mixed"; } - } else if (definedCapacityTypes.size() > 1) { - return "mixed"; } return "unknown";