{"record":{"id":"bfe6ade377508be8","repo":"apache/seatunnel","slug":"error-handler-s-must-be-between-0-and-s-but-was","errorCode":null,"errorMessage":"error handler %s must be between 0 and %s, but was %s","messagePattern":"error handler (.+?) must be between 0 and (.+?), but was (.+?)","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/task/error/ErrorHandlerConfigUtil.java","lineNumber":252,"sourceCode":"        if (value != null) {\n            String booleanValue = value.toString().trim();\n            if (\"true\".equalsIgnoreCase(booleanValue)) {\n                return true;\n            }\n            if (\"false\".equalsIgnoreCase(booleanValue)) {\n                return false;\n            }\n            throw new IllegalArgumentException(\n                    \"Invalid error handler boolean value for '\" + key + \"': \" + value);\n        }\n        return defaultValue;\n    }\n\n    private static int getNonNegativeInt(\n            Map<String, Object> stage, Map<String, Object> global, String key, int defaultValue) {\n        long value = getLong(stage, global, key, defaultValue);\n        if (value < 0 || value > Integer.MAX_VALUE) {\n            throw new IllegalArgumentException(\n                    \"error handler \"\n                            + key\n                            + \" must be between 0 and \"\n                            + Integer.MAX_VALUE\n                            + \", but was \"\n                            + value);\n        }\n        return (int) value;\n    }\n}\n","sourceCodeStart":234,"sourceCodeEnd":263,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/task/error/ErrorHandlerConfigUtil.java#L234-L263","documentation":"getNonNegativeInt validates that an integer error-handler option fits in the non-negative int range [0, Integer.MAX_VALUE]. Values below 0 or above 2^31-1 throw IllegalArgumentException with the key, upper bound, and offending value. It applies to options like maxErrorRatioMinRecords, queueCapacity, and originalDataMaxLength.","triggerScenarios":"Configuring e.g. 'error-handler.queue-capacity = -1' or 'originalDataMaxLength = 99999999999' (overflowing int) so getLong returns a value outside the allowed range.","commonSituations":"Users set -1 expecting 'unlimited' semantics (common in other systems like Kafka clients), or set byte/record limits in long magnitudes exceeding int range.","solutions":["Set the option to a non-negative value that fits in a 32-bit int (<= 2147483647).","If 'unlimited' was intended, check the option's documented default/disabled semantics instead of using -1.","If a larger limit is genuinely needed, reduce it or ask for a long-typed option; do not exceed Integer.MAX_VALUE."],"exampleFix":"// before\nerror-handler.queue-capacity = -1\n// after\nerror-handler.queue-capacity = 1024","handlingStrategy":"validation","validationCode":"long v = getLong(stage, global, key, def);\nif (v < 0 || v > Integer.MAX_VALUE) {\n    throw new IllegalArgumentException(key + \" must be in [0, 2147483647], got: \" + v);\n}","typeGuard":"boolean isValidNonNegativeInt(long v) {\n    return v >= 0 && v <= Integer.MAX_VALUE;\n}","tryCatchPattern":"try {\n    int cap = ErrorHandlerConfigUtil.queueCapacity(...);\n} catch (IllegalArgumentException e) {\n    log.error(\"Out-of-range error-handler int: {}\", e.getMessage());\n}","preventionTips":["Never use -1 to mean 'unlimited' unless documented","Keep int-typed limits <= 2147483647","Cross-check magnitudes (byte/record limits) against int range"],"tags":["config","range-check","error-handler"],"backgroundTag":"value-out-of-range","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}