{"record":{"id":"ca1fd7258075476c","repo":"apache/cassandra","slug":"invalid-configuration-for-cms-commit-retry-strateg","errorCode":null,"errorMessage":"Invalid configuration for cms_commit_retry_strategy. ","messagePattern":"Invalid configuration for cms_commit_retry_strategy\\. ","errorType":"validation","errorClass":"ConfigurationException","httpStatus":null,"severity":"error","filePath":"src/java/org/apache/cassandra/config/DatabaseDescriptor.java","lineNumber":1440,"sourceCode":"        AccordService.applyProtocolModifiers(getAccord());\n    }\n\n    private static void applyCMS()\n    {\n        try\n        {\n            long initialDelayMs = conf.cms_commit_retry_initial_delay.to(TimeUnit.MILLISECONDS);\n            long maxDelayMs = conf.cms_commit_retry_max_delay.to(TimeUnit.MILLISECONDS);\n            // range of backoff wait time starts at 0ms backing off exponentially at initialDelayMs * 2^attempts\n            String spec = String.format(\"0ms ... %dms * 2^attempts <= %dms\", initialDelayMs, maxDelayMs);\n            logger.debug(\"Initializing cms_commit_retry_strategy from spec: \" + spec);\n            cms_commit_retry_strategy = RetryStrategy.parse(spec,\n                                                            TimeoutStrategy.LatencySourceFactory.none(),\n                                                            RetryStrategy.randomizers.uniform());\n        }\n        catch (Exception e)\n        {\n            throw new ConfigurationException(\"Invalid configuration for cms_commit_retry_strategy. \" + e.getMessage(), e);\n        }\n    }\n\n    public static StartupChecksConfiguration getStartupChecksConfiguration()\n    {\n        return startupChecksConfiguration;\n    }\n\n    private static void applyStartupChecks()\n    {\n        try\n        {\n            StartupChecks startupChecks = new StartupChecks().withDefaultTests().withTest(new FileSystemOwnershipCheck()).withServiceLoaderTests();\n            startupChecksConfiguration = new StartupChecksConfiguration(startupChecks, conf.startup_checks);\n        }\n        catch (Throwable t)\n        {\n            throw new ConfigurationException(\"Invalid configuration of startup_checks: \" + t.getMessage());","sourceCodeStart":1422,"sourceCodeEnd":1458,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/config/DatabaseDescriptor.java#L1422-L1458","documentation":"DatabaseDescriptor.applySimpleConfig failed to parse the cms_commit_retry_strategy setting from cassandra.yaml. The value is validated by RetryStrategy.parse(), and any exception during parsing (bad class name, bad parameters, invalid max retries/latency spec) is wrapped into a ConfigurationException. The nested exception's message is appended to explain exactly which part of the spec was rejected.","triggerScenarios":"cassandra.yaml contains a cms_commit_retry_strategy entry whose spec string cannot be parsed by RetryStrategy.parse(), e.g. an unknown strategy name, malformed parameter list, or invalid retry/timeout values.","commonSituations":"Hand-edited cassandra.yaml with a typo in the strategy name; copying a retry spec from another subsystem (like request retries) that uses a different format; upgrading Cassandra to a version where cms_commit_retry_strategy was introduced and guessing its syntax.","solutions":["Read the nested cause message in the error text; it names the exact parse failure.","Fix cms_commit_retry_strategy in cassandra.yaml to a valid RetryStrategy spec (e.g. the default exponential form) or remove the key to use the default.","Check config/ or the cassandra.yaml shipped with your version for the documented syntax of cms_commit_retry_strategy."],"exampleFix":"// before (cassandra.yaml)\ncms_commit_retry_strategy:\n    - class_name: Exponetial\n      max_attempts: 8\n// after\ncms_commit_retry_strategy:\n    - class_name: Exponential\n      max_attempts: 8","handlingStrategy":"validation","validationCode":"// before start, validate the yaml value parses\nString spec = yaml.getString(\"cms_commit_retry_strategy\");\nif (spec != null) {\n    try { RetryStrategy.parse(spec, TimeoutStrategy.LatencySourceFactory.none(), RetryStrategy.randomizers.uniform()); }\n    catch (Exception e) { throw new IllegalArgumentException(\"cms_commit_retry_strategy invalid: \" + e.getMessage()); }\n}","typeGuard":null,"tryCatchPattern":"catch (ConfigurationException e) { logger.error(\"Fix cms_commit_retry_strategy in cassandra.yaml: {}\", e.getMessage()); throw e; }","preventionTips":["Copy the retry-strategy example from the shipped cassandra.yaml of your exact version","Prefer omitting the key to accept the default","Lint cassandra.yaml in CI with a schema/parse check"],"tags":["configuration","startup","retry-strategy","cassandra"],"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"}