apache/cassandra · warning

Ignoring provided values

Error message

Ignoring provided values %s as they are not supported for %s (ignored values are: %s)

What it means

Values.guard intersects the provided values with the guardrail's configured 'ignored' set. Any provided value that is configured as not-supported-for-<what> is warned about and then passed to the ignoreAction (skipped/rejected silently). The user is told which of their values were dropped and what the ignored set is.

Solutions

  1. Remove the listed unsupported values from the statement/configuration.
  2. Replace them with the supported alternative for the current Cassandra version.
  3. If a value should be supported, adjust the guardrail's ignored configuration rather than the workload.

Example fix

// before
CREATE TABLE t (...) WITH compression = {'class': 'LZ4Compressor', 'unsupported_option': 1};
// after
CREATE TABLE t (...) WITH compression = {'class': 'LZ4Compressor'};
Defensive patterns

Strategy: validation

Validate before calling

// Compare your option values against the guardrail's ignored set before issuing the statement
Set<String> provided = parseOptions(ddl);
Set<String> ignored = guardrailsConfig.ignoredValuesFor(what);
if (!Collections.disjoint(provided, ignored)) {
    logger.warn("Options will be ignored: {}", Sets.intersection(provided, ignored));
}

Prevention

When it happens

Trigger: An operation (e.g. CREATE TABLE with unsupported compression options, altertable options) supplies values configured in the guardrail's ignored list; called from guard() itself and from test harnesses testValuesIgnored/testValuesDisallowed/testValuesUsers.

Common situations: Using table options, codecs, or feature settings deprecated/unsupported in the current version; copied DDL from older clusters referencing removed options.

Related errors


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

Appendix: source

Thrown at src/java/org/apache/cassandra/db/guardrails/Values.java:119

     *                     without an associated client come from asynchronous processes such as compaction, and we
     *                     don't want to interrupt such processes.
     */
    public void guard(Set<T> values, Consumer<T> ignoreAction, @Nullable ClientState state)
    {
        if (!enabled(state))
            return;

        Set<T> disallowed = disallowedValues.apply(state);
        Set<T> toDisallow = Sets.intersection(values, disallowed);
        if (!toDisallow.isEmpty())
            fail(format("Provided values %s are not allowed for %s (disallowed values are: %s)",
                        toDisallow.stream().sorted().collect(Collectors.toList()), what, disallowed), state);

        Set<T> ignored = ignoredValues.apply(state);
        Set<T> toIgnore = Sets.intersection(values, ignored);
        if (!toIgnore.isEmpty())
        {
            warn(format("Ignoring provided values %s as they are not supported for %s (ignored values are: %s)",
                        toIgnore.stream().sorted().collect(Collectors.toList()), what, ignored));
            toIgnore.forEach(ignoreAction);
        }

        Set<T> warned = warnedValues.apply(state);
        Set<T> toWarn = Sets.intersection(values, warned);
        if (!toWarn.isEmpty())
            warn(format("Provided values %s are not recommended for %s (warned values are: %s)",
                        toWarn.stream().sorted().collect(Collectors.toList()), what, warned));
    }
}

View on GitHub (pinned to 88fd0f6a0e)