[ 
https://issues.apache.org/jira/browse/ZOOKEEPER-2003?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Samer Al-Kiswany updated ZOOKEEPER-2003:
----------------------------------------

    Description: 
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.

  was:
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.


> 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