From 8de4c9250eeba3b80e8f7132ab529906ce8040f6 Mon Sep 17 00:00:00 2001 From: Maxwell Guo Date: Tue, 17 Jun 2025 10:06:38 +0800 Subject: [PATCH] Make Commitlog flush data safely in Direct IO mode patch by Maxwell Guo; reviewed by Ariel Weisberg for CASSANDRA-20692 --- CHANGES.txt | 1 + .../org/apache/cassandra/db/commitlog/DirectIOSegment.java | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGES.txt b/CHANGES.txt index 6935dd4489..947891e3f2 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 5.0.5 + * Make Commitlog flush data safely in Direct IO mode (CASSANDRA-20692) * Get SAI MemtableIndex refs before SSTableIndex refs at query time (CASSANDRA-20709) * Fix MAX_SEGMENT_SIZE < chunkSize in MmappedRegions::updateState (CASSANDRA-20636) * Full Java 17 support (CASSANDRA-20681) diff --git a/src/java/org/apache/cassandra/db/commitlog/DirectIOSegment.java b/src/java/org/apache/cassandra/db/commitlog/DirectIOSegment.java index b4819aa201..fec799ce9d 100644 --- a/src/java/org/apache/cassandra/db/commitlog/DirectIOSegment.java +++ b/src/java/org/apache/cassandra/db/commitlog/DirectIOSegment.java @@ -177,7 +177,12 @@ public class DirectIOSegment extends CommitLogSegment public DirectIOSegment build() { return new DirectIOSegment(segmentManager, - path -> FileChannel.open(path, StandardOpenOption.WRITE, StandardOpenOption.READ, StandardOpenOption.CREATE, ExtendedOpenOption.DIRECT), + path -> FileChannel.open(path, + StandardOpenOption.WRITE, + StandardOpenOption.READ, + StandardOpenOption.CREATE, + StandardOpenOption.DSYNC, + ExtendedOpenOption.DIRECT), fsBlockSize); }