apache/cassandra · warning

property for check_data_resurrection startup check is not…

Error message

 property for check_data_resurrection startup check is not set or is set to 0s. Consider increasing the default value as the startup check might prevent the startup of the node when gc_grace_seconds for user tables is set very low and the node is restarted.

What it means

The check_data_resurrection startup check warns when its minimum-threshold config property (MINIMUM_THRESHOLD_CONFIG_PROPERTY, e.g. cassandra.check_data_resurrection.minimum_threshold) is unset or 0s. With a 0 threshold the check compares tombstone/gc_grace data without a safety margin and can block node startup when tables use very low gc_grace_seconds.

Solutions

  1. Set the property to a sensible duration (e.g. greater than your smallest gc_grace_seconds, commonly hours) in cassandra.yaml / startup-check configuration
  2. If intentionally accepting the risk, document it and ensure no user tables use very low gc_grace_seconds
  3. Review table schemas: raise gc_grace_seconds on user tables below the threshold so the startup check won't block restarts
Defensive patterns

Strategy: validation

Validate before calling

// validate before startup
long thresholdMs = Long.parseLong(System.getProperty("cassandra.check_data_resurrection.minimum_threshold_ms", "0"));
long minGcGrace = tables.stream().mapToLong(t -> t.gcGraceSeconds()).min().orElse(0);
if (thresholdMs == 0 || thresholdMs < minGcGrace)
    throw new IllegalArgumentException("Set check_data_resurrection threshold above the smallest gc_grace_seconds");

Prevention

When it happens

Trigger: getMinimumThresholdMillis() reads the configured duration and finds it absent or parsed to 0; the check then runs with minimumThresholdInMs = 0 during node startup (Heartbeat-based data-resurrection validation).

Common situations: Fresh installs without the property; operators explicitly setting it to 0s to disable the margin; clusters with tables at gc_grace_seconds=0 that then fail startup after restarts.

Understand the failure class

Background: "missing required config value" errors: why libraries refuse to start when a configuration key is empty, unset, or blank — this error's family across 48 libraries.

Related errors


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

Appendix: source

Thrown at src/java/org/apache/cassandra/service/DataResurrectionCheck.java:186

        {
            try
            {
                minimumThresholdInMs = new DurationSpec.LongSecondsBound(minimumThresholdConfigValue).to(MILLISECONDS);
            }
            catch (Throwable t)
            {
                throw new IllegalArgumentException("Unable to parse " + MINIMUM_THRESHOLD_CONFIG_PROPERTY
                                                   + " property for check_data_resurrection startup check.");
            }
        }
        else
        {
            minimumThresholdInMs = 0;
        }

        if (minimumThresholdInMs == 0)
        {
            LOGGER.warn(MINIMUM_THRESHOLD_CONFIG_PROPERTY + " property for check_data_resurrection startup check " +
                        "is not set or is set to 0s. Consider increasing the default value as the startup check " +
                        "might prevent the startup of the node when gc_grace_seconds for user tables " +
                        "is set very low and the node is restarted.");
        }

        return minimumThresholdInMs;
    }

    @Override
    public boolean isConfigurable()
    {
        return true;
    }

    @Override
    public String name()
    {
        return "check_data_resurrection";

View on GitHub (pinned to 88fd0f6a0e)