apache/cassandra · warning
Used sytem property variable
Error message
Used sytem property variable {} to override Cassandra configuration but there is no such system property counter-part to override. What it means
Warning from YamlConfigurationLoader when a cassandra.-prefixed JVM system property does not correspond to any known overridable configuration key (not in OVERRIDABLE_CONFIG_NAMES). The property is ignored for config purposes, so the user's intended override silently does nothing (note the pre-existing 'sytem' typo in the message).
Solutions
- Fix the property name to match a valid overridable config key (check the current version's cassandra.yaml / Configuration class).
- Move the setting into cassandra.yaml if it is a valid config key but not in the overridable list.
- After upgrades, verify renamed/removed settings against the release notes and update startup scripts.
- Watch for this warning at startup — it means your override is being ignored entirely.
Example fix
// before cassandra-env.sh: JVM_OPTS="$JVM_OPTS -Dcassandra.commitlog_sync_periond_ms=1000" // after cassandra-env.sh: JVM_OPTS="$JVM_OPTS -Dcassandra.commitlog_sync_period_in_ms=1000"
Defensive patterns
Strategy: validation
Validate before calling
# verify the key exists before using it as a -D override
grep -q "^${key}:" conf/cassandra.yaml || echo "unknown config key: $key" Prevention
- Validate property names against the current version's cassandra.yaml (keys get renamed across releases).
- Never ignore this startup warning — it means the override is silently dropped.
- After upgrades, diff your -D flags against release notes.
When it happens
Trigger: Passing -Dcassandra.<typo-or-unknown-key>=<value> at startup, e.g. -Dcassandra.commitlog_sync_periond_ms or -Dcassandra.some_renamed_setting after a config key was renamed across versions.
Common situations: Typos in JVM options; following outdated documentation/blogs after a config setting was renamed or removed in an upgrade; copy-pasting options from another Cassandra version; settings that were never overridable via system properties.
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
- Detected JVM property
- Attempted to get heap dump path without -XX:HeapDumpPath or…
- Bad value for system property -D
- Invalid value for system property: expected floating point…
- Invalid value for system property: expected integer value…
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/bed6d9e18d925710.
Report an issue: GitHub.
Appendix: source
Thrown at src/java/org/apache/cassandra/config/YamlConfigurationLoader.java:212
Map<String, Object> overridingProperties = new HashMap<>();
for (String originalKey : orderedPropertiesMap.keySet())
{
if (originalKey.startsWith(SYSTEM_PROPERTY_PREFIX))
{
String value = props.getProperty(originalKey);
String configKey = originalKey.replace(SYSTEM_PROPERTY_PREFIX, "");
if (OVERRIDABLE_CONFIG_NAMES.contains(configKey))
{
if (value != null && !overridingProperties.containsKey(configKey))
{
if (!DatabaseDescriptor.hasLoggedConfig()) // CASSANDRA-9909: Avoid flooding config during initialization
logger.warn("Detected JVM property {}={} override for Cassandra configuration '{}'.", originalKey, value, configKey);
overridingProperties.put(configKey, getScalarOrJsonTree(value));
}
}
else
{
logger.warn("Used sytem property variable {} to override Cassandra configuration but there is no such system property counter-part to override.", originalKey);
}
}
}
if (!overridingProperties.isEmpty())
updateFromMap(maybeFlattenNestedProperties(overridingProperties), false, obj);
}
}
private static void maybeAddEnvironmentVariables(Object obj)
{
if (CONFIG_ALLOW_ENVIRONMENT_VARIABLES.getBoolean(CASSANDRA_ALLOW_CONFIG_ENVIRONMENT_VARIABLES.getBooleanOrDefault(false)))
{
Map<String, String> orderedEnvironmentMap = new TreeMap<>(System.getenv()); // checkstyle: suppress nearby 'blockSystemPropertyUsage'
Map<String, Object> overridingProperties = new HashMap<>();
for (Map.Entry<String, String> env : orderedEnvironmentMap.entrySet())
{
String originalKey = env.getKey();
if (env.getKey().startsWith(ENVIRONMENT_VARIABLE_PREFIX))View on GitHub (pinned to 88fd0f6a0e)