From 756048651734548fac0ff0d083560bba5cc01434 Mon Sep 17 00:00:00 2001 From: Sunil G Date: Fri, 20 Jan 2017 22:47:27 +0530 Subject: [PATCH] YARN-6082 --- .../scheduler/SchedulerApplicationAttempt.java | 8 +++++--- .../scheduler/TestSchedulerApplicationAttempt.java | 12 ++++++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) 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/SchedulerApplicationAttempt.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/SchedulerApplicationAttempt.java index 7558eac..06e244f 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/SchedulerApplicationAttempt.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/SchedulerApplicationAttempt.java @@ -1036,10 +1036,12 @@ public ApplicationResourceUsageReport getResourceUsageReport() { rmContext.getScheduler().getResourceCalculator(); float queueUsagePerc = 0.0f; float clusterUsagePerc = 0.0f; + float queueCapacityPerc = queue.getQueueInfo(false, false).getCapacity(); if (!calc.isInvalidDivisor(cluster)) { - queueUsagePerc = calc.divide(cluster, usedResourceClone, Resources - .multiply(cluster, queue.getQueueInfo(false, false).getCapacity())) - * 100; + if (queueCapacityPerc != 0) { + queueUsagePerc = calc.divide(cluster, usedResourceClone, + Resources.multiply(cluster, queueCapacityPerc)) * 100; + } clusterUsagePerc = calc.divide(cluster, usedResourceClone, cluster) * 100; } 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/TestSchedulerApplicationAttempt.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/TestSchedulerApplicationAttempt.java index 9a6c8d4..2024778 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/TestSchedulerApplicationAttempt.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/TestSchedulerApplicationAttempt.java @@ -227,6 +227,18 @@ public void testAppPercentages() throws Exception { 0.01f); assertEquals(60.0f, app.getResourceUsageReport().getClusterUsagePercentage(), 0.01f); + + queue = createQueue("test3", null, 0.0f); + app = new SchedulerApplicationAttempt(appAttId, user, queue, + queue.getActiveUsersManager(), rmContext); + + // Resource request + app.attemptResourceUsage.incUsed(requestedResource); + + assertEquals(0.0f, app.getResourceUsageReport().getQueueUsagePercentage(), + 0.01f); + assertEquals(15.0f, app.getResourceUsageReport().getClusterUsagePercentage(), + 0.01f); } @Test -- 2.10.1 (Apple Git-78)