apache/cassandra · critical · ConfigurationException

DiskAccessMode '%s' is not supported

Error message

DiskAccessMode '%s' is not supported

What it means

DiskAccessMode.direct (io_uring-style direct I/O access) is not a supported value for disk_access_mode in this Cassandra build. applySimpleConfig rejects it outright (only auto/mmap/standard are accepted), so a node configured with direct fails at startup with this ConfigurationException.

Source

Thrown at src/java/org/apache/cassandra/config/DatabaseDescriptor.java:696

        }

        if (conf.accord.durability_flush_interval == null)
            conf.accord.durability_flush_interval = conf.accord.shard_durability_cycle;

        /* evaluate the DiskAccessMode Config directive, which also affects indexAccessMode selection */
        if (conf.disk_access_mode == DiskAccessMode.auto || conf.disk_access_mode == DiskAccessMode.mmap_index_only)
        {
            conf.disk_access_mode = DiskAccessMode.standard;
            indexAccessMode = DiskAccessMode.mmap;
        }
        else if (conf.disk_access_mode == DiskAccessMode.legacy)
        {
            conf.disk_access_mode = hasLargeAddressSpace() ? DiskAccessMode.mmap : DiskAccessMode.standard;
            indexAccessMode = conf.disk_access_mode;
        }
        else if (conf.disk_access_mode == DiskAccessMode.direct)
        {
            throw new ConfigurationException(String.format("DiskAccessMode '%s' is not supported", DiskAccessMode.direct));
        }
        else
        {
            indexAccessMode = conf.disk_access_mode;
        }
        logger.info("DiskAccessMode is {}, indexAccessMode is {}", conf.disk_access_mode, indexAccessMode);

        if (DiskAccessMode.auto == conf.compaction_read_disk_access_mode)
        {
            compactionReadDiskAccessMode = conf.disk_access_mode;
        }
        else if (DiskAccessMode.direct == conf.compaction_read_disk_access_mode)
        {
            compactionReadDiskAccessMode = DiskAccessMode.direct;
        }
        else
        {
            throw new IllegalArgumentException("Unsupported disk access mode for compaction_read_disk_access_mode " +

View on GitHub (pinned to 88fd0f6a0e)

Solutions

  1. Set `disk_access_mode: auto` and let Cassandra pick mmap vs standard based on address space.
  2. Use `disk_access_mode: mmap` on 64-bit hosts with sufficient address space, or `standard` otherwise.
  3. Upgrade to a Cassandra version that actually supports direct if direct I/O is a hard requirement.

Example fix

// before (cassandra.yaml)
disk_access_mode: direct
// after (cassandra.yaml)
disk_access_mode: auto
Defensive patterns

Strategy: validation

Validate before calling

// Java, before toolInitialization()
String mode = System.getProperty("cassandra.config"); // or parse your yaml
Set<String> allowed = Set.of("auto", "mmap", "standard");
// if parsed disk_access_mode not in allowed -> fail fast with a clear message

Prevention

When it happens

Trigger: Setting `disk_access_mode: direct` in cassandra.yaml (or via Config programmatically) before DatabaseDescriptor.toolInitialization/applyAll.

Common situations: Operators copying disk_access_mode: direct from newer experimental docs or other storage engines; trying to enable direct I/O on old ext4 setups; config templates shared across Cassandra versions where direct is accepted upstream but not in this build.

Related errors


AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10). Data as JSON: /api/errors/2dd29a17f958d31e. Report an issue: GitHub.