apache/cassandra · error · ConfigurationException
Unknown property
Error message
Unknown property '%s'
What it means
AutoRepairParams.create parses the table-level auto repair options map and rejects any key not matching one of the known Option enum values (case-insensitively). ConfigurationException is thrown because an unrecognized auto-repair property was supplied, typically via CREATE/ALTER TABLE ... WITH auto_repair = {...}.
Solutions
- Check the Option enum in AutoRepairParams.java and use exactly those key names
- Fix the typo in the WITH auto_repair options map
- Verify the option exists in your Cassandra version (newer options won't parse on older builds)
Example fix
// before
ALTER TABLE ks.tbl WITH auto_repair = {'full_enable': 'true'};
// after
ALTER TABLE ks.tbl WITH auto_repair = {'full_enabled': 'true'}; Defensive patterns
Strategy: validation
Validate before calling
Set<String> known = Arrays.stream(Option.values()).map(o -> o.toString().toLowerCase()).collect(Collectors.toSet());
for (String key : autoRepairOptions.keySet())
if (!known.contains(key.toLowerCase())) throw new IllegalArgumentException("Unknown auto repair option: " + key); Try / catch
try { AutoRepairParams.create(opts); } catch (ConfigurationException e) { if (e.getMessage().startsWith("Unknown property")) { /* correct the key name and retry */ } else throw e; } Prevention
- Generate option keys from the Option enum, not string literals
- Keep a versioned allowlist of auto repair keys per Cassandra release
- Validate CQL schema statements in CI before applying
When it happens
Trigger: Executing CREATE TABLE / ALTER TABLE with an auto_repair options map containing a typo'd or unknown key, e.g. {'full_enable': 'true'} instead of 'full_enabled'.
Common situations: Typos in CQL schema statements; copying option names from docs of a different version; camelCase vs snake_case confusion (only enum-name case-insensitive matching is done).
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
- Cannot create table . with transactional mode with…
- Invalid caching sub-options
- Invalid value ' ' for caching sub-option ' ': only ' ' and…
- Invalid value ' ' for caching sub-option ' ': only ' ', '…
- Invalid value for ' ' compaction sub-option - must be an…
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/8da1baaa2c78f26f.
Report an issue: GitHub.
Appendix: source
Thrown at src/java/org/apache/cassandra/schema/AutoRepairParams.java:82
AutoRepairParams(Map<String, String> options)
{
this.options = ImmutableMap.copyOf(options);
}
public static final AutoRepairParams DEFAULT =
new AutoRepairParams(DEFAULT_OPTIONS);
public static AutoRepairParams create(Map<String, String> options)
{
Map<String, String> optionsMap = new TreeMap<>(DEFAULT_OPTIONS);
if (options != null)
{
for (Map.Entry<String, String> entry : options.entrySet())
{
if (Arrays.stream(Option.values()).noneMatch(option -> option.toString().equalsIgnoreCase(entry.getKey())))
{
throw new ConfigurationException(format("Unknown property '%s'", entry.getKey()));
}
optionsMap.put(entry.getKey(), entry.getValue());
}
}
return new AutoRepairParams(optionsMap);
}
public boolean repairEnabled(AutoRepairConfig.RepairType type)
{
String option = LocalizeString.toLowerCaseLocalized(type.toString()) + "_enabled";
String enabled = options.getOrDefault(option, DEFAULT_OPTIONS.get(option));
return Boolean.parseBoolean(enabled);
}
public int priority()
{
String priority = options.getOrDefault(Option.PRIORITY.toString(), DEFAULT_OPTIONS.get(Option.PRIORITY.toString()));
return Integer.parseInt(priority);View on GitHub (pinned to 88fd0f6a0e)