apache/cassandra · error · ConfigurationException

Invalid accord progress log configuration:

Error message

Invalid accord progress log configuration: 

What it means

The Accord progress log configuration (concurrency, maxActiveRunTime) is built into a DefaultProgressLog.Config; IllegalArgumentException from that construction is wrapped into this ConfigurationException so an invalid accord progress_log setup aborts startup with the underlying reason appended.

Source

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

        }
        catch (IllegalArgumentException e)
        {
            throw new ConfigurationException("Invalid guardrails configuration: " + e.getMessage(), e);
        }
    }

    // TODO (expected): move all of the Accord config setup and accessors into AccordConfig
    private static void applyAccord()
    {
        try
        {
            accordProgressLogConfig = new DefaultProgressLog.Config();
            accordProgressLogConfig.concurrency = conf.accord.progress_log_concurrency.or(32);
            accordProgressLogConfig.maxActiveRunTime = conf.accord.progress_log_query_fallback_timeout.toDuration();
        }
        catch (IllegalArgumentException e)
        {
            throw new ConfigurationException("Invalid accord progress log configuration: " + e.getMessage(), e);
        }
        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)

View on GitHub (pinned to 88fd0f6a0e)

Solutions

  1. Fix accord.progress_log_concurrency to a positive value (or remove to use the default 32)
  2. Correct accord.progress_log_query_fallback_timeout to a valid duration format
  3. See the wrapped IllegalArgumentException message after the prefix for the exact bad field
  4. Align the accord section with the documented schema for your Cassandra version

Example fix

// before (cassandra.yaml)
accord:
  progress_log_concurrency: 0
// after
accord:
  progress_log_concurrency: 32
Defensive patterns

Strategy: try-catch

Validate before calling

try {
    if (conf.accord.progress_log_concurrency.isSet() && conf.accord.progress_log_concurrency.get() <= 0)
        preflightFail("progress_log_concurrency must be positive");
} catch (Exception e) { preflightFail("accord progress log: " + e.getMessage()); }

Try / catch

try { DatabaseDescriptor.daemonInitialization(); } catch (ConfigurationException e) { LOG.error("Accord progress log config rejected: " + e.getMessage()); System.exit(1); }

Prevention

When it happens

Trigger: cassandra.yaml accord section with progress_log_concurrency or progress_log_query_fallback_timeout values that DefaultProgressLog.Config rejects (e.g. concurrency <= 0 or malformed duration), during applyAccord initialization.

Common situations: Zero/negative progress_log_concurrency; duration string in wrong format or unit; config carried from an older version where defaults/limits differed; hand-edited accord section with typos.

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/a6efee60ff9977e7. Report an issue: GitHub.