Browse Source

YARN-5873. RM crashes with NPE if generic application history is enabled. Contributed by Varun Saxena.

(cherry picked from commit 296c5de0cfee88389cf9f90263280b2034e54cd5)
Rohith Sharma K S 8 years ago
parent
commit
fad6de3080

+ 6 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmcontainer/RMContainerImpl.java

@@ -247,7 +247,9 @@ public class RMContainerImpl implements RMContainer, Comparable<RMContainer> {
        YarnConfiguration
                  .DEFAULT_APPLICATION_HISTORY_SAVE_NON_AM_CONTAINER_META_INFO);
 
-    rmContext.getRMApplicationHistoryWriter().containerStarted(this);
+    if (container.getId() != null) {
+      rmContext.getRMApplicationHistoryWriter().containerStarted(this);
+    }
 
     // If saveNonAMContainerMetaInfo is true, store system metrics for all
     // containers. If false, and if this container is marked as the AM, metrics
@@ -893,6 +895,9 @@ public class RMContainerImpl implements RMContainer, Comparable<RMContainer> {
     // container creation event to timeline service when id assigned.
     container.setId(containerId);
 
+    if (containerId != null) {
+      rmContext.getRMApplicationHistoryWriter().containerStarted(this);
+    }
     // If saveNonAMContainerMetaInfo is true, store system metrics for all
     // containers. If false, and if this container is marked as the AM, metrics
     // will still be published for this container, but that calculation happens