Bläddra i källkod

YARN-10295. CapacityScheduler NPE can cause apps to get stuck without resources. Contributed by Benjamin Teke

Szilard Nemeth 5 år sedan
förälder
incheckning
59b20a1ebf

+ 6 - 3
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacityScheduler.java

@@ -1554,11 +1554,14 @@ public class CapacityScheduler extends
     }
 
     // Do not schedule if there are any reservations to fulfill on the node
-    if (node.getReservedContainer() != null) {
+    // node.getReservedContainer() is saved to the reservedContainer variable
+    // to ensure that a NPE described in YARN-10295 won't occur
+    reservedContainer = node.getReservedContainer();
+    if (reservedContainer != null) {
       if (LOG.isDebugEnabled()) {
         LOG.debug("Skipping scheduling since node " + node.getNodeID()
-            + " is reserved by application " + node.getReservedContainer()
-            .getContainerId().getApplicationAttemptId());
+                + " is reserved by application " + reservedContainer
+                .getContainerId().getApplicationAttemptId());
       }
       return null;
     }