{"record":{"id":"cbc29a1ae622dcbf","repo":"apache/cassandra","slug":"value-must-be-0-and-1-for-repair-disk-headro","errorCode":null,"errorMessage":"Value must be >= 0 and <= 1 for repair_disk_headroom_reject_ratio","messagePattern":"Value must be >= 0 and <= 1 for repair_disk_headroom_reject_ratio","errorType":"validation","errorClass":"java.lang.IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"src/java/org/apache/cassandra/config/DatabaseDescriptor.java","lineNumber":6501,"sourceCode":"    {\n        return conf.accord.ephemeral_reads;\n    }\n\n    public static AutoRepairConfig getAutoRepairConfig()\n    {\n        return conf.auto_repair;\n    }\n\n    public static double getRepairDiskHeadroomRejectRatio()\n    {\n        return conf.repair_disk_headroom_reject_ratio;\n    }\n\n    public static void setRepairDiskHeadroomRejectRatio(double value)\n    {\n        if (value < 0.0 || value > 1.0)\n        {\n            throw new IllegalArgumentException(\"Value must be >= 0 and <= 1 for repair_disk_headroom_reject_ratio\");\n        }\n        conf.repair_disk_headroom_reject_ratio = value;\n    }\n\n    @VisibleForTesting\n    public static void setPartitioner(String name)\n    {\n        partitioner = FBUtilities.newPartitioner(name);\n    }\n\n    public static boolean getGossipQuarantineDisabled()\n    {\n        return conf.gossip_quarantine_disabled;\n    }\n\n    public static void setGossipQuarantineDisabled(boolean disabled)\n    {\n        conf.gossip_quarantine_disabled = disabled;","sourceCodeStart":6483,"sourceCodeEnd":6519,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/config/DatabaseDescriptor.java#L6483-L6519","documentation":"setRepairDiskHeadroomRejectRatio validates that the repair disk headroom ratio is a fraction in [0.0, 1.0] before storing it. Values outside this range are not meaningful as a disk-usage rejection ratio, so the setter throws IllegalArgumentException.","triggerScenarios":"Calling DatabaseDescriptor.setRepairDiskHeadroomRejectRatio with a double < 0.0 or > 1.0, e.g. 1.5 or -0.1, via code, JMX, or a misconfigured repair_disk_headroom_reject_ratio value.","commonSituations":"Operators entering the ratio as a percentage (e.g. 20 instead of 0.2); YAML values parsed as whole numbers; scripts computing the ratio incorrectly yielding negatives.","solutions":["Pass a value between 0.0 and 1.0 inclusive (e.g. 0.2 for 20% headroom).","Convert percentage-style values by dividing by 100 before setting.","Correct repair_disk_headroom_reject_ratio in cassandra.yaml."],"exampleFix":"// before\nDatabaseDescriptor.setRepairDiskHeadroomRejectRatio(20);\n// after\nDatabaseDescriptor.setRepairDiskHeadroomRejectRatio(0.20);","handlingStrategy":"validation","validationCode":"if (ratio >= 0.0 && ratio <= 1.0) DatabaseDescriptor.setRepairDiskHeadroomRejectRatio(ratio);","typeGuard":"boolean isValidHeadroomRatio(double r) { return r >= 0.0 && r <= 1.0; }","tryCatchPattern":"try { DatabaseDescriptor.setRepairDiskHeadroomRejectRatio(ratio); } catch (IllegalArgumentException e) { log.error(\"bad repair_disk_headroom_reject_ratio\", e); }","preventionTips":["Express headroom as a fraction (0.2), not a percentage (20).","Clamp parsed values into [0,1] from YAML/scripts.","Document the expected range in config templates."],"tags":["configuration","validation","repair"],"backgroundTag":"value-out-of-range","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"}