apache/cassandra · error · IllegalStateException

There are configuration entries for startup checks which do

Error message

There are configuration entries for startup checks which do not exist: <notExistingCheckNames>

What it means

StartupChecksConfiguration.apply() validates the startup_checks config section against the registered StartupCheck implementations. If a config key names a check that does not exist, it throws IllegalStateException, preventing Cassandra from starting with an unknown/misspelled check configuration.

Source

Thrown at src/java/org/apache/cassandra/config/StartupChecksConfiguration.java:127

    }

    private void apply()
    {
        List<String> notExistingCheckNames = new ArrayList<>();
        List<String> notConfigurableCheckNames = new ArrayList<>();

        for (Map.Entry<String, Map<String, Object>> userConfigEntry : options.entrySet())
        {
            String key = userConfigEntry.getKey();
            StartupCheck check = startupChecks.getCheck(key);
            if (check == null)
                notExistingCheckNames.add(key);
            else if (!check.isConfigurable())
                notConfigurableCheckNames.add(key);
        }

        if (!notExistingCheckNames.isEmpty())
            throw new IllegalStateException("There are configuration entries for startup checks which do not exist: " + notExistingCheckNames);
        if (!notConfigurableCheckNames.isEmpty())
            throw new IllegalStateException("There are configuration entries for startup checks which are not configurable: " + notConfigurableCheckNames);

        for (StartupCheck check : startupChecks.getChecks())
        {
            String startupCheckName = check.name();
            Map<String, Object> configMap = this.options.computeIfAbsent(startupCheckName, k -> new HashMap<>());
            if (configMap.containsKey(ENABLED_PROPERTY))
                configMap.putIfAbsent(ENABLED_PROPERTY, FALSE);
            else if (check.isDisabledByDefault())
                configMap.put(ENABLED_PROPERTY, FALSE);
            else
                configMap.put(ENABLED_PROPERTY, TRUE);
        }
    }

    public void verify() throws StartupException
    {

View on GitHub (pinned to 88fd0f6a0e)

Solutions

  1. Correct the check name in cassandra.yaml to match a registered StartupCheck.name()
  2. Remove the stale startup_checks entry for the non-existent check
  3. Verify the jar providing the custom check is on the classpath

Example fix

# before
startup_checks:
  check_rack: {}
# after (check_rack does not exist)
startup_checks:
  data_directories: {}
Defensive patterns

Strategy: validation

Validate before calling

Set<String> known = StartupChecksConfiguration.getStartupChecks().stream()
    .map(StartupCheck::name).collect(Collectors.toSet());
Set<String> configured = yaml.startup_checks.keySet();
Set<String> unknown = new HashSet<>(configured); unknown.removeAll(known);
if (!unknown.isEmpty()) throw new IllegalArgumentException("Unknown startup checks: " + unknown);

Try / catch

try { startupChecksConfiguration.apply(); }
catch (IllegalStateException e) { log.error("Fix cassandra.yaml startup_checks: {}", e.getMessage()); throw e; }

Prevention

When it happens

Trigger: cassandra.yaml contains startup_checks.<name> where <name> matches no registered StartupCheck — e.g. a typo or a check from a removed/never-installed plugin.

Common situations: Misspelling a check name in cassandra.yaml; copying config referencing checks that exist only in a fork or newer version; removing a custom check jar but leaving its config.

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/3ab19840926abec1. Report an issue: GitHub.