{"record":{"id":"7d15745aa7a91720","repo":"apache/seatunnel","slug":"unsupported-data-type-7d1574","errorCode":"UNSUPPORTED_DATA_TYPE","errorMessage":"Unknown \"type\" value \"%s\". The MaxWell JSON message is '%s'","messagePattern":"Unknown \"type\" value \"(.+?)\"\\. The MaxWell JSON message is '(.+?)'","errorType":"error_code","errorClass":"SeaTunnelJsonFormatException","httpStatus":null,"severity":"error","filePath":"seatunnel-formats/seatunnel-format-json/src/main/java/org/apache/seatunnel/format/json/maxwell/MaxWellJsonDeserializationSchema.java","lineNumber":182,"sourceCode":"            if (tsNode != null) {\n                MetadataUtil.setEventTime(rowBefore, tsNode.asLong() * 1000);\n                MetadataUtil.setEventTime(rowAfter, tsNode.asLong() * 1000);\n            }\n            out.collect(rowBefore);\n            out.collect(rowAfter);\n        } else if (OP_DELETE.equals(type)) {\n            SeaTunnelRow rowDelete = convertJsonNode(dataNode);\n            rowDelete.setRowKind(RowKind.DELETE);\n            if (tablePath != null && !tablePath.toString().isEmpty()) {\n                rowDelete.setTableId(tablePath.toString());\n            }\n            if (tsNode != null) {\n                MetadataUtil.setEventTime(rowDelete, tsNode.asLong() * 1000);\n            }\n            out.collect(rowDelete);\n        } else {\n            if (!ignoreParseErrors) {\n                throw new SeaTunnelJsonFormatException(\n                        CommonErrorCode.UNSUPPORTED_DATA_TYPE,\n                        format(\n                                \"Unknown \\\"type\\\" value \\\"%s\\\". The MaxWell JSON message is '%s'\",\n                                type, new String(message)));\n            }\n        }\n    }\n\n    private JsonNode convertBytes(byte[] message) {\n        try {\n            return jsonDeserializer.deserializeToJsonNode(message);\n        } catch (Exception t) {\n            if (ignoreParseErrors) {\n                return null;\n            }\n            throw new SeaTunnelJsonFormatException(\n                    CommonErrorCode.CONVERT_TO_CONNECTOR_TYPE_ERROR_SIMPLE,\n                    String.format(\"Failed to deserialize JSON '%s'.\", new String(message)),","sourceCodeStart":164,"sourceCodeEnd":200,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-formats/seatunnel-format-json/src/main/java/org/apache/seatunnel/format/json/maxwell/MaxWellJsonDeserializationSchema.java#L164-L200","documentation":"MaxWellJsonDeserializationSchema dispatches on the 'type' field of a Maxwell CDC JSON message (insert/update/delete are recognized). Any other value — with ignoreParseErrors=false — raises SeaTunnelJsonFormatException(UNSUPPORTED_DATA_TYPE) embedding both the unknown type and the full raw message, because SeaTunnel cannot map such events to a RowKind.","triggerScenarios":"deserialize() receives a Maxwell message whose \"type\" is not one of insert/delete (e.g. \"bootstrap-insert\", \"sql_update\", or a corrupt/empty value) and ignoreParseErrors is false; the else-branch throws.","commonSituations":"Maxwell bootstrapping phase emits bootstrap-insert/bootstrap-complete events; Maxwell config with output_ddl or schema-change events; garbage/corrupted messages in the Kafka topic; mixing Maxwell versions with different type vocabularies.","solutions":["Set ignore_parse_errors=true (format config option) to skip unsupported messages instead of failing the job","Filter the Kafka topic before SeaTunnel (or use topic routing) to drop bootstrap/ddl events","Configure Maxwell to only output row events (bootstrap off, output_ddl=false)","Check the actual message content in the error text to identify and handle the new type explicitly"],"exampleFix":"// before\nformat = json\n// after: skip unparseable/unexpected maxwell messages\nformat = json\nformat.ignore-parse-errors = true","handlingStrategy":"validation","validationCode":"JsonNode typeNode = root.get(\"type\");\nString type = typeNode != null ? typeNode.asText() : null;\nif (!\"insert\".equals(type) && !\"update\".equals(type) && !\"delete\".equals(type)) {\n    // skip bootstrap/ddl events before handing to the schema\n    return;\n}","typeGuard":null,"tryCatchPattern":"try {\n    schema.deserialize(message, out);\n} catch (SeaTunnelJsonFormatException e) {\n    log.warn(\"Skipping maxwell message with unknown type: {}\", e.getMessage());\n}","preventionTips":["Set format.ignore-parse-errors=true for topics containing bootstrap/ddl events","Disable Maxwell bootstrap and DDL output if only row events are needed","Route row events to a dedicated topic via Maxwell filtering"],"tags":["json","cdc","maxwell","deserialization"],"backgroundTag":"invalid-enum-value","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}