Explorar el Código

YARN-7124. LogAggregationTFileController deletes/renames while file is open. Contributed by Jason Lowe.

(cherry picked from commit 1fcbe7cf5f2f7c609cd4158912f151848268ca9e)
Junping Du hace 7 años
padre
commit
26da4045aa

+ 7 - 2
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/logaggregation/filecontroller/tfile/LogAggregationTFileController.java

@@ -96,8 +96,10 @@ public class LogAggregationTFileController
 
   @Override
   public void closeWriter() {
-    this.writer.close();
-    this.writer = null;
+    if (this.writer != null) {
+      this.writer.close();
+      this.writer = null;
+    }
   }
 
   @Override
@@ -117,6 +119,9 @@ public class LogAggregationTFileController
       record.increcleanupOldLogTimes();
     }
 
+    // close the writer before the file is renamed or deleted
+    closeWriter();
+
     final Path renamedPath = record.getRollingMonitorInterval() <= 0
         ? record.getRemoteNodeLogFileForApp() : new Path(
             record.getRemoteNodeLogFileForApp().getParent(),