apache/cassandra · warning

is not recommended

Error message

{featureName} is not recommended

What it means

EnableFlag.ensureEnabled evaluates a guardrail-protected feature (featureName) against the client state. When the feature is explicitly disallowed the client gets a failure; when it merely crosses the 'warned' threshold, this warning is raised and the operation continues. It is a recommendation signal, not a hard failure.

Solutions

  1. Review the feature's documentation and decide whether to proceed despite the recommendation.
  2. Adjust the guardrail's warned threshold in cassandra.yaml if the feature is acceptable in your environment.
  3. Set the guardrail's enabled/allowed flag explicitly if you want the operation blocked or silenced.

Example fix

// before (cassandra.yaml)
full_query_logging_warn_threshold: 10
// after — warn earlier or raise threshold deliberately
full_query_logging_warn_threshold: 100
Defensive patterns

Strategy: validation

Validate before calling

// Before enabling a feature, check the guardrail state
if (Guardrails.instance.isEnabled(EnableFlag.FEATURE_NAME)) {
    logger.info("Feature {} is allowed", FEATURE_NAME);
}

Prevention

When it happens

Trigger: A client operation (e.g. enabling a risky feature such asConsistentReplacement or user-defined functions) is issued while the guardrail's warned flag configuration matches the cluster/client state, after the not-allowed check passed.

Common situations: Operators enabling features flagged as discouraged in a production cluster; upgraded clusters inheriting default warn thresholds for features now considered unsafe.

Understand the failure class

Background: "is deprecated and will be removed" — deprecation warnings for old API names, keywords, and options, and how to migrate before the removal release — this error's family across 29 libraries.

Related errors


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

Appendix: source

Thrown at src/java/org/apache/cassandra/db/guardrails/EnableFlag.java:132

     * @param state       The client state, used to skip the check if the query is internal or is done by a superuser. A
     *                    {@code null} value means that the check should be done regardless of the query, although it
     *                    won't throw any exception if the failure threshold is exceeded. This is so because checks
     *                    without an associated client come from asynchronous processes such as compaction, and we don't
     *                    want to interrupt such processes.
     */
    public void ensureEnabled(String featureName, @Nullable ClientState state)
    {
        if (!enabled(state))
            return;

        if (!enabled.test(state))
        {
            fail(featureName + " is not allowed", state);
            return;
        }

        if (warned.test(state))
            warn(featureName + " is not recommended");
    }
}

View on GitHub (pinned to 88fd0f6a0e)