{"record":{"id":"ff1d83749fd767d9","repo":"apache/cassandra","slug":"invalid-compaction-strategy","errorCode":null,"errorMessage":"Invalid compaction strategy: ","messagePattern":"Invalid compaction strategy: ","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"tools/stress/src/org/apache/cassandra/stress/settings/OptionCompaction.java","lineNumber":74,"sourceCode":"\n    @Override\n    public boolean happy()\n    {\n        return true;\n    }\n\n    private static final class StrategyAdapter implements Function<String, String>\n    {\n\n        public String apply(String name)\n        {\n            try\n            {\n                CompactionParams.classFromName(name);\n            }\n            catch (ConfigurationException e)\n            {\n                throw new IllegalArgumentException(\"Invalid compaction strategy: \" + name);\n            }\n            return name;\n        }\n    }\n\n}\n","sourceCodeStart":56,"sourceCodeEnd":81,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/tools/stress/src/org/apache/cassandra/stress/settings/OptionCompaction.java#L56-L81","documentation":"OptionCompaction validates the compaction strategy class name by resolving it through CompactionParams.classFromName, which throws ConfigurationException for unknown classes. The option converts this into an IllegalArgumentException 'Invalid compaction strategy: <name>' so the CLI reports an actionable message.","triggerScenarios":"Passing -compaction 'strategy=BadStrategy' or a strategy class name that is not on the classpath / not a valid ICompactionStrategy implementation to a stress command.","commonSituations":"Misspelled strategy names (e.g. 'SizeTieredCompactonStrategy'); using strategy names from a newer/older Cassandra version that no longer exist; custom strategies not shipped on the stress client's classpath.","solutions":["Use a fully qualified valid strategy class, e.g. org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy","Check spelling and casing of the strategy class name","Verify the strategy exists in the Cassandra version being targeted (some strategies were added/removed across versions)"],"exampleFix":"// before\n-compaction strategy=LeveledStrategy\n// after\n-compaction strategy=org.apache.cassandra.db.compaction.LeveledCompactionStrategy","handlingStrategy":"validation","validationCode":"try { CompactionParams.classFromName(strategyName); } catch (ConfigurationException e) { /* invalid strategy */ }","typeGuard":null,"tryCatchPattern":"try { applyCompaction(name); } catch (IllegalArgumentException e) { log.error(\"Bad compaction strategy '{}': use a fully qualified ICompactionStrategy class\", name); }","preventionTips":["Use fully qualified compaction strategy class names","Verify strategy availability in the target Cassandra version","Validate -compaction values against the server's strategy list"],"tags":["cli","compaction","configuration"],"backgroundTag":"invalid-enum-value","analyzedSha":"88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1","analyzedAt":"2026-09-10T07:29:22.284Z","contentChangedAt":"2026-09-10T07:29:22.284Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}