apache/seatunnel · error · FakeConnectorException
COMMON_ILLEGAL_ARGUMENT
COMMON_ILLEGAL_ARGUMENT
Error message
tinyint.min should >= TINYINT_MIN.defaultValue and <= TINYINT_MAX.defaultValue
What it means
FakeConfig.buildWithConfig validates that the user-provided fake.tinyint.min value lies within the legal TinyINT range (between the built-in TINYINT_MIN and TINYINT_MAX defaults, i.e. [-128, 127]). If tinyint.min is below -128 or above 127, a FakeConnectorException with CommonErrorCodeDeprecated.ILLEGAL_ARGUMENT is thrown.
Solutions
- Set fake.tinyint.min to a value between -128 and 127 (the TinyINT range).
- If you need a wider range, change the generated column type to SMALLINT/INT and use the corresponding min/max options.
- Remove the fake.tinyint.min option entirely to use the default range.
Example fix
// before tinyint.min = -1000 // after tinyint.min = -128
Defensive patterns
Strategy: validation
Validate before calling
// Validate before job submission
int tinyintMin = Integer.parseInt(config.get("tinyint.min"));
if (tinyintMin < -128 || tinyintMin > 127) {
throw new IllegalArgumentException("tinyint.min must be in [-128, 127], got " + tinyintMin);
} Try / catch
try {
FakeConfig.buildWithConfig(readonlyConfig);
} catch (FakeConnectorException e) {
if (CommonErrorCodeDeprecated.ILLEGAL_ARGUMENT.equals(e.getSeaTunnelErrorCode())) {
log.error("Fix fake range config: " + e.getMessage());
}
throw e;
} Prevention
- Remember Java numeric ranges: TinyINT [-128,127], SmallINT [-32768,32767], INT [-2147483648,2147483647].
- Match the range option to the actual generated column type.
- Validate fake.* range options in your config pipeline before submitting jobs.
When it happens
Trigger: Setting the connector-fake option fake.tinyint.min to a value < -128 or > 127 in the source configuration and running a job with the Fake source.
Common situations: Copy-pasting an int-range value (e.g. -100000 or 99999) into the tinyint.min option; confusing tinyint range with smallint/int ranges when generating random data.
Understand the failure class
Background: "value must be between 0 and 1" / "out of range" / "must not be negative" errors: fixing range-validation failures across open-source libraries — this error's family across 42 libraries.
Related errors
- Stripe option 'created_gte' must not be negative
- Stripe option 'created_lt' must not be negative
- Stripe option 'page_size' must be between 1 and 100
- Stripe option 'rate_limit_backoff_ms' must not be negative
- Stripe option 'rate_limit_max_retries' must not be negative
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/bdc62e6728aa3966.
Report an issue: GitHub.
Appendix: source
Thrown at seatunnel-connectors-v2/connector-fake/src/main/java/org/apache/seatunnel/connectors/seatunnel/fake/config/FakeConfig.java:227
readonlyConfig.getOptional(BIGINT_TEMPLATE).ifPresent(builder::bigTemplate);
readonlyConfig.getOptional(FLOAT_TEMPLATE).ifPresent(builder::floatTemplate);
readonlyConfig.getOptional(DOUBLE_TEMPLATE).ifPresent(builder::doubleTemplate);
readonlyConfig.getOptional(DATE_YEAR_TEMPLATE).ifPresent(builder::dateYearTemplate);
readonlyConfig.getOptional(DATE_MONTH_TEMPLATE).ifPresent(builder::dateMonthTemplate);
readonlyConfig.getOptional(DATE_DAY_TEMPLATE).ifPresent(builder::dateDayTemplate);
readonlyConfig.getOptional(TIME_HOUR_TEMPLATE).ifPresent(builder::timeHourTemplate);
readonlyConfig.getOptional(TIME_MINUTE_TEMPLATE).ifPresent(builder::timeMinuteTemplate);
readonlyConfig.getOptional(TIME_SECOND_TEMPLATE).ifPresent(builder::timeSecondTemplate);
readonlyConfig.getOptional(AUTO_INCREMENT_ENABLED).ifPresent(builder::autoIncrementEnabled);
readonlyConfig.getOptional(AUTO_INCREMENT_START).ifPresent(builder::autoIncrementStart);
readonlyConfig
.getOptional(TINYINT_MIN)
.ifPresent(
tinyintMin -> {
if (tinyintMin < TINYINT_MIN.defaultValue()
|| tinyintMin > TINYINT_MAX.defaultValue()) {
throw new FakeConnectorException(
CommonErrorCodeDeprecated.ILLEGAL_ARGUMENT,
TINYINT_MIN.key()
+ " should >= "
+ TINYINT_MIN.defaultValue()
+ " and <= "
+ TINYINT_MAX.defaultValue());
}
builder.tinyintMin(tinyintMin);
});
readonlyConfig
.getOptional(TINYINT_MAX)
.ifPresent(
tinyintMax -> {
if (tinyintMax < TINYINT_MIN.defaultValue()
|| tinyintMax > TINYINT_MAX.defaultValue()) {
throw new FakeConnectorException(
CommonErrorCodeDeprecated.ILLEGAL_ARGUMENT,View on GitHub (pinned to cf67b549a7)