Samer Al-Kiswany created ZOOKEEPER-2003:
-------------------------------------------
Summary: Missing fsync() on the logs parent directory
Key: ZOOKEEPER-2003
URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2003
Project: ZooKeeper
Issue Type: Bug
Affects Versions: 3.4.6
Reporter: Samer Al-Kiswany
After studying the steps ZooKeeper takes to update the logs we found the
following bug. The bug may not manifest in the current file system
implementations, but it violates the POSIX recommendations and may be an issue
in some file systems.
Looking at the strace of zookeeper we see the following:
mkdir(v)
create(v/log)
append(v/log)
trunk(v/log) to almost 64MBs
write(v/log) 1 byte
fdatasync(v/log)
Although the data is fdatasynced to the log, the parent directory was never
fsynced, consequently in case of a crash, the parent directory or the log file
may be lost, as the parent directory and file metadata were never persisted on
disk.
To be safe, both the log directory, and parent directory of the log directory
should be fsynced as well.
--
This message was sent by Atlassian JIRA
(v6.2#6252)