{"record":{"id":"cec0e04b4a5793ae","repo":"apache/cassandra","slug":"only-free-in-the-system-data-volume-consider-a","errorCode":null,"errorMessage":"Only {} free in the system data volume. Consider adding more capacity or removing obsolete snapshots","messagePattern":"Only (.+?) free in the system data volume\\. Consider adding more capacity or removing obsolete snapshots","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"src/java/org/apache/cassandra/config/DatabaseDescriptor.java","lineNumber":917,"sourceCode":"        if (dataFreeBytes < 64 * ONE_GIB) // 64 GB\n            logger.warn(\"Only {} free across all data volumes. Consider adding more capacity to your cluster or removing obsolete snapshots\",\n                        FBUtilities.prettyPrintMemory(dataFreeBytes));\n\n        if (conf.local_system_data_file_directory != null)\n        {\n            if (conf.local_system_data_file_directory.equals(conf.commitlog_directory))\n                throw new ConfigurationException(\"local_system_data_file_directory must not be the same as the commitlog_directory\", false);\n            if (conf.local_system_data_file_directory.equals(conf.accord.journal_directory))\n                throw new ConfigurationException(\"local_system_data_file_directory must not be the same as the accord.journal_directory\", false);\n            if (conf.local_system_data_file_directory.equals(conf.saved_caches_directory))\n                throw new ConfigurationException(\"local_system_data_file_directory must not be the same as the saved_caches_directory\", false);\n            if (conf.local_system_data_file_directory.equals(conf.hints_directory))\n                throw new ConfigurationException(\"local_system_data_file_directory must not be the same as the hints_directory\", false);\n\n            long freeBytes = tryGetSpace(conf.local_system_data_file_directory, FileStore::getUnallocatedSpace);\n\n            if (freeBytes < ONE_GIB)\n                logger.warn(\"Only {} free in the system data volume. Consider adding more capacity or removing obsolete snapshots\",\n                            FBUtilities.prettyPrintMemory(freeBytes));\n        }\n\n        if (conf.commitlog_directory.equals(conf.accord.journal_directory))\n            throw new ConfigurationException(\"accord.journal_directory must not be the same as the commitlog_directory\", false);\n        if (conf.commitlog_directory.equals(conf.hints_directory))\n            throw new ConfigurationException(\"hints_directory must not be the same as the commitlog_directory\", false);\n        if (conf.commitlog_directory.equals(conf.saved_caches_directory))\n            throw new ConfigurationException(\"saved_caches_directory must not be the same as the commitlog_directory\", false);\n\n        if (conf.accord.journal_directory.equals(conf.hints_directory))\n            throw new ConfigurationException(\"hints_directory must not be the same as the accord.journal_directory\", false);\n        if (conf.accord.journal_directory.equals(conf.saved_caches_directory))\n            throw new ConfigurationException(\"saved_caches_directory must not be the same as the accord.journal_directory\", false);\n\n        if (conf.hints_directory.equals(conf.saved_caches_directory))\n            throw new ConfigurationException(\"saved_caches_directory must not be the same as the hints_directory\", false);\n","sourceCodeStart":899,"sourceCodeEnd":935,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/config/DatabaseDescriptor.java#L899-L935","documentation":"A warning logged during configuration application (applySimpleConfig in DatabaseDescriptor) when the volume backing local_system_data_file_directory has less than 1 GiB of unallocated space. It is not an exception; Cassandra continues startup, but the system data volume (schema tables, local system keyspace data) may fill up and cause failures. Cassandra surfaces it early because running out of space on system data directories can prevent the node from operating.","triggerScenarios":"Starting a node whose local_system_data_file_directory points at a filesystem with fewer than 1 GiB free, as measured via FileStore.getUnallocatedSpace during config application (called from applyAll/toolInitialization at startup).","commonSituations":"Small root partitions in containers/VMs; the system data directory defaulting to the OS root disk; leftover snapshots or old commitlog/hint files consuming space; clusters provisioned with undersized disks.","solutions":["Free space on the volume backing local_system_data_file_directory (delete obsolete snapshots via nodetool clearsnapshot, remove old files).","Resize/move the volume, or point local_system_data_file_directory at a larger filesystem in cassandra.yaml and restart.","Monitor disk usage with alerting so the volume never drops below 1 GiB free."],"exampleFix":"// cassandra.yaml before\nlocal_system_data_file_directory: /var/lib/cassandra  # 800MB free\n// after\nlocal_system_data_file_directory: /data/cassandra/system  # volume with >1GiB free","handlingStrategy":"validation","validationCode":"import org.apache.cassandra.io.util.FileUtils;\n// before starting the node:\njava.io.File dir = new java.io.File(conf.local_system_data_file_directory);\nlong free = dir.toPath().getFileSystem(dir.toPath()).getStores().stream()\n    .filter(s -> dir.getAbsolutePath().startsWith(s.toString()))\n    .mapToLong(s -> { try { return s.getUnallocatedSpace(); } catch (Exception e) { return Long.MAX_VALUE; } })\n    .sum();\nif (free < 1024L * 1024 * 1024) throw new IllegalStateException(\"local_system_data volume has <1GiB free: \" + free);","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Run nodetool clearsnapshot regularly to purge obsolete snapshots","Provision the system data volume with ample headroom and disk-usage alerts","Verify free space in deployment scripts before starting the node"],"tags":["cassandra","configuration","disk-space","startup"],"backgroundTag":"disk-space-low","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"}