{"record":{"id":"f925ae1dec1ac203","repo":"apache/seatunnel","slug":"row-kind-rowkind-is-not-supported-in-nebulagrap","errorCode":null,"errorMessage":"Row kind ${rowKind} is not supported in NebulaGraph ${writeMode} mode.","messagePattern":"Row kind (.+?) is not supported in NebulaGraph (.+?) mode\\.","errorType":"exception","errorClass":"IOException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-nebulagraph/src/main/java/org/apache/seatunnel/connectors/seatunnel/nebulagraph/sink/NebulaGraphSinkWriter.java","lineNumber":67,"sourceCode":"    }\n\n    NebulaGraphSinkWriter(\n            NebulaGraphSinkConfig config, SeaTunnelRowType rowType, NebulaGraphClient client) {\n        this.config = config;\n        this.converter = new NebulaGraphRowConverter(config, rowType);\n        this.statementBuilder =\n                new NebulaGraphStatementBuilder(\n                        config.getTag(), converter.getPropertyNames(), config.getWriteMode());\n        this.buffer = new ArrayList<>(config.getBatchSize());\n        this.client = client == null ? new SessionPoolNebulaGraphClient(config) : client;\n    }\n\n    @Override\n    public void write(SeaTunnelRow row) throws IOException {\n        ensureWritable();\n        RowKind rowKind = row.getRowKind();\n        if (rowKind == RowKind.DELETE) {\n            throw unsupportedRowKind(rowKind);\n        }\n        if (config.getWriteMode() == NebulaGraphWriteMode.INSERT && rowKind != RowKind.INSERT) {\n            throw unsupportedRowKind(rowKind);\n        }\n        if (rowKind == RowKind.UPDATE_BEFORE) {\n            return;\n        }\n\n        buffer.add(converter.convert(row));\n        if (buffer.size() >= config.getBatchSize()) {\n            flush();\n        }\n    }\n\n    @Override\n    public Optional<Void> prepareCommit() {\n        try {\n            ensureWritable();","sourceCodeStart":49,"sourceCodeEnd":85,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-nebulagraph/src/main/java/org/apache/seatunnel/connectors/seatunnel/nebulagraph/sink/NebulaGraphSinkWriter.java#L49-L85","documentation":"NebulaGraphSinkWriter.write inspects each row's RowKind. DELETE rows are always rejected, and in INSERT mode only INSERT rows are accepted; UPDATE_BEFORE rows are skipped. Unsupported combinations throw UNSUPPORTED_DATA_TYPE via unsupportedRowKind, naming the row kind and current write mode.","triggerScenarios":"Consuming CDC data (e.g. MySQL-CDC) where DELETE or UPDATE_AFTER/UPDATE_BEFORE rows reach an INSERT-mode NebulaGraph sink; DELETE rows in any write mode.","commonSituations":"CDC pipeline targeting NebulaGraph with default INSERT mode; Debezium-style changelog streams not filtered; using the sink where a delete/delete-supporting sink is expected.","solutions":["Set write_mode = UPDATE (or the mode that supports the row kinds you ingest) for CDC streams","Filter DELETE rows upstream with a Sql transform (e.g. WHERE __op != 'DELETE' or row kind filtering)","Use a transform to convert UPDATE_BEFORE/DELETE rows appropriately before the sink","Route delete events to a separate sink or handle them via explicit delete logic if supported"],"exampleFix":"// before\nNebulaGraph {\n  write_mode = INSERT  // CDC stream has UPDATE/DELETE kinds\n}\n// after\nNebulaGraph {\n  write_mode = UPDATE\n}","handlingStrategy":"validation","validationCode":"RowKind k = row.getRowKind();\nif (k == RowKind.DELETE) throw new IllegalArgumentException(\"DELETE rows unsupported by NebulaGraph sink\");\nif (writeMode == INSERT && k != RowKind.INSERT) throw new IllegalArgumentException(\"mode INSERT only accepts INSERT rows\");","typeGuard":null,"tryCatchPattern":"try {\n    sink.write(row);\n} catch (NebulaGraphConnectorException e) {\n    if (e.getMessage() != null && e.getMessage().contains(\"Row kind\")) {\n        // switch write_mode or filter the row kind upstream\n    }\n    throw e;\n}","preventionTips":["Match write_mode to the changelog kinds your source emits","Filter DELETE/UPDATE_BEFORE rows with a Sql transform for CDC pipelines","Review row-kind support before pointing CDC sources at NebulaGraph"],"tags":["nebulagraph","cdc","rowkind","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"}