apache/cassandra · error · ConfigurationException
To set concurrent_validations > concurrent_compactors, set t
Error message
To set concurrent_validations > concurrent_compactors, set the system property -Dcassandra.allow_unlimited_concurrent_validations=true
What it means
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.
Source
Thrown at src/java/org/apache/cassandra/config/DatabaseDescriptor.java:1337
throw new ConfigurationException("Invalid value of entire_sstable_inter_dc_stream_throughput_outbound: " + conf.entire_sstable_inter_dc_stream_throughput_outbound.toString(), false);
}
if (conf.compaction_throughput.toMebibytesPerSecond() >= Integer.MAX_VALUE)
{
throw new ConfigurationException("Invalid value of compaction_throughput: " + conf.compaction_throughput.toString(), false);
}
}
@VisibleForTesting
static void applyConcurrentValidations(Config config)
{
if (config.concurrent_validations < 1)
{
config.concurrent_validations = config.concurrent_compactors;
}
else if (config.concurrent_validations > config.concurrent_compactors && !allowUnlimitedConcurrentValidations)
{
throw new ConfigurationException("To set concurrent_validations > concurrent_compactors, " +
"set the system property -D" + ALLOW_UNLIMITED_CONCURRENT_VALIDATIONS.getKey() + "=true");
}
}
@VisibleForTesting
static void applyRepairCommandPoolSize(Config config)
{
if (config.repair_command_pool_size < 1)
config.repair_command_pool_size = config.concurrent_validations;
}
@VisibleForTesting
static void applyThresholdsValidations(Config config)
{
// Validate read thresholds
validateReadThresholds("coordinator_read_size", config.coordinator_read_size_warn_threshold, config.coordinator_read_size_fail_threshold);
validateReadThresholds("local_read_size", config.local_read_size_warn_threshold, config.local_read_size_fail_threshold);
validateReadThresholds("row_index_read_size", config.row_index_read_size_warn_threshold, config.row_index_read_size_fail_threshold);View on GitHub (pinned to 88fd0f6a0e)
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
Example fix
// before (cassandra.yaml) concurrent_validations: 8 concurrent_compactors: 4 // after (either) concurrent_validations: 4 // or add to jvm-server.options: -Dcassandra.allow_unlimited_concurrent_validations=true
Defensive patterns
Strategy: validation
Validate before calling
Config c = DatabaseDescriptor.getRawConfig();
if (c.concurrent_validations > c.concurrent_compactors
&& !Boolean.getBoolean("cassandra.allow_unlimited_concurrent_validations"))
throw new IllegalArgumentException("concurrent_validations exceeds concurrent_compactors"); Try / catch
try { DatabaseDescriptor.daemonInitialization(); } catch (ConfigurationException e) { LOG.error("Validation/compactor mismatch: " + e.getMessage()); System.exit(1); } Prevention
- 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
When it happens
Trigger: cassandra.yaml (or runtime setconcurrentvalidations path) with concurrent_validations > concurrent_compactors while system property cassandra.allow_unlimited_concurrent_validations is not true, during applyConcurrentValidations.
Common situations: 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.
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
- repair_session_max_tree_depth should not be < 10, but was ${
- repair_session_space must be > 0, but was ${conf.repair_sess
- Cannot set repair_session_max_tree_depth to which is < 10, d
- Cannot set repair_session_space to < 1 mebibyte
- Value must be >= 0 and <= 1 for repair_disk_headroom_reject_
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/d9843860651168be.
Report an issue: GitHub.