ソースを参照

YARN-4581. AHS writer thread leak makes RM crash while RM is recovering. Contributed by sandflee.

Junping Du 9 年 前
コミット
fc6d3a3b23

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

@@ -1259,6 +1259,9 @@ Release 2.8.0 - UNRELEASED
     failure-threshold" should be app specific rather than a setting for whole 
     YARN cluster. (Sunil G via rohithsharmaks)
 
+    YARN-4581. AHS writer thread leak makes RM crash while RM is recovering. 
+    (sandflee via junping_du)
+
 Release 2.7.3 - UNRELEASED
 
   INCOMPATIBLE CHANGES
@@ -1323,6 +1326,9 @@ Release 2.7.3 - UNRELEASED
     YARN-4414. Nodemanager connection errors are retried at multiple levels
     (Chang Li via jlowe)
 
+    YARN-4581. AHS writer thread leak makes RM crash while RM is recovering.
+    (sandflee via junping_du)
+
 Release 2.7.2 - UNRELEASED
 
   INCOMPATIBLE CHANGES
@@ -2209,6 +2215,9 @@ Release 2.6.4 - UNRELEASED
     YARN-4414. Nodemanager connection errors are retried at multiple levels
     (Chang Li via jlowe)
 
+    YARN-4581. AHS writer thread leak makes RM crash while RM is recovering.
+    (sandflee via junping_du)
+
 Release 2.6.3 - 2015-12-17
 
   INCOMPATIBLE CHANGES

+ 11 - 6
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/FileSystemApplicationHistoryStore.java

@@ -734,12 +734,17 @@ public class FileSystemApplicationHistoryStore extends AbstractService
       } else {
         fsdos = fs.create(historyFile);
       }
-      fs.setPermission(historyFile, HISTORY_FILE_UMASK);
-      writer =
-          new TFile.Writer(fsdos, MIN_BLOCK_SIZE, getConfig().get(
-            YarnConfiguration.FS_APPLICATION_HISTORY_STORE_COMPRESSION_TYPE,
-            YarnConfiguration.DEFAULT_FS_APPLICATION_HISTORY_STORE_COMPRESSION_TYPE), null,
-            getConfig());
+      try {
+        fs.setPermission(historyFile, HISTORY_FILE_UMASK);
+        writer =
+            new TFile.Writer(fsdos, MIN_BLOCK_SIZE, getConfig().get(
+                YarnConfiguration.FS_APPLICATION_HISTORY_STORE_COMPRESSION_TYPE,
+                YarnConfiguration.DEFAULT_FS_APPLICATION_HISTORY_STORE_COMPRESSION_TYPE), null,
+                getConfig());
+      } catch (IOException e) {
+        IOUtils.cleanup(LOG, fsdos);
+        throw e;
+      }
     }
 
     public synchronized void close() {