apache/cassandra · error · ConfigurationException
default_keyspace_rf (%d) cannot be less than minimum_replica
Error message
default_keyspace_rf (%d) cannot be less than minimum_replication_factor_fail_threshold (%d)
What it means
DatabaseDescriptor requires default_keyspace_rf (default replication factor for new keyspaces) to be at least the minimum_replication_factor_fail_threshold. The throw fires when default_keyspace_rf is set below that fail threshold, an inconsistent pair that would make default keyspaces immediately fail RF validation.
Source
Thrown at src/java/org/apache/cassandra/config/DatabaseDescriptor.java:1231
throw new ConfigurationException("internode_max_message_size must no exceed internode_application_send_queue_reserve_endpoint_capacity", false);
if (maxMessageSize > conf.internode_application_send_queue_reserve_global_capacity.toBytes())
throw new ConfigurationException("internode_max_message_size must no exceed internode_application_send_queue_reserve_global_capacity", false);
}
else
{
long maxMessageSizeInBytes =
Math.min(conf.internode_application_receive_queue_reserve_endpoint_capacity.toBytes(),
conf.internode_application_send_queue_reserve_endpoint_capacity.toBytes());
conf.internode_max_message_size = new DataStorageSpec.IntBytesBound(maxMessageSizeInBytes);
}
validateMaxConcurrentAutoUpgradeTasksConf(conf.max_concurrent_automatic_sstable_upgrades);
if (conf.default_keyspace_rf < conf.minimum_replication_factor_fail_threshold)
{
throw new ConfigurationException(String.format("default_keyspace_rf (%d) cannot be less than minimum_replication_factor_fail_threshold (%d)",
conf.default_keyspace_rf, conf.minimum_replication_factor_fail_threshold));
}
if (conf.paxos_repair_parallelism <= 0)
conf.paxos_repair_parallelism = Math.max(1, conf.concurrent_writes / 8);
Paxos.setPaxosVariant(conf.paxos_variant);
if (conf.paxos_state_purging == null)
conf.paxos_state_purging = PaxosStatePurging.legacy;
logInitializationOutcome(logger);
if (conf.max_space_usable_for_compactions_in_percentage < 0 || conf.max_space_usable_for_compactions_in_percentage > 1)
throw new ConfigurationException("max_space_usable_for_compactions_in_percentage must be between 0 and 1", false);
if (conf.dump_heap_on_uncaught_exception && DatabaseDescriptor.getHeapDumpPath() == null)
throw new ConfigurationException(String.format("Invalid configuration. Heap dump is enabled but cannot create heap dump output path: %s.", conf.heap_dump_path != null ? conf.heap_dump_path : "null"));
View on GitHub (pinned to 88fd0f6a0e)
Solutions
- Raise default_keyspace_rf in cassandra.yaml so it is >= minimum_replication_factor_fail_threshold
- Lower minimum_replication_factor_fail_threshold to at most default_keyspace_rf
Example fix
// before (cassandra.yaml) default_keyspace_rf: 2 minimum_replication_factor_fail_threshold: 3 // after default_keyspace_rf: 3 minimum_replication_factor_fail_threshold: 3
Defensive patterns
Strategy: validation
Validate before calling
if (conf.default_keyspace_rf < conf.minimum_replication_factor_fail_threshold) throw new IllegalArgumentException("default_keyspace_rf must be >= minimum_replication_factor_fail_threshold"); Try / catch
try { DatabaseDescriptor.applyAll(config); } catch (ConfigurationException e) { log.error("Inconsistent RF settings", e); } Prevention
- When changing minimum_replication_factor_fail_threshold, audit default_keyspace_rf in the same change
- Use simple_replication_factor-related settings together as a pair in config reviews
When it happens
Trigger: applySimpleConfig (via toolInitialization/applyAll) with conf.default_keyspace_rf < conf.minimum_replication_factor_fail_threshold in cassandra.yaml.
Common situations: Operator raises minimum_replication_factor_fail_threshold for safety without checking default_keyspace_rf; setting a low default RF while enforcing a strict minimum RF policy.
Understand the failure class
Background: "Invalid value" and "allowed values are" config errors: what your library rejected and how to fix it — this error's family across 41 libraries.
Related errors
- Load CIDR groups cache operation not supported by %s
- Unsupported parameter '%s' for %s, supported parameters are
- JAAS login configuration missing for JMX authenticator setup
- repair_session_max_tree_depth should not be < 10, but was ${
- repair_session_space must be > 0, but was ${conf.repair_sess
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/cf50212555216adc.
Report an issue: GitHub.