apache/cassandra · error · ConfigurationException

Invalid configuration for cms_commit_retry_strategy.

Error message

Invalid configuration for cms_commit_retry_strategy. 

What it means

DatabaseDescriptor.applySimpleConfig failed to parse the cms_commit_retry_strategy setting from cassandra.yaml. The value is validated by RetryStrategy.parse(), and any exception during parsing (bad class name, bad parameters, invalid max retries/latency spec) is wrapped into a ConfigurationException. The nested exception's message is appended to explain exactly which part of the spec was rejected.

Source

Thrown at src/java/org/apache/cassandra/config/DatabaseDescriptor.java:1440

        AccordService.applyProtocolModifiers(getAccord());
    }

    private static void applyCMS()
    {
        try
        {
            long initialDelayMs = conf.cms_commit_retry_initial_delay.to(TimeUnit.MILLISECONDS);
            long maxDelayMs = conf.cms_commit_retry_max_delay.to(TimeUnit.MILLISECONDS);
            // range of backoff wait time starts at 0ms backing off exponentially at initialDelayMs * 2^attempts
            String spec = String.format("0ms ... %dms * 2^attempts <= %dms", initialDelayMs, maxDelayMs);
            logger.debug("Initializing cms_commit_retry_strategy from spec: " + spec);
            cms_commit_retry_strategy = RetryStrategy.parse(spec,
                                                            TimeoutStrategy.LatencySourceFactory.none(),
                                                            RetryStrategy.randomizers.uniform());
        }
        catch (Exception e)
        {
            throw new ConfigurationException("Invalid configuration for cms_commit_retry_strategy. " + e.getMessage(), e);
        }
    }

    public static StartupChecksConfiguration getStartupChecksConfiguration()
    {
        return startupChecksConfiguration;
    }

    private static void applyStartupChecks()
    {
        try
        {
            StartupChecks startupChecks = new StartupChecks().withDefaultTests().withTest(new FileSystemOwnershipCheck()).withServiceLoaderTests();
            startupChecksConfiguration = new StartupChecksConfiguration(startupChecks, conf.startup_checks);
        }
        catch (Throwable t)
        {
            throw new ConfigurationException("Invalid configuration of startup_checks: " + t.getMessage());

View on GitHub (pinned to 88fd0f6a0e)

Solutions

  1. Read the nested cause message in the error text; it names the exact parse failure.
  2. Fix cms_commit_retry_strategy in cassandra.yaml to a valid RetryStrategy spec (e.g. the default exponential form) or remove the key to use the default.
  3. Check config/ or the cassandra.yaml shipped with your version for the documented syntax of cms_commit_retry_strategy.

Example fix

// before (cassandra.yaml)
cms_commit_retry_strategy:
    - class_name: Exponetial
      max_attempts: 8
// after
cms_commit_retry_strategy:
    - class_name: Exponential
      max_attempts: 8
Defensive patterns

Strategy: validation

Validate before calling

// before start, validate the yaml value parses
String spec = yaml.getString("cms_commit_retry_strategy");
if (spec != null) {
    try { RetryStrategy.parse(spec, TimeoutStrategy.LatencySourceFactory.none(), RetryStrategy.randomizers.uniform()); }
    catch (Exception e) { throw new IllegalArgumentException("cms_commit_retry_strategy invalid: " + e.getMessage()); }
}

Try / catch

catch (ConfigurationException e) { logger.error("Fix cms_commit_retry_strategy in cassandra.yaml: {}", e.getMessage()); throw e; }

Prevention

When it happens

Trigger: cassandra.yaml contains a cms_commit_retry_strategy entry whose spec string cannot be parsed by RetryStrategy.parse(), e.g. an unknown strategy name, malformed parameter list, or invalid retry/timeout values.

Common situations: Hand-edited cassandra.yaml with a typo in the strategy name; copying a retry spec from another subsystem (like request retries) that uses a different format; upgrading Cassandra to a version where cms_commit_retry_strategy was introduced and guessing its syntax.

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


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