[ https://issues.apache.org/jira/browse/ZOOKEEPER-2003?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14086179#comment-14086179 ]
Liang Xie commented on ZOOKEEPER-2003: -------------------------------------- Seems there's no JAVA api could do this, one possible solution is JNI. ps: It's still safe if using XFS:) but really need a directory fsync w/ ext4, in theory. [~fpj], i think you missed Samer's point... > 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) > write(v/log) > 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)