{"record":{"id":"dba27a7ed703791a","repo":"apache/seatunnel","slug":"please-invoke-deserializationschema-deserialize-by-dba27a","errorCode":null,"errorMessage":"Please invoke DeserializationSchema#deserialize(byte[], Collector<SeaTunnelRow>) instead.","messagePattern":"Please invoke DeserializationSchema#deserialize\\(byte\\[\\], Collector<SeaTunnelRow>\\) instead\\.","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"error","filePath":"seatunnel-formats/seatunnel-format-compatible-connect-json/src/main/java/org/apache/seatunnel/format/compatible/kafka/connect/json/NativeKafkaConnectDeserializationSchema.java","lineNumber":95,"sourceCode":"    public NativeKafkaConnectDeserializationSchema(\n            @NonNull CatalogTable catalogTable,\n            boolean keySchemaEnable,\n            boolean valueSchemaEnable,\n            boolean failOnMissingField,\n            boolean ignoreParseErrors) {\n        this.catalogTable = catalogTable;\n        this.seaTunnelRowType = catalogTable.getSeaTunnelRowType();\n        this.keySchemaEnable = keySchemaEnable;\n        this.valueSchemaEnable = valueSchemaEnable;\n        // Runtime converter\n        this.runtimeConverter =\n                new JsonToRowConverters(failOnMissingField, ignoreParseErrors)\n                        .createRowConverter(checkNotNull(seaTunnelRowType));\n    }\n\n    @Override\n    public SeaTunnelRow deserialize(byte[] message) throws IOException {\n        throw new UnsupportedOperationException(\n                \"Please invoke DeserializationSchema#deserialize(byte[], Collector<SeaTunnelRow>) instead.\");\n    }\n\n    /**\n     * Deserialize kafka consumer record\n     *\n     * @param msg\n     * @param out\n     */\n    public void deserialize(ConsumerRecord<byte[], byte[]> msg, Collector<SeaTunnelRow> out) {\n        tryInitConverter();\n        if (msg == null) {\n            return;\n        }\n        Map<String, Object> record = convertToSinkRecord(msg);\n        RowKind rowKind = RowKind.INSERT;\n        Optional<TablePath> tablePath =\n                Optional.ofNullable(catalogTable).map(CatalogTable::getTablePath);","sourceCodeStart":77,"sourceCodeEnd":113,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-formats/seatunnel-format-compatible-connect-json/src/main/java/org/apache/seatunnel/format/compatible/kafka/connect/json/NativeKafkaConnectDeserializationSchema.java#L77-L113","documentation":"NativeKafkaConnectDeserializationSchema throws UnsupportedOperationException from deserialize(byte[]) by design. It deserializes Kafka Connect SourceRecords, which require ConsumerRecord context (headers, Connect schema), so only the Collector-based overload is functional.","triggerScenarios":"Invoking schema.deserialize(byte[]) directly, or using a caller that exercises the byte[]-only DeserializationSchema entry point instead of deserialize(ConsumerRecord, Collector).","commonSituations":"Hand-written test harnesses calling the wrong overload; older SeaTunnel connector code paths using the legacy API; user code adapting this schema outside the Kafka connector.","solutions":["Use the overload deserialize(ConsumerRecord<byte[], byte[]>, Collector<SeaTunnelRow>).","Run deserialization through SeaTunnel's Kafka source connector, which calls the record-based overload.","Wrap the byte[] payload in a ConsumerRecord (with schema info if schema-registry is enabled) before deserializing."],"exampleFix":"// before\nSeaTunnelRow row = schema.deserialize(payload);\n// after\nschema.deserialize(new ConsumerRecord<>(topic, partition, offset, key, payload), collector);","handlingStrategy":"type-guard","validationCode":"if (schema instanceof NativeKafkaConnectDeserializationSchema) { /* use ConsumerRecord overload */ }","typeGuard":"boolean needsRecordOverload = schema instanceof NativeKafkaConnectDeserializationSchema;","tryCatchPattern":"try { schema.deserialize(consumerRecord, collector); } catch (UnsupportedOperationException e) { /* use record-based API */ }","preventionTips":["Never use deserialize(byte[]) with native Kafka Connect schemas","Route deserialization through the SeaTunnel Kafka connector"],"tags":["kafka","deserialization","unsupported-operation"],"backgroundTag":"unsupported-operation","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}