{"record":{"id":"09aab913a571d7a3","repo":"apache/cassandra","slug":"native-transport-min-backoff-on-queue-overload-sho","errorCode":null,"errorMessage":"native_transport_min_backoff_on_queue_overload should be strictly less than native_transport_max_backoff_on_queue_overload, but %s >= %s","messagePattern":"native_transport_min_backoff_on_queue_overload should be strictly less than native_transport_max_backoff_on_queue_overload, but (.+?) >= (.+?)","errorType":"validation","errorClass":"ConfigurationException","httpStatus":null,"severity":"error","filePath":"src/java/org/apache/cassandra/config/DatabaseDescriptor.java","lineNumber":1270,"sourceCode":"        List<ConsistencyLevel> progressBarrierCLsArr = Arrays.asList(ALL, EACH_QUORUM, LOCAL_QUORUM, QUORUM, ONE, NODE_LOCAL);\n        Set<ConsistencyLevel> progressBarrierCls = new HashSet<>(progressBarrierCLsArr);\n        if (!progressBarrierCls.contains(conf.progress_barrier_min_consistency_level))\n        {\n            throw new ConfigurationException(String.format(\"Invalid value for progress_barrier_min_consistency_level %s. Allowed values: %s\",\n                                                           conf.progress_barrier_min_consistency_level, progressBarrierCLsArr));\n        }\n\n        if (!progressBarrierCls.contains(conf.progress_barrier_default_consistency_level))\n        {\n            throw new ConfigurationException(String.format(\"Invalid value for.progress_barrier_default_consistency_level %s. Allowed values: %s\",\n                                                           conf.progress_barrier_default_consistency_level, progressBarrierCLsArr));\n        }\n\n        if (conf.native_transport_min_backoff_on_queue_overload.toMilliseconds() <= 0)\n            throw new ConfigurationException(\" be positive\");\n\n        if (conf.native_transport_min_backoff_on_queue_overload.toMilliseconds() >= conf.native_transport_max_backoff_on_queue_overload.toMilliseconds())\n            throw new ConfigurationException(String.format(\"native_transport_min_backoff_on_queue_overload should be strictly less than native_transport_max_backoff_on_queue_overload, but %s >= %s\",\n                                                           conf.native_transport_min_backoff_on_queue_overload,\n                                                           conf.native_transport_max_backoff_on_queue_overload));\n\n        if (conf.use_deterministic_table_id)\n            logger.warn(\"use_deterministic_table_id is no longer supported and should be removed from cassandra.yaml.\");\n\n        // run audit logging options through sanitation and validation\n        if (conf.audit_logging_options != null)\n            setAuditLoggingOptions(conf.audit_logging_options);\n\n        try\n        {\n            // Run through the validation by setting current values back to their setters, so we are sure that their values are valid.\n            // We are catching IllegalArgumentException and translating it to ConfigurationException to comply with\n            // rest of the logic in this method. These setters are also called in GCInspectorMXBean were IllegalArgumentException\n            // is thrown when arguments are invalid instead ConfigurationException, on purpose.\n            DatabaseDescriptor.setGCLogThreshold((int) DatabaseDescriptor.getGCLogThreshold());\n            DatabaseDescriptor.setGCWarnThreshold((int) DatabaseDescriptor.getGCWarnThreshold());","sourceCodeStart":1252,"sourceCodeEnd":1288,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/config/DatabaseDescriptor.java#L1252-L1288","documentation":"The native transport backoff range must be ordered: min must be strictly less than max. DatabaseDescriptor throws this ConfigurationException when native_transport_min_backoff_on_queue_overload >= native_transport_max_backoff_on_queue_overload.","triggerScenarios":"applySimpleConfig (via toolInitialization/applyAll) with min backoff >= max backoff (equal values included).","commonSituations":"Setting both values equal; raising min above max while tuning queue-overload behavior; unit mismatch making min evaluate larger than max.","solutions":["Set native_transport_max_backoff_on_queue_overload strictly greater than native_transport_min_backoff_on_queue_overload","Lower native_transport_min_backoff_on_queue_overload below the max value","Verify both durations use consistent units"],"exampleFix":"// before (cassandra.yaml)\nnative_transport_min_backoff_on_queue_overload: 500ms\nnative_transport_max_backoff_on_queue_overload: 500ms\n// after\nnative_transport_min_backoff_on_queue_overload: 100ms\nnative_transport_max_backoff_on_queue_overload: 500ms","handlingStrategy":"validation","validationCode":"if (conf.native_transport_min_backoff_on_queue_overload.toMilliseconds() >= conf.native_transport_max_backoff_on_queue_overload.toMilliseconds()) throw new IllegalArgumentException(\"min backoff must be strictly less than max backoff\");","typeGuard":null,"tryCatchPattern":"try { DatabaseDescriptor.toolInitialization(); } catch (ConfigurationException e) { log.error(e.getMessage()); System.exit(1); }","preventionTips":["Treat (min, max) backoff as a strict interval; max > min always","Use consistent units for both settings","Review pairs of related config keys together"],"tags":["cassandra","configuration","native-transport"],"backgroundTag":"conflicting-config-options","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"}