{"record":{"id":"e45717f700cedb98","repo":"apache/cassandra","slug":"accord-journal-is-configured-in-periodic-mode-whi","errorCode":null,"errorMessage":"Accord journal is configured in periodic mode, while Cassandra commit log is configured in {} mode","messagePattern":"Accord journal is configured in periodic mode, while Cassandra commit log is configured in (.+?) mode","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"src/java/org/apache/cassandra/config/DatabaseDescriptor.java","lineNumber":675,"sourceCode":"                throw new ConfigurationException(\"Group sync specified, but commitlog_sync_period found. Only specify commitlog_sync_group_window when using group sync\", false);\n            }\n            logger.debug(\"Syncing log with a group window of {}\", conf.commitlog_sync_period.toString());\n        }\n        else\n        {\n            if (conf.commitlog_sync_period.toMilliseconds() == 0)\n            {\n                throw new ConfigurationException(\"Missing value for commitlog_sync_period.\", false);\n            }\n            logger.debug(\"Syncing log with a period of {}\", conf.commitlog_sync_period.toString());\n        }\n\n        if (conf.accord.journal.flushPeriod == null)\n        {\n            conf.accord.journal.flushPeriod = conf.commitlog_sync_period;\n            if (conf.accord.journal.flushMode == PERIODIC && conf.commitlog_sync_period.toMilliseconds() == 0)\n            {\n                logger.warn(\"Accord journal is configured in periodic mode, while Cassandra commit log is configured in {} mode\", conf.commitlog_sync);\n                conf.accord.journal.flushPeriod = conf.accord.journal.periodicFlushLagBlock;\n            }\n        }\n\n        if (conf.accord.durability_flush_interval == null)\n            conf.accord.durability_flush_interval = conf.accord.shard_durability_cycle;\n\n        /* evaluate the DiskAccessMode Config directive, which also affects indexAccessMode selection */\n        if (conf.disk_access_mode == DiskAccessMode.auto || conf.disk_access_mode == DiskAccessMode.mmap_index_only)\n        {\n            conf.disk_access_mode = DiskAccessMode.standard;\n            indexAccessMode = DiskAccessMode.mmap;\n        }\n        else if (conf.disk_access_mode == DiskAccessMode.legacy)\n        {\n            conf.disk_access_mode = hasLargeAddressSpace() ? DiskAccessMode.mmap : DiskAccessMode.standard;\n            indexAccessMode = conf.disk_access_mode;\n        }","sourceCodeStart":657,"sourceCodeEnd":693,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/config/DatabaseDescriptor.java#L657-L693","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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"],"exampleFix":"# before\ncassandra.yaml:\n  commitlog_sync: batch\n  accord:\n    journal:\n      flush_mode: PERIODIC\n# after\ncassandra.yaml:\n  commitlog_sync: batch\n  accord:\n    journal:\n      flush_mode: PERIODIC\n      flush_period: 500ms","handlingStrategy":"validation","validationCode":"Config config = DatabaseDescriptor.loadConfig();\nif (config.accord.journal.flush_period == null\n    && config.accord.journal.flush_mode == Config.Accord.Journal.FlushMode.PERIODIC\n    && config.commitlog_sync_period.toMilliseconds() == 0) {\n    // journal will fall back to periodic_flush_lag_block; set flush_period explicitly\n}","typeGuard":null,"tryCatchPattern":"try { DatabaseDescriptor.applySimpleConfig(conf); } catch (ConfigurationException e) { /* handle config errors */ }","preventionTips":["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"],"tags":["cassandra","accord","config","durability","commitlog"],"backgroundTag":"conflicting-config-options","analyzedSha":"88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1","analyzedAt":"2026-09-10T07:29:22.284Z","contentChangedAt":"2026-09-10T07:29:22.284Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}