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

guo Maxwell updated CASSANDRA-20692:
------------------------------------
          Since Version: 5.0-beta1
    Source Control Link: 
https://github.com/apache/cassandra/commit/8de4c9250eeba3b80e8f7132ab529906ce8040f6
             Resolution: Fixed
                 Status: Resolved  (was: Ready to Commit)

> Direct IO commit log does not flush data safely
> -----------------------------------------------
>
>                 Key: CASSANDRA-20692
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-20692
>             Project: Apache Cassandra
>          Issue Type: Bug
>          Components: Local/Commit Log
>            Reporter: Ariel Weisberg
>            Assignee: guo Maxwell
>            Priority: Urgent
>             Fix For: 5.0.x, 5.x
>
>         Attachments: SCR-20250604-txwj.png, SCR-20250604-txzv.png
>
>
> [~maxwellguo] spotted this a few days ago.
> The commit log is not safe as currently written with Direct IO. It writes to 
> the file, but doesn't sync the metadata on flush. That means the commit log 
> may claim it has flushed (and made durable) the data, but the filesystem 
> journal has not been flushed so the file length could be wrong and could 
> truncate the file on restart.
> Additionally Direct IO doesn't actually make data durable on disk (emit write 
> barriers) it just bypasses the page cache. [It doesn't even guarantee the 
> disk transaction is 
> complete.|https://man7.org/linux/man-pages/man2/open.2.html#:~:text=The%20O_DIRECT%20flag,for%20further%20discussion.]
>  If the disk cache is volatile then it can lose metadata and data.
> It can probably be fixed pretty trivially by opening the file with {{D_SYNC}} 
> because the commit log writes up to the entire segment when it flushes so 
> there is no issue with needing to add buffering to avoid too many small 
> writes.
> [~amit_pawar] [~jlewandowski] [~blambov] 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to