apache/seatunnel · error · OptionValidationException

e.getMessage() (wrapped SeaTunnelRuntimeException from…

Error message

e.getMessage() (wrapped SeaTunnelRuntimeException from table_options validation)

What it means

StarRocksTableOptionsConditionExtension.evaluate runs StarRocksTableOptionsValidator on the `table_options` config value when a conditional/save-mode rule is evaluated. If validation throws SeaTunnelRuntimeException, it rethrows it as OptionValidationException carrying the original message (e.g. the blank-key or null-value table_options errors). The exception the user sees is this rewrapped validation failure.

Solutions

  1. Fix the underlying `table_options` entry named in the message (non-blank key, non-null value) in the HOCON config.
  2. Validate table_options locally before submitting the job to catch which key is malformed.
  3. Read the wrapped message — it names the exact property; correct or remove that key.

Example fix

// before
table_options {
  "" = "x"
}
// after
table_options {
  replication_num = "3"
}
Defensive patterns

Strategy: validation

Validate before calling

// Validate table_options the same way the extension does, before job submission
try {
    StarRocksTableOptionsValidator.validate(config, tableOptionsValue);
} catch (SeaTunnelRuntimeException e) {
    System.err.println("table_options invalid: " + e.getMessage());
}

Type guard

function isValidTableOptions(opts) {
  return opts && Object.entries(opts).every(([k, v]) => k && k.trim() !== "" && v != null);
}

Try / catch

try {
    evaluate(config);
} catch (OptionValidationException e) {
    // message is the wrapped SeaTunnelRuntimeException; fix the named property
}

Prevention

When it happens

Trigger: Calling evaluate (via option/condition validation during sink config processing) with a `table_options` value that StarRocksTableOptionsValidator rejects — including blank keys or null values from error 2470's family.

Common situations: Same root causes as table_options validation failures: empty HOCON values, null-valued map entries, malformed table_options blocks surfacing at a different validation layer with a less obvious wrapper exception.

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/8be2570043a48051. Report an issue: GitHub.

Appendix: source

Thrown at seatunnel-connectors-v2/connector-starrocks/src/main/java/org/apache/seatunnel/connectors/seatunnel/starrocks/sink/StarRocksTableOptionsConditionExtension.java:55

    private StarRocksTableOptionsConditionExtension() {}

    @Override
    public String description() {
        return "must be compatible with the default save_mode_create_template (see StarRocks"
                + " connector docs)";
    }

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

View on GitHub (pinned to cf67b549a7)