apache/cassandra · error · SyntaxException

Invalid value for property

Error message

Invalid value for property '%s'. It should not be null.

What it means

PropertyDefinitions.getProperty() returns the raw value of a previously added property but throws SyntaxException when the stored value is null. Since addProperty only stores non-null values in practice, hitting this means the property was never added or was explicitly mapped to null; callers use it to fetch required property values during statement preparation.

Solutions

  1. Check the property exists first (properties map / hasProperty) before calling getProperty
  2. Fix the property name to match the key used in addProperty
  3. Ensure addProperty is called with a non-null value for every required option
  4. Provide a default via the typed getters (getString/getInt/getBoolean/getDouble) which take defaults

Example fix

// before
Object compression = properties.getProperty("compressio");
// after
if (properties.hasProperty("compression")) {
    Object compression = properties.getProperty("compression");
}
Defensive patterns

Strategy: validation

Validate before calling

function requireProp(defs, name) { if (!defs.hasProperty || !defs.hasProperty(name)) throw new Error(`Missing required property: ${name}`); return defs.getProperty(name); }

Type guard

function hasNonNull(v) { return v !== null && v !== undefined; }

Try / catch

try { Object val = defs.getProperty(name); } catch (SyntaxException e) { if (e.getMessage().contains("should not be null")) applyDefault(name); else throw e; }

Prevention

When it happens

Trigger: Calling getProperty(name) (directly from Java, e.g. in custom table/compaction option handling or unit tests like testGetMissingProperty) for a property name that was never put into the PropertyDefinitions map.

Common situations: Custom CQL extension code or tests querying a misspelled property key; refactors that renamed a property constant; code paths assuming a property exists before checking hasProperty/containsKey.

Understand the failure class

Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.

Related errors


AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10). Data as JSON: /api/errors/8b1c91258745ebbf. Report an issue: GitHub.

Appendix: source

Thrown at src/java/org/apache/cassandra/cql3/statements/PropertyDefinitions.java:188

    {
        if (null == value)
            throw new IllegalArgumentException("value argument can't be null");

        try
        {
            return Double.parseDouble(value);
        }
        catch (NumberFormatException e)
        {
            throw new SyntaxException(format("Invalid double value %s for '%s'", value, key));
        }
    }

    public Object getProperty(String name)
    {
        Object ret = properties.get(name);
        if (ret == null)
            throw new SyntaxException(String.format("Invalid value for property '%s'. It should not be null.", name));

        return ret;
    }
}

View on GitHub (pinned to 88fd0f6a0e)