Browse Source

YARN-5185. StageAllocaterGreedyRLE: Fix NPE in corner case. (Carlo Curino via asuresh)

Arun Suresh 9 years ago
parent
commit
7a9b7372a1

+ 12 - 4
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/reservation/planning/StageAllocatorGreedyRLE.java

@@ -168,12 +168,20 @@ public class StageAllocatorGreedyRLE implements StageAllocator {
       if (allocateLeft) {
         // set earliest start to the min of the constraining "range" or my the
         // end of this allocation
-        stageEarliestStart =
-            Math.min(partialMap.higherKey(minPoint), stageEarliestStart + dur);
+        if(partialMap.higherKey(minPoint) == null){
+          stageEarliestStart = stageEarliestStart + dur;
+        } else {
+          stageEarliestStart =
+             Math.min(partialMap.higherKey(minPoint), stageEarliestStart + dur);
+        }
       } else {
         // same as above moving right-to-left
-        stageDeadline =
-            Math.max(partialMap.higherKey(minPoint), stageDeadline - dur);
+        if(partialMap.higherKey(minPoint) == null){
+          stageDeadline = stageDeadline - dur;
+        } else {
+          stageDeadline =
+              Math.max(partialMap.higherKey(minPoint), stageDeadline - dur);
+        }
       }
     }