apache/cassandra · warning
Accord journal is configured in periodic mode, while Cassand
Error message
Accord journal is configured in periodic mode, while Cassandra commit log is configured in {} mode What it means
During config application in DatabaseDescriptor, the Accord journal flush mode is PERIODIC while the Cassandra commit log sync period is 0 (i.e. commitlog_sync is a synchronous mode like 'batch' with no periodic flush). Since the journal cannot inherit a zero-length flush period from the commit log, Cassandra logs this warning and falls back to accord.journal.periodic_flush_lag_block as the flush period. This is a configuration-consistency warning, not a fatal error.
Source
Thrown at src/java/org/apache/cassandra/config/DatabaseDescriptor.java:675
throw new ConfigurationException("Group sync specified, but commitlog_sync_period found. Only specify commitlog_sync_group_window when using group sync", false);
}
logger.debug("Syncing log with a group window of {}", conf.commitlog_sync_period.toString());
}
else
{
if (conf.commitlog_sync_period.toMilliseconds() == 0)
{
throw new ConfigurationException("Missing value for commitlog_sync_period.", false);
}
logger.debug("Syncing log with a period of {}", conf.commitlog_sync_period.toString());
}
if (conf.accord.journal.flushPeriod == null)
{
conf.accord.journal.flushPeriod = conf.commitlog_sync_period;
if (conf.accord.journal.flushMode == PERIODIC && conf.commitlog_sync_period.toMilliseconds() == 0)
{
logger.warn("Accord journal is configured in periodic mode, while Cassandra commit log is configured in {} mode", conf.commitlog_sync);
conf.accord.journal.flushPeriod = conf.accord.journal.periodicFlushLagBlock;
}
}
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;
}View on GitHub (pinned to 88fd0f6a0e)
Solutions
- Set an explicit accord.journal.flush_period in cassandra.yaml so it does not depend on commitlog_sync_period
- Switch commitlog_sync to 'periodic' with a nonzero commitlog_sync_period_in_ms, or accept the warning and verify accord.journal.periodic_flush_lag_block is sane
- If truly synchronous durability is required, configure the Accord journal flush mode explicitly rather than leaving it PERIODIC
Example fix
# before
cassandra.yaml:
commitlog_sync: batch
accord:
journal:
flush_mode: PERIODIC
# after
cassandra.yaml:
commitlog_sync: batch
accord:
journal:
flush_mode: PERIODIC
flush_period: 500ms Defensive patterns
Strategy: validation
Validate before calling
Config config = DatabaseDescriptor.loadConfig();
if (config.accord.journal.flush_period == null
&& config.accord.journal.flush_mode == Config.Accord.Journal.FlushMode.PERIODIC
&& config.commitlog_sync_period.toMilliseconds() == 0) {
// journal will fall back to periodic_flush_lag_block; set flush_period explicitly
} Try / catch
try { DatabaseDescriptor.applySimpleConfig(conf); } catch (ConfigurationException e) { /* handle config errors */ } Prevention
- Always set accord.journal.flush_period explicitly when enabling Accord
- Avoid mixing commitlog_sync: batch with unset Accord journal timing
- Review startup logs for config-consistency warnings after upgrades
When it happens
Trigger: cassandra.yaml sets accord.journal.flush_mode: PERIODIC, accord.journal.flush_period is unset, and conf.commitlog_sync_period resolves to 0 (typically commitlog_sync: batch). applySimpleConfig then cannot copy commitlog_sync_period into the journal flush period.
Common situations: Operators switching commitlog_sync from 'periodic' to 'batch' while also enabling Accord, or fresh Accord-enabled clusters where the journal flush period was left unset expecting it to follow the commit log.
Understand the failure class
Background: Conflicting config options: "cannot be used together" — configuration validation errors across open-source libraries — this error's family across 162 libraries.
Related errors
- Missing required directive CommitLogSync
- Batch sync specified, but commitlog_sync_period found.
- Invalid data storage: ${value}. It shouldn't be more than ${
- Invalid data storage: value must be non-negative
- Invalid data storage: %d %s. It shouldn't be more than %d in
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/e45717f700cedb98.
Report an issue: GitHub.