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
- Fix accord.progress_log_concurrency to a positive value (or remove to use the default 32)
- Correct accord.progress_log_query_fallback_timeout to a valid duration format
- See the wrapped IllegalArgumentException message after the prefix for the exact bad field
- 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
- Use positive progress_log_concurrency values
- Write durations in documented format with unit suffix
- Align accord section with current version schema
- Validate accord config on staging before rollout
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
- Concurrent accord operations must be non-negative
- DC weights must be zero or positive
- %s must be a positive number, got %s
- %s must be greater than zero
- %s must specify at least one DC
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/a6efee60ff9977e7.
Report an issue: GitHub.