diff --git 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 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 5dc1240..573fcb7 100644 --- 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 +++ 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 @@ -545,16 +545,17 @@ public final boolean accessibleToPartition(final String nodePartition) { * @return used resources by this queue for specified label */ public final synchronized float getUsedCapacity(final String nodeLabel) { + Resource labeledResources = + labelManager.getResourceByLabel(nodeLabel, this.clusterResource); Resource availableToQueue = - Resources.multiply( - labelManager.getResourceByLabel(nodeLabel, this.clusterResource), + Resources.multiply(labeledResources, queueCapacities.getAbsoluteCapacity(nodeLabel)); - if (!Resources.greaterThan(resourceCalculator, this.clusterResource, + if (!Resources.greaterThan(resourceCalculator, labeledResources, availableToQueue, Resources.none())) { return 0.0f; } return - Resources.divide(resourceCalculator, this.clusterResource, + Resources.divide(resourceCalculator, labeledResources, queueUsage.getUsed(nodeLabel), availableToQueue); } @@ -565,12 +566,12 @@ public final synchronized float getUsedCapacity(final String nodeLabel) { */ public final synchronized float getAbsoluteUsedCapacity(final String nodeLabel) { Resource labeledResources = - labelManager.getResourceByLabel(nodeLabel, this.clusterResource); - if (!Resources.greaterThan(resourceCalculator, this.clusterResource, + labelManager.getResourceByLabel(nodeLabel, this.clusterResource); + if (!Resources.greaterThan(resourceCalculator, labeledResources, labeledResources, Resources.none())) { return 0.0f; } - return Resources.divide(resourceCalculator, this.clusterResource, + return Resources.divide(resourceCalculator, labeledResources, queueUsage.getUsed(nodeLabel), labeledResources); } }