[
https://issues.apache.org/jira/browse/CASSANDRA-20692?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
guo Maxwell updated CASSANDRA-20692:
------------------------------------
Fix Version/s: 5.0.5
(was: 5.0.x)
> 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.5, 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: [email protected]
For additional commands, e-mail: [email protected]