Skip to content

Commit abf76ac

Browse files
amahusseinjteagles
authored andcommitted
YARN-9563. Resource report REST API could return NaN or Inf (Ahmed Hussein via jeagles)
Signed-off-by: Jonathan Eagles <[email protected]>
1 parent 3c63551 commit abf76ac

File tree

3 files changed

+15
-4
lines changed

3 files changed

+15
-4
lines changed

hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/SchedulerApplicationAttempt.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1125,9 +1125,10 @@ public ApplicationResourceUsageReport getResourceUsageReport() {
11251125
if (!calc.isInvalidDivisor(cluster)) {
11261126
float queueCapacityPerc = queue.getQueueInfo(false, false)
11271127
.getCapacity();
1128-
if (queueCapacityPerc != 0) {
1129-
queueUsagePerc = calc.divide(cluster, usedResourceClone,
1130-
Resources.multiply(cluster, queueCapacityPerc)) * 100;
1128+
queueUsagePerc = calc.divide(cluster, usedResourceClone,
1129+
Resources.multiply(cluster, queueCapacityPerc)) * 100;
1130+
if (Float.isNaN(queueUsagePerc) || Float.isInfinite(queueUsagePerc)) {
1131+
queueUsagePerc = 0.0f;
11311132
}
11321133
clusterUsagePerc =
11331134
calc.divide(cluster, usedResourceClone, cluster) * 100;

hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/TestSchedulerApplicationAttempt.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ public void testAppPercentages() throws Exception {
276276
assertEquals(60.0f,
277277
app.getResourceUsageReport().getClusterUsagePercentage(), 0.01f);
278278

279-
queue = createQueue("test3", null, 0.0f);
279+
queue = createQueue("test3", null, Float.MIN_VALUE);
280280
app = new SchedulerApplicationAttempt(appAttId, user, queue,
281281
queue.getAbstractUsersManager(), rmContext);
282282

hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestLeafQueue.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4039,6 +4039,16 @@ public void testApplicationQueuePercent()
40394039
0.01f);
40404040
assertEquals(15.0f,
40414041
app.getResourceUsageReport().getClusterUsagePercentage(), 0.01f);
4042+
4043+
// test that queueUsagePercentage returns neither NaN nor Infinite
4044+
AbstractCSQueue zeroQueue = createQueue("test2.2", null,
4045+
Float.MIN_VALUE, Float.MIN_VALUE,
4046+
Resources.multiply(res, Float.MIN_VALUE));
4047+
app = new FiCaSchedulerApp(appAttId, user, zeroQueue,
4048+
qChild.getAbstractUsersManager(), rmContext);
4049+
app.getAppAttemptResourceUsage().incUsed(requestedResource);
4050+
assertEquals(0.0f, app.getResourceUsageReport().getQueueUsagePercentage(),
4051+
0.01f);
40424052
}
40434053

40444054
@Test

0 commit comments

Comments
 (0)