Looking at ProtobufLogWriter class, it looks like the call to flush() in the sync method is a noop.
https://github.com/apache/hbase/blob/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/ProtobufLogWriter.java#L134 The underlying output stream is DFSOutputStream, which doesn't implement flush(). And, it calls sync() anyway, which ensures the data is written to DN's (cache). Previously with SequenceFile$Writer, it writes data to the outputstream (using Writables#write), and invoke sync/hflush. https://github.com/apache/hadoop-common/blob/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/SequenceFile.java#L1314 Is there a reason we have this call here? Please let me know if I miss any context. Thanks, Himanshu