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)