Browse Source

YARN-5915. ATS 1.5 FileSystemTimelineWriter causes flush() to be called after every event write. Contributed by Atul Sikaria
(cherry picked from commit 6b17d449bf93e55c4f373ba96f12af6319a8411c)

Jason Lowe 8 years ago
parent
commit
e6394e3a35

+ 2 - 2
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/api/impl/FileSystemTimelineWriter.java

@@ -286,6 +286,7 @@ public class FileSystemTimelineWriter extends TimelineWriter{
     mapper.setAnnotationIntrospector(new JaxbAnnotationIntrospector());
     mapper.setSerializationInclusion(Inclusion.NON_NULL);
     mapper.configure(Feature.CLOSE_CLOSEABLE, false);
+    mapper.configure(Feature.FLUSH_AFTER_WRITE_VALUE, false);
     return mapper;
   }
 
@@ -366,6 +367,7 @@ public class FileSystemTimelineWriter extends TimelineWriter{
 
     public void flush() throws IOException {
       if (stream != null) {
+        jsonGenerator.flush();
         stream.hflush();
       }
     }
@@ -378,8 +380,6 @@ public class FileSystemTimelineWriter extends TimelineWriter{
       this.stream = createLogFileStream(fs, logPath);
       this.jsonGenerator = new JsonFactory().createJsonGenerator(stream);
       this.jsonGenerator.setPrettyPrinter(new MinimalPrettyPrinter("\n"));
-      this.jsonGenerator.configure(
-          JsonGenerator.Feature.FLUSH_PASSED_TO_STREAM, false);
       this.lastModifiedTime = Time.monotonicNow();
     }