apache/cassandra · error · ConfigurationException
Transient replication is disabled. Enable in cassandra.yaml
Error message
Transient replication is disabled. Enable in cassandra.yaml to use.
What it means
validateReplicationStrategy rejects any strategy whose replication factor includes transient replicas (e.g. '3/1') when transient replication is not enabled via transient_replication_enabled in cassandra.yaml. The error tells you the feature flag is off, so a keyspace with transient replication cannot be created or altered.
Source
Thrown at src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java:332
{
// If the subclass doesn't specify a prepareOptions method, then that means that it
// doesn't want to do anything to the options. So do nothing on reflection related exceptions.
}
}
public static void validateReplicationStrategy(String keyspaceName,
Class<? extends AbstractReplicationStrategy> strategyClass,
ClusterMetadata metadata,
Map<String, String> strategyOptions,
ClientState state) throws ConfigurationException
{
AbstractReplicationStrategy strategy = createInternal(keyspaceName, strategyClass, strategyOptions);
strategy.validateExpectedOptions(metadata);
strategy.validateOptions();
strategy.maybeWarnOnOptions(state);
if (strategy.hasTransientReplicas() && !DatabaseDescriptor.isTransientReplicationEnabled())
{
throw new ConfigurationException("Transient replication is disabled. Enable in cassandra.yaml to use.");
}
}
public static Class<AbstractReplicationStrategy> getClass(String cls) throws ConfigurationException
{
String className = cls.contains(".") ? cls : "org.apache.cassandra.locator." + cls;
if ("org.apache.cassandra.locator.OldNetworkTopologyStrategy".equals(className)) // see CASSANDRA-16301
throw new ConfigurationException("The support for the OldNetworkTopologyStrategy has been removed in C* version 4.0. The keyspace strategy should be switch to NetworkTopologyStrategy");
@SuppressWarnings("unchecked")
Class<AbstractReplicationStrategy> strategyClass =
(Class<AbstractReplicationStrategy>) FBUtilities.classForNameWithoutInitialization(className,
"replication strategy",
AbstractReplicationStrategy.class);
return strategyClass;
}
View on GitHub (pinned to 88fd0f6a0e)
Solutions
- Enable transient_replication_enabled: true in cassandra.yaml and restart the cluster (must be enabled on ALL nodes)
- Remove the transient portion from the RF (use '3' instead of '3/1') if transient reads are not needed
- Confirm no other keyspaces use transient RF before toggling the flag
- Note transient replication is experimental; consider a plain RF for production
Example fix
// before (cassandra.yaml) # transient_replication_enabled: false // after transient_replication_enabled: true
Defensive patterns
Strategy: validation
Validate before calling
// Before using a transient RF, check the flag
String rf = "3/1";
if (rf.contains("/") && !Boolean.parseBoolean(config.getString("transient_replication_enabled", "false")))
throw new IllegalArgumentException("Enable transient_replication_enabled in cassandra.yaml first"); Try / catch
try {
session.execute(createKeyspaceWithTransientRf);
} catch (ConfigurationException e) {
logger.error("Transient replication rejected: {}", e.getMessage());
} Prevention
- Enable transient_replication_enabled on every node before creating transient keyspaces
- Only use '/N' RF syntax when the feature flag is set
- Remember transient replication is experimental — test thoroughly
- Document the flag in cluster config runbooks
When it happens
Trigger: CREATE/ALTER KEYSPACE with a replication factor containing a transient portion (e.g. {'class':'SimpleStrategy','replication_factor':'3/1'}) while DatabaseDescriptor.isTransientReplicationEnabled() is false (default).
Common situations: Trying experimental transient replication (CASSANDRA-14459 family) without enabling it in config; copying example keyspaces using '/N' RF syntax onto a cluster with default config.
Related errors
- Transient replication is not supported with vnodes yet
- Load CIDR groups cache operation not supported by %s
- default_keyspace_rf (%d) cannot be less than minimum_replica
- default_keyspace_rf cannot be less than 1
- default_keyspace_rf to be set (%d) cannot be less than minim
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/baf0534b9d3a5d0a.
Report an issue: GitHub.