Andrey Neporada created KAFKA-3968:
--------------------------------------

             Summary: fsync() is not called on parent directory when new 
FileMessageSet is flushed to disk
                 Key: KAFKA-3968
                 URL: https://issues.apache.org/jira/browse/KAFKA-3968
             Project: Kafka
          Issue Type: Bug
          Components: log
    Affects Versions: 0.10.0.0, 0.9.0.1
         Environment: Linux, ext4 filesystem
            Reporter: Andrey Neporada


Kafka does not call fsync() on directory when new log segment is created and 
flushed to disk.

The problem is that following sequence of calls doesn't guarantee file 
durability: 

fd = open("log", O_RDWR | O_CREATE); // suppose open creates "log"
write(fd);
fsync(fd);

If system crashes after fsync() but before parent directory have been flushed 
to disk, the log file can disappear.
This is true at least for ext4 on Linux.

Proposed solution is to flush directory when flush() is called for the first 
time.




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to