{"record":{"id":"d9843860651168be","repo":"apache/cassandra","slug":"to-set-concurrent-validations-concurrent-compact","errorCode":null,"errorMessage":"To set concurrent_validations > concurrent_compactors, set the system property -Dcassandra.allow_unlimited_concurrent_validations=true","messagePattern":"To set concurrent_validations > concurrent_compactors, set the system property -Dcassandra\\.allow_unlimited_concurrent_validations=true","errorType":"validation","errorClass":"ConfigurationException","httpStatus":null,"severity":"error","filePath":"src/java/org/apache/cassandra/config/DatabaseDescriptor.java","lineNumber":1337,"sourceCode":"            throw new ConfigurationException(\"Invalid value of entire_sstable_inter_dc_stream_throughput_outbound: \" + conf.entire_sstable_inter_dc_stream_throughput_outbound.toString(), false);\n        }\n\n        if (conf.compaction_throughput.toMebibytesPerSecond() >= Integer.MAX_VALUE)\n        {\n            throw new ConfigurationException(\"Invalid value of compaction_throughput: \" + conf.compaction_throughput.toString(), false);\n        }\n    }\n\n    @VisibleForTesting\n    static void applyConcurrentValidations(Config config)\n    {\n        if (config.concurrent_validations < 1)\n        {\n            config.concurrent_validations = config.concurrent_compactors;\n        }\n        else if (config.concurrent_validations > config.concurrent_compactors && !allowUnlimitedConcurrentValidations)\n        {\n            throw new ConfigurationException(\"To set concurrent_validations > concurrent_compactors, \" +\n                                             \"set the system property -D\" + ALLOW_UNLIMITED_CONCURRENT_VALIDATIONS.getKey() + \"=true\");\n        }\n    }\n\n    @VisibleForTesting\n    static void applyRepairCommandPoolSize(Config config)\n    {\n        if (config.repair_command_pool_size < 1)\n            config.repair_command_pool_size = config.concurrent_validations;\n    }\n\n    @VisibleForTesting\n    static void applyThresholdsValidations(Config config)\n    {\n        // Validate read thresholds\n        validateReadThresholds(\"coordinator_read_size\", config.coordinator_read_size_warn_threshold, config.coordinator_read_size_fail_threshold);\n        validateReadThresholds(\"local_read_size\", config.local_read_size_warn_threshold, config.local_read_size_fail_threshold);\n        validateReadThresholds(\"row_index_read_size\", config.row_index_read_size_warn_threshold, config.row_index_read_size_fail_threshold);","sourceCodeStart":1319,"sourceCodeEnd":1355,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/config/DatabaseDescriptor.java#L1319-L1355","documentation":"DatabaseDescriptor caps concurrent_validations at concurrent_compactors unless the system property cassandra.allow_unlimited_concurrent_validations=true is set. Setting more validations than compactors without the flag fails startup with this ConfigurationException.","triggerScenarios":"cassandra.yaml (or runtime setconcurrentvalidations path) with concurrent_validations > concurrent_compactors while system property cassandra.allow_unlimited_concurrent_validations is not true, during applyConcurrentValidations.","commonSituations":"Tuning anti-entropy repair validation concurrency upward without realizing the compactor cap; properties set in the wrong JVM/startup context so the flag is not visible; default concurrent_compactors lower than expected on the node.","solutions":["Start the JVM with -Dcassandra.allow_unlimited_concurrent_validations=true in jvm-server.options","Lower concurrent_validations to <= concurrent_compactors","Raise concurrent_compactors so it is >= concurrent_validations","Confirm the property is in the correct options file actually used at startup"],"exampleFix":"// before (cassandra.yaml)\nconcurrent_validations: 8\nconcurrent_compactors: 4\n// after (either)\nconcurrent_validations: 4\n// or add to jvm-server.options:\n-Dcassandra.allow_unlimited_concurrent_validations=true","handlingStrategy":"validation","validationCode":"Config c = DatabaseDescriptor.getRawConfig();\nif (c.concurrent_validations > c.concurrent_compactors\n    && !Boolean.getBoolean(\"cassandra.allow_unlimited_concurrent_validations\"))\n    throw new IllegalArgumentException(\"concurrent_validations exceeds concurrent_compactors\");","typeGuard":null,"tryCatchPattern":"try { DatabaseDescriptor.daemonInitialization(); } catch (ConfigurationException e) { LOG.error(\"Validation/compactor mismatch: \" + e.getMessage()); System.exit(1); }","preventionTips":["Keep concurrent_validations <= concurrent_compactors","Add the system property to jvm-server.options, not shell env","Recheck both settings together when tuning repair","Verify the flag is visible in the actual node JVM"],"tags":["configuration","repair","system-property"],"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-14T16:17:12.679Z"}