{"record":{"id":"8be2570043a48051","repo":"apache/seatunnel","slug":"e-getmessage-wrapped-seatunnelruntimeexception","errorCode":null,"errorMessage":"e.getMessage() (wrapped SeaTunnelRuntimeException from table_options validation)","messagePattern":"e\\.getMessage\\(\\) \\(wrapped SeaTunnelRuntimeException from table_options validation\\)","errorType":"validation","errorClass":"OptionValidationException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-starrocks/src/main/java/org/apache/seatunnel/connectors/seatunnel/starrocks/sink/StarRocksTableOptionsConditionExtension.java","lineNumber":55,"sourceCode":"    private StarRocksTableOptionsConditionExtension() {}\n\n    @Override\n    public String description() {\n        return \"must be compatible with the default save_mode_create_template (see StarRocks\"\n                + \" connector docs)\";\n    }\n\n    @Override\n    public boolean evaluate(ReadonlyConfig config, Map<String, String> value)\n            throws OptionValidationException {\n        if (value == null || value.isEmpty()) {\n            return true;\n        }\n        try {\n            StarRocksTableOptionsValidator.validate(config, value);\n            return true;\n        } catch (SeaTunnelRuntimeException e) {\n            throw new OptionValidationException(e.getMessage());\n        }\n    }\n}\n","sourceCodeStart":37,"sourceCodeEnd":59,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-starrocks/src/main/java/org/apache/seatunnel/connectors/seatunnel/starrocks/sink/StarRocksTableOptionsConditionExtension.java#L37-L59","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","solutions":["Fix the underlying `table_options` entry named in the message (non-blank key, non-null value) in the HOCON config.","Validate table_options locally before submitting the job to catch which key is malformed.","Read the wrapped message — it names the exact property; correct or remove that key."],"exampleFix":"// before\ntable_options {\n  \"\" = \"x\"\n}\n// after\ntable_options {\n  replication_num = \"3\"\n}","handlingStrategy":"validation","validationCode":"// Validate table_options the same way the extension does, before job submission\ntry {\n    StarRocksTableOptionsValidator.validate(config, tableOptionsValue);\n} catch (SeaTunnelRuntimeException e) {\n    System.err.println(\"table_options invalid: \" + e.getMessage());\n}","typeGuard":"function isValidTableOptions(opts) {\n  return opts && Object.entries(opts).every(([k, v]) => k && k.trim() !== \"\" && v != null);\n}","tryCatchPattern":"try {\n    evaluate(config);\n} catch (OptionValidationException e) {\n    // message is the wrapped SeaTunnelRuntimeException; fix the named property\n}","preventionTips":["Fix table_options issues at the config source — this error is only a wrapper.","Keep keys non-blank and values non-null in table_options blocks.","Run the validator locally on configs generated from templates."],"tags":["config-validation","starrocks","option-validation"],"backgroundTag":"invalid-config-value","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"}