{"record":{"id":"0decc7202c2d2faa","repo":"apache/seatunnel","slug":"unsupported-row-kind-0decc7","errorCode":null,"errorMessage":"Unsupported row kind: {}","messagePattern":"Unsupported row kind: (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"seatunnel-connectors-v2/connector-hugegraph/src/main/java/org/apache/seatunnel/connectors/seatunnel/hugegraph/sink/HugeGraphSinkWriter.java","lineNumber":382,"sourceCode":"        switch (row.getRowKind()) {\n            case INSERT:\n                handleUpsert(row);\n                break;\n            case UPDATE_AFTER:\n                handleUpdate(pendingUpdateBefore, row);\n                pendingUpdateBefore = null;\n                break;\n            case DELETE:\n                handleDelete(row);\n                break;\n            case UPDATE_BEFORE:\n                // Correlated with the immediately following UPDATE_AFTER (changelog contract) and\n                // handled together in handleUpdate, so a key-changing update deletes the\n                // pre-update element instead of leaving it orphaned.\n                pendingUpdateBefore = row;\n                break;\n            default:\n                LOG.warn(\"Unsupported row kind: {}\", row.getRowKind());\n                break;\n        }\n    }\n\n    private void handleUpsert(SeaTunnelRow row) throws IOException {\n        List<GraphElementEnvelope> vertexEnvelopes = new ArrayList<>();\n        List<GraphElementEnvelope> edgeEnvelopes = new ArrayList<>();\n\n        for (MappingEntry entry : mappingEntries) {\n            // mapToEnvelopes returns 1 element normally, or N when unfold expands a list cell.\n            for (GraphElementEnvelope envelope : mapToEnvelopes(entry, row)) {\n                if (entry.config.getType() == LabelType.VERTEX) {\n                    vertexEnvelopes.add(envelope);\n                } else {\n                    edgeEnvelopes.add(envelope);\n                }\n            }\n        }","sourceCodeStart":364,"sourceCodeEnd":400,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-hugegraph/src/main/java/org/apache/seatunnel/connectors/seatunnel/hugegraph/sink/HugeGraphSinkWriter.java#L364-L400","documentation":"This warning is logged by HugeGraphSinkWriter.write() when a SeaTunnelRow arrives with a RowKind the writer does not explicitly handle. The switch covers INSERT, UPDATE_AFTER (via UPDATE_BEFORE pairing / upsert handling) and DELETE; any other kind (e.g. unexpected changelog types) falls into the default branch and the row is skipped without being written.","triggerScenarios":"A row with an unhandled SeaTunnelRowKind reaches write()'s switch default — typically rows outside the connector's expected CDC/upsert contract (kind not INSERT/UPDATE_BEFORE/UPDATE_AFTER/DELETE).","commonSituations":"Sources emitting row kinds the sink's changelog contract does not anticipate (e.g. unusual transform outputs or connector translations); misuse of the connector with a non-CDC source producing unsupported kinds; version mismatches between API row kinds and connector handling.","solutions":["Check the source/transform producing the rows and confirm the changelog kind contract (INSERT/UPDATE_BEFORE/UPDATE_AFTER/DELETE).","Adjust the source or insert a transform so rows are normalized to supported kinds.","If the kind is legitimately unsupported for HugeGraph (e.g. cannot express the op), accept the skip or filter those rows upstream to silence the warning."],"exampleFix":"// before: source emits kinds the sink ignores\n// after: normalize with a transform or filter\nsource {\n  ... \n  transform {\n    Filter {\n      # drop rows whose kind is not representable in HugeGraph\n    }\n  }\n}","handlingStrategy":"validation","validationCode":"import static org.apache.seatunnel.api.table.type.RowKind;\nSet<String> supported = Set.of(\"INSERT\", \"UPDATE_BEFORE\", \"UPDATE_AFTER\", \"DELETE\");\nassert supported.contains(row.getRowKind().name()) : \"Sink cannot handle kind \" + row.getRowKind();","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Pair the sink with sources/transes that emit the standard CDC changelog kinds","Normalize unsupported kinds upstream with a transform","Test the full source->sink pipeline with a CDC scenario including updates and deletes"],"tags":["hugegraph","row-kind","cdc","unsupported"],"backgroundTag":"unsupported-operation","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"}