[ 
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)

Reply via email to