{"record":{"id":"3ab19840926abec1","repo":"apache/cassandra","slug":"there-are-configuration-entries-for-startup-checks","errorCode":null,"errorMessage":"There are configuration entries for startup checks which do not exist: <notExistingCheckNames>","messagePattern":"There are configuration entries for startup checks which do not exist: <notExistingCheckNames>","errorType":"validation","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"src/java/org/apache/cassandra/config/StartupChecksConfiguration.java","lineNumber":127,"sourceCode":"    }\n\n    private void apply()\n    {\n        List<String> notExistingCheckNames = new ArrayList<>();\n        List<String> notConfigurableCheckNames = new ArrayList<>();\n\n        for (Map.Entry<String, Map<String, Object>> userConfigEntry : options.entrySet())\n        {\n            String key = userConfigEntry.getKey();\n            StartupCheck check = startupChecks.getCheck(key);\n            if (check == null)\n                notExistingCheckNames.add(key);\n            else if (!check.isConfigurable())\n                notConfigurableCheckNames.add(key);\n        }\n\n        if (!notExistingCheckNames.isEmpty())\n            throw new IllegalStateException(\"There are configuration entries for startup checks which do not exist: \" + notExistingCheckNames);\n        if (!notConfigurableCheckNames.isEmpty())\n            throw new IllegalStateException(\"There are configuration entries for startup checks which are not configurable: \" + notConfigurableCheckNames);\n\n        for (StartupCheck check : startupChecks.getChecks())\n        {\n            String startupCheckName = check.name();\n            Map<String, Object> configMap = this.options.computeIfAbsent(startupCheckName, k -> new HashMap<>());\n            if (configMap.containsKey(ENABLED_PROPERTY))\n                configMap.putIfAbsent(ENABLED_PROPERTY, FALSE);\n            else if (check.isDisabledByDefault())\n                configMap.put(ENABLED_PROPERTY, FALSE);\n            else\n                configMap.put(ENABLED_PROPERTY, TRUE);\n        }\n    }\n\n    public void verify() throws StartupException\n    {","sourceCodeStart":109,"sourceCodeEnd":145,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/config/StartupChecksConfiguration.java#L109-L145","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","solutions":["Correct the check name in cassandra.yaml to match a registered StartupCheck.name()","Remove the stale startup_checks entry for the non-existent check","Verify the jar providing the custom check is on the classpath"],"exampleFix":"# before\nstartup_checks:\n  check_rack: {}\n# after (check_rack does not exist)\nstartup_checks:\n  data_directories: {}","handlingStrategy":"validation","validationCode":"Set<String> known = StartupChecksConfiguration.getStartupChecks().stream()\n    .map(StartupCheck::name).collect(Collectors.toSet());\nSet<String> configured = yaml.startup_checks.keySet();\nSet<String> unknown = new HashSet<>(configured); unknown.removeAll(known);\nif (!unknown.isEmpty()) throw new IllegalArgumentException(\"Unknown startup checks: \" + unknown);","typeGuard":null,"tryCatchPattern":"try { startupChecksConfiguration.apply(); }\ncatch (IllegalStateException e) { log.error(\"Fix cassandra.yaml startup_checks: {}\", e.getMessage()); throw e; }","preventionTips":["Only add startup_checks entries whose names match registered StartupCheck.name()","After upgrades, re-audit startup_checks config against available checks","Keep custom check jars and their config entries in sync"],"tags":["configuration","startup","validation"],"backgroundTag":"invalid-config-value","analyzedSha":"88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1","analyzedAt":"2026-09-10T07:29:22.284Z","contentChangedAt":"2026-09-10T07:29:22.284Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}