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

  1. Enable transient_replication_enabled: true in cassandra.yaml and restart the cluster (must be enabled on ALL nodes)
  2. Remove the transient portion from the RF (use '3' instead of '3/1') if transient reads are not needed
  3. Confirm no other keyspaces use transient RF before toggling the flag
  4. 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

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


AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10). Data as JSON: /api/errors/baf0534b9d3a5d0a. Report an issue: GitHub.