{"record":{"id":"7d30d68f797506a4","repo":"apache/cassandra","slug":"accord-journal-directory-must-be-specified","errorCode":null,"errorMessage":"accord.journal_directory must be specified","messagePattern":"accord\\.journal_directory must be specified","errorType":"validation","errorClass":"ConfigurationException","httpStatus":null,"severity":"critical","filePath":"src/java/org/apache/cassandra/config/DatabaseDescriptor.java","lineNumber":2422,"sourceCode":"    public static void createAllDirectories()\n    {\n        try\n        {\n            if (conf.data_file_directories.length == 0)\n                throw new ConfigurationException(\"At least one DataFileDirectory must be specified\", false);\n\n            for (String dataFileDirectory : conf.data_file_directories)\n                FileUtils.createDirectory(dataFileDirectory);\n\n            if (conf.local_system_data_file_directory != null)\n                FileUtils.createDirectory(conf.local_system_data_file_directory);\n\n            if (conf.commitlog_directory == null)\n                throw new ConfigurationException(\"commitlog_directory must be specified\", false);\n            FileUtils.createDirectory(conf.commitlog_directory);\n\n            if (conf.accord.journal_directory == null)\n                throw new ConfigurationException(\"accord.journal_directory must be specified\", false);\n            FileUtils.createDirectory(conf.accord.journal_directory);\n\n            if (conf.hints_directory == null)\n                throw new ConfigurationException(\"hints_directory must be specified\", false);\n            FileUtils.createDirectory(conf.hints_directory);\n\n            if (conf.saved_caches_directory == null)\n                throw new ConfigurationException(\"saved_caches_directory must be specified\", false);\n            FileUtils.createDirectory(conf.saved_caches_directory);\n\n            if (conf.cdc_enabled)\n            {\n                if (conf.cdc_raw_directory == null)\n                    throw new ConfigurationException(\"cdc_raw_directory must be specified\", false);\n                FileUtils.createDirectory(conf.cdc_raw_directory);\n            }\n\n            boolean created = maybeCreateHeapDumpPath();","sourceCodeStart":2404,"sourceCodeEnd":2440,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/config/DatabaseDescriptor.java#L2404-L2440","documentation":"createAllDirectories requires conf.accord.journal_directory to be configured; Accord (transactional) needs a durable journal location, so a null value aborts startup with this ConfigurationException. It is part of the mandatory directory-creation sequence alongside commitlog and hints directories.","triggerScenarios":"Starting a node whose cassandra.yaml has no accord.journal_directory entry (or an accord section stripped), so conf.accord.journal_directory is null when createAllDirectories executes.","commonSituations":"Upgrading an older cassandra.yaml that predates the accord settings and merging without adding the new key; hand-minimized configs used in CI/test clusters; environments where the accord section was commented out.","solutions":["Add accord.journal_directory to cassandra.yaml (e.g. /var/lib/cassandra/accord)","Place it on durable storage comparable to the commitlog disk","In programmatic Config use, set config.accord.journal_directory before DatabaseDescriptor init"],"exampleFix":"// before (cassandra.yaml)\naccord:\n  # journal_directory not set\n// after\naccord:\n  journal_directory: /var/lib/cassandra/accord","handlingStrategy":"validation","validationCode":"if (conf.accord == null || conf.accord.journal_directory == null)\n    throw new IllegalArgumentException(\"accord.journal_directory is required\");","typeGuard":null,"tryCatchPattern":"try { DatabaseDescriptor.daemonInitialization(); }\ncatch (ConfigurationException e) {\n    if (e.getMessage().contains(\"accord.journal_directory must be specified\"))\n        addAccordDirectoryAndRestart();\n}","preventionTips":["When merging configs across upgrades, include newly required keys (accord.*)","Track upgrade NEWS.txt for new mandatory settings","Render accord.journal_directory in all environment config templates"],"tags":["configuration","accord","cassandra-yaml"],"backgroundTag":"missing-required-config-field","analyzedSha":"88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1","analyzedAt":"2026-09-10T07:29:22.284Z","contentChangedAt":"2026-09-10T07:29:22.284Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}