浏览代码

YARN-3457. NPE when NodeManager.serviceInit fails and stopRecoveryStore called. Contributed by Bibin A Chundatt.

(cherry picked from commit dd852f5b8c8fe9e52d15987605f36b5b60f02701)
Tsuyoshi Ozawa 10 年之前
父节点
当前提交
ac32fa187c

+ 3 - 0
hadoop-yarn-project/CHANGES.txt

@@ -105,6 +105,9 @@ Release 2.8.0 - UNRELEASED
 
     YARN-3110. Few issues in ApplicationHistory web ui. (Naganarasimha G R via xgong)
 
+    YARN-3457. NPE when NodeManager.serviceInit fails and stopRecoveryStore called.
+    (Bibin A Chundatt via ozawa)
+
 Release 2.7.0 - UNRELEASED
 
   INCOMPATIBLE CHANGES

+ 12 - 10
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/NodeManager.java

@@ -176,16 +176,18 @@ public class NodeManager extends CompositeService
 
   private void stopRecoveryStore() throws IOException {
     nmStore.stop();
-    if (context.getDecommissioned() && nmStore.canRecover()) {
-      LOG.info("Removing state store due to decommission");
-      Configuration conf = getConfig();
-      Path recoveryRoot = new Path(
-          conf.get(YarnConfiguration.NM_RECOVERY_DIR));
-      LOG.info("Removing state store at " + recoveryRoot
-          + " due to decommission");
-      FileSystem recoveryFs = FileSystem.getLocal(conf);
-      if (!recoveryFs.delete(recoveryRoot, true)) {
-        LOG.warn("Unable to delete " + recoveryRoot);
+    if (null != context) {
+      if (context.getDecommissioned() && nmStore.canRecover()) {
+        LOG.info("Removing state store due to decommission");
+        Configuration conf = getConfig();
+        Path recoveryRoot =
+            new Path(conf.get(YarnConfiguration.NM_RECOVERY_DIR));
+        LOG.info("Removing state store at " + recoveryRoot
+            + " due to decommission");
+        FileSystem recoveryFs = FileSystem.getLocal(conf);
+        if (!recoveryFs.delete(recoveryRoot, true)) {
+          LOG.warn("Unable to delete " + recoveryRoot);
+        }
       }
     }
   }