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

  1. Check the Option enum in AutoRepairParams.java and use exactly those key names
  2. Fix the typo in the WITH auto_repair options map
  3. 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

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


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)