apache/seatunnel · error · OptionValidationException

OptionValidationException(e.getMessage())

Error message

OptionValidationException(e.getMessage())

What it means

JdbcTableOptionsConditionExtension.evaluate delegates to JdbcTableOptionsValidator.validate and, if the validator raises JdbcConnectorException, re-wraps it as OptionValidationException with the same message. This normalizes JDBC table-option validation failures into the option-validation framework so config errors surface uniformly at job definition time.

Solutions

  1. Read the exception message — it carries the validator's original explanation of which options conflict.
  2. Fix the offending JDBC table options in the config per the validator's requirement.
  3. Consult the connector's option documentation for supported combinations for your dialect.
Defensive patterns

Strategy: validation

Validate before calling

// pre-check table options against the connector docs before submitting
ReadonlyConfig cfg = ReadonlyConfig.fromMap(options);
new JdbcTableOptionsConditionExtension().evaluate(cfg, true); // throws early outside job

Try / catch

try {
  validateOptions(cfg);
} catch (OptionValidationException e) {
  // e.getMessage() mirrors the underlying JdbcConnectorException — fix options per message
}

Prevention

When it happens

Trigger: Validating a JDBC table sink/source config whose options fail JdbcTableOptionsValidator (e.g. incompatible option combinations for the given table/dialect); the validator throws JdbcConnectorException which is converted.

Common situations: Copy-pasted configs from another connector or dialect; option combinations valid in older SeaTunnel versions but rejected by newer validators; typos in option values that violate table-level constraints.

Understand the failure class

Background: "Invalid value" and "allowed values are" config errors: what your library rejected and how to fix it — this error's family across 41 libraries.

Related errors


AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10). Data as JSON: /api/errors/da46cda7a149f981. Report an issue: GitHub.

Appendix: source

Thrown at seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/sink/JdbcTableOptionsConditionExtension.java:54

    private JdbcTableOptionsConditionExtension() {}

    @Override
    public String description() {
        return "must use dialect-specific keys supported by the JDBC sink (see JDBC connector docs)";
    }

    @Override
    public boolean evaluate(ReadonlyConfig config, Map<String, String> value)
            throws OptionValidationException {
        if (value == null || value.isEmpty()) {
            return true;
        }
        try {
            JdbcTableOptionsValidator.validate(config, value);
            return true;
        } catch (JdbcConnectorException e) {
            throw new OptionValidationException(e.getMessage());
        }
    }
}

View on GitHub (pinned to cf67b549a7)