apache/cassandra · error · ConfigurationException
concurrent_materialized_view_builders should be strictly…
Error message
concurrent_materialized_view_builders should be strictly greater than 0, but was ${conf.concurrent_materialized_view_builders} What it means
concurrent_materialized_view_builders sets how many materialized view build tasks may run concurrently; applySimpleConfig requires it to be strictly positive at startup and throws ConfigurationException otherwise.
Solutions
- Set concurrent_materialized_view_builders to a positive integer (default 1) in cassandra.yaml
- Remove the key to accept the default
- To pause view building use nodetool viewbuildstatus / disable materialized views rather than an invalid 0
- Restart the node
Example fix
// before (cassandra.yaml) concurrent_materialized_view_builders: 0 // after concurrent_materialized_view_builders: 1
Defensive patterns
Strategy: validation
Validate before calling
if (conf.concurrentMaterializedViewBuilders != null && conf.concurrentMaterializedViewBuilders <= 0)
throw new IllegalArgumentException("concurrent_materialized_view_builders must be > 0"); Try / catch
try { DatabaseDescriptor.daemonInitialization(); }
catch (ConfigurationException e) { LOG.fatal(e.getMessage()); System.exit(1); } Prevention
- Keep the default (1) unless deliberately tuned
- Use proper mechanisms (dropping views) instead of 0 to stop view building
- Lint templated cassandra.yaml output for empty/zero numerics
When it happens
Trigger: Node startup with concurrent_materialized_view_builders: 0 or a negative value in cassandra.yaml.
Common situations: Operator attempting to stop view building by zeroing the setting; template default rendering 0; accidental comment splitting the value from a digit.
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
- A maximum number of tokens per node is supported
- accord.cache_size option was set incorrectly to
- accord.journal_directory must not be the same as any…
- Allowing java.lang.System.* access in UDFs is dangerous and…
- be positive
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/9543c2ff02695dc5.
Report an issue: GitHub.
Appendix: source
Thrown at src/java/org/apache/cassandra/config/DatabaseDescriptor.java:973
if (conf.memtable_cleanup_threshold < 0.01f)
throw new ConfigurationException("memtable_cleanup_threshold must be >= 0.01, but was " + conf.memtable_cleanup_threshold, false);
if (conf.memtable_cleanup_threshold > 0.99f)
throw new ConfigurationException("memtable_cleanup_threshold must be <= 0.99, but was " + conf.memtable_cleanup_threshold, false);
if (conf.memtable_cleanup_threshold < 0.1f)
logger.warn("memtable_cleanup_threshold is set very low [{}], which may cause performance degradation", conf.memtable_cleanup_threshold);
if (conf.concurrent_compactors == null)
conf.concurrent_compactors = Math.min(8, Math.max(2, Math.min(FBUtilities.getAvailableProcessors(), conf.data_file_directories.length)));
if (conf.concurrent_compactors <= 0)
throw new ConfigurationException("concurrent_compactors should be strictly greater than 0, but was " + conf.concurrent_compactors, false);
applyConcurrentValidations(conf);
applyRepairCommandPoolSize(conf);
applyThresholdsValidations(conf);
if (conf.concurrent_materialized_view_builders <= 0)
throw new ConfigurationException("concurrent_materialized_view_builders should be strictly greater than 0, but was " + conf.concurrent_materialized_view_builders, false);
if (conf.num_tokens != null && conf.num_tokens > MAX_NUM_TOKENS)
throw new ConfigurationException(String.format("A maximum number of %d tokens per node is supported", MAX_NUM_TOKENS), false);
try
{
// if prepared_statements_cache_size option was set to "auto" then size of the cache should be "max(1/256 of Heap (in MiB), 10MiB)"
preparedStatementsCacheSizeInMiB = (conf.prepared_statements_cache_size == null)
? Math.max(10, (int) (Runtime.getRuntime().maxMemory() / 1024 / 1024 / 256))
: conf.prepared_statements_cache_size.toMebibytes();
if (preparedStatementsCacheSizeInMiB == 0)
throw new NumberFormatException(); // to escape duplicating error message
// we need this assignment for the Settings virtual table - CASSANDRA-17734
conf.prepared_statements_cache_size = new DataStorageSpec.LongMebibytesBound(preparedStatementsCacheSizeInMiB);
}
catch (NumberFormatException e)View on GitHub (pinned to 88fd0f6a0e)