cassandra/conf
samlightfoot 002190748b Support direct I/O for background SSTable writes
Adds an opt-in O_DIRECT write path for background SSTable producers,
bypassing the OS page cache for data that is unlikely to be re-read
soon after being written. Memtable flushes remain buffered.

Enabled via two new YAML knobs:
 - background_write_disk_access_mode: standard (default) | direct
 - direct_write_buffer_size: 1MiB (default; aligned up to FS block
   size, auto-grown to fit a worst-case compressed chunk)

The path is gated by config, table compression being enabled, and an
OperationType allowlist in DataComponent. The allowlist is exhaustive
over OperationType: any new value left unclassified fails static
initialization.

Operations on the DIO path: COMPACTION, MAJOR_COMPACTION,
TOMBSTONE_COMPACTION, ANTICOMPACTION, GARBAGE_COLLECT, CLEANUP,
UPGRADE_SSTABLES, WRITE, STREAM (chunked receiver only), RELOCATE,
UNKNOWN (offline sstablesplit).

Operations off the DIO path:
 - FLUSH (policy: just-flushed data is hot, keep in page cache)
 - SCRUB (correctness: tryAppend needs mark/resetAndTruncate)
 - Zero-Copy Streaming (bypasses DataComponent.buildWriter)
 - Uncompressed writers (only CompressedSequentialWriter has a DIO
   subclass in this change)

StartupChecks fails fast if 'direct' is requested on a platform/FS
that does not support O_DIRECT.

patch by Sam Lightfoot; reviewed by Ariel Weisberg, Dmitry Konstantinov for CASSANDRA-21134
2026-06-24 14:57:46 +01:00
..
triggers add triggers README 2013-08-17 19:13:58 -06:00
README.txt Fix ClassCastException processing expired messages 2014-07-07 00:03:18 -05:00
cassandra-env.sh Add JDK21 support 2026-02-02 12:39:05 -05:00
cassandra-jaas.config Merge branch 'cassandra-3.11' into cassandra-4.0 2023-08-31 22:39:56 +02:00
cassandra-rackdc.properties Add AzureSnitch 2023-07-20 21:35:07 +02:00
cassandra-topology.properties.example Rename cassandra-topology.properties to example 2021-11-16 10:10:15 -06:00
cassandra.yaml Support direct I/O for background SSTable writes 2026-06-24 14:57:46 +01:00
cassandra_latest.yaml Support direct I/O for background SSTable writes 2026-06-24 14:57:46 +01:00
commitlog_archiving.properties Merge branch 'cassandra-4.0' into cassandra-4.1 2024-09-15 19:57:53 +02:00
cqlshrc.sample Merge branch 'cassandra-5.0' into trunk 2026-03-17 23:09:49 +01:00
credentials.sample Support legacy plain_text_auth section in credentials file removed unintentionally 2024-05-14 10:07:19 +02:00
jvm-clients.options Merge branch 'cassandra-4.1' into cassandra-5.0 2023-08-31 22:43:33 +02:00
jvm-server.options Add compaction strategy override via system properties 2026-02-20 11:49:10 -05:00
jvm11-clients.options Add java.base/java.lang.reflect among opens for jvm11-client.options 2024-07-23 16:47:37 +02:00
jvm11-server.options Heap and GC jvm flags improvements 2025-02-22 10:59:42 +01:00
jvm17-clients.options Append additional JVM options when using JDK17+ 2024-01-19 18:50:53 -05:00
jvm17-server.options Enable async GC logging for JDK versions which support it to avoid potential hiccups caused by GC log file I/O blocking 2026-05-31 12:58:27 +01:00
jvm21-clients.options Add JDK21 support 2026-02-02 12:39:05 -05:00
jvm21-server.options Enable async GC logging for JDK versions which support it to avoid potential hiccups caused by GC log file I/O blocking 2026-05-31 12:58:27 +01:00
logback-tools.xml Unify STDOUT and SYSTEMLOG logback format 2016-07-27 15:38:32 +01:00
logback.xml Upgrade logback version to 1.5.18 and slf4j dependencies to 2.0.17 2026-02-06 13:28:03 +11:00

README.txt

Required configuration files
============================

cassandra.yaml: main Cassandra configuration file
logback.xml: logback configuration file for Cassandra server


Optional configuration files
============================

cassandra-topology.properties: used by PropertyFileSnitch