{"record":{"id":"13f498e3e2f706ea","repo":"apache/seatunnel","slug":"unsupported-original-data-format-s-current-ver","errorCode":null,"errorMessage":"Unsupported original_data_format='%s'. Current version only supports TEXT.","messagePattern":"Unsupported original_data_format='(.+?)'\\. Current version only supports TEXT\\.","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":94,"sourceCode":"                        \"max_error_ratio_min_records\",\n                        DEFAULT_MAX_ERROR_RATIO_MIN_RECORDS);\n        long maxErrorRecords = getLong(stage, global, \"max_error_records\", 0L);\n        if (maxErrorRecords < 0L) {\n            throw new IllegalArgumentException(\n                    \"error handler max_error_records must be non-negative, but was \"\n                            + maxErrorRecords);\n        }\n\n        int queueCapacity = getNonNegativeInt(stage, global, \"queue_capacity\", 10000);\n        String overflowStr = getString(stage, global, \"queue_overflow_policy\", \"FAIL\");\n        QueueOverflowPolicy overflowPolicy = QueueOverflowPolicy.fromString(overflowStr);\n\n        boolean includeStacktrace = getBoolean(stage, global, \"include_stacktrace\", false);\n        boolean includeOriginalData = getBoolean(stage, global, \"include_original_data\", false);\n\n        String dataFormatStr = getString(stage, global, \"original_data_format\", \"TEXT\");\n        if (!\"TEXT\".equalsIgnoreCase(dataFormatStr)) {\n            throw new IllegalArgumentException(\n                    \"Unsupported original_data_format='\"\n                            + dataFormatStr\n                            + \"'. Current version only supports TEXT.\");\n        }\n        OriginalDataFormat originalDataFormat = OriginalDataFormat.TEXT;\n\n        int originalDataMaxLength =\n                getNonNegativeInt(stage, global, \"original_data_max_length\", 8192);\n\n        ErrorSinkConfig sinkConfig = buildErrorSinkConfig(stage, global);\n\n        if (mode == ErrorHandlerMode.ROUTE && (sinkConfig == null || !sinkConfig.isConfigured())) {\n            throw new IllegalArgumentException(\n                    String.format(\n                            \"env.%s.mode=ROUTE requires env.%s.sink.plugin_name to be configured.\",\n                            stageKey, stageKey));\n        }\n","sourceCodeStart":76,"sourceCodeEnd":112,"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#L76-L112","documentation":"IllegalArgumentException from ErrorHandlerConfigUtil.buildStageConfig when original_data_format is set to anything other than TEXT. The current implementation only supports rendering the original bad row as plain text, so other formats (e.g. JSON) are rejected up front.","triggerScenarios":"Setting env.error-handler.original_data_format (global or stage) to a value other than TEXT (case-insensitive), e.g. \"JSON\".","commonSituations":"Users expecting structured JSON error payloads; docs/examples from other systems offering multiple formats; forward-looking config written for a planned feature.","solutions":["Set original_data_format = \"TEXT\" (the only supported value).","Remove the original_data_format key to accept the default TEXT.","If structured error output is needed, post-process the error sink output yourself."],"exampleFix":"// before\nerror-handler { original_data_format = \"JSON\" }\n// after\nerror-handler { original_data_format = \"TEXT\" }","handlingStrategy":"validation","validationCode":"String f = config.getString(\"original_data_format\");\nif (f != null && !\"TEXT\".equalsIgnoreCase(f)) throw new IllegalArgumentException(\"only TEXT supported, got \" + f);","typeGuard":null,"tryCatchPattern":"try { buildStageConfig(stage, global); } catch (IllegalArgumentException e) { if (e.getMessage().contains(\"original_data_format\")) { setFormatToText(); } }","preventionTips":["Only use original_data_format = \"TEXT\" in this version","Omit the key to accept the TEXT default","Check release notes before adopting new format values"],"tags":["config","unsupported-value","enum"],"backgroundTag":"unsupported-enum-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"}