{"record":{"id":"52707f7bb5fc03a8","repo":"apache/seatunnel","slug":"no-mappings-matched-table-in-this-writer-the","errorCode":null,"errorMessage":"No mappings matched table '{}' in this writer. The writer will be a no-op: rows are acknowledged without writing to HugeGraph.","messagePattern":"No mappings matched table '(.+?)' in this writer\\. The writer will be a no-op: rows are acknowledged without writing to HugeGraph\\.","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":264,"sourceCode":"                                .filter(t -> t != null && !t.isEmpty())\n                                .distinct()\n                                .collect(Collectors.toList());\n                throw new HugeGraphConnectorException(\n                        HugeGraphConnectorErrorCode.ILLEGAL_CONFIG_ARGUMENT,\n                        String.format(\n                                \"No mapping matched writer table '%s'. The configured \"\n                                        + \"source_table value(s) are %s. Verify that each \"\n                                        + \"source_table matches the CatalogTable.getTablePath() \"\n                                        + \"produced by the upstream Source (in read-all mode this \"\n                                        + \"is the HugeGraph label name).\",\n                                tablePath, configuredTables));\n            }\n\n            // Single-table mode (no source_table set on any mapping): no entries means the\n            // row type carries no fields the mappings can use. This is unusual but not\n            // necessarily a config error — a downstream project may legitimately sink only a\n            // subset of fields. Log and continue as a no-op.\n            LOG.warn(\n                    \"No mappings matched table '{}' in this writer. The writer will be a no-op: \"\n                            + \"rows are acknowledged without writing to HugeGraph.\",\n                    tablePath);\n        }\n        return entries;\n    }\n\n    private Map<String, Integer> resolveLegacyFieldsIndex(\n            Map<String, Integer> originalFieldsIndex) {\n        if (sinkConfig.getSchemaConfig() == null) {\n            return originalFieldsIndex;\n        }\n\n        List<String> selectedFields = sinkConfig.getSelectedFields();\n        if (selectedFields != null && !selectedFields.isEmpty()) {\n            Map<String, Integer> selected = new LinkedHashMap<>();\n            for (String field : selectedFields) {\n                Integer index = originalFieldsIndex.get(field);","sourceCodeStart":246,"sourceCodeEnd":282,"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#L246-L282","documentation":"This warning is emitted by HugeGraphSinkWriter.buildMappingEntries() when, in single-table mode (no mapping sets source_table), none of the configured mappings matched any fields of the current table path. The writer therefore has no mapping entries and becomes a no-op: incoming rows are acknowledged but never written to HugeGraph. It is logged rather than failed because a legitimate use case is sinking only a subset of fields/tables.","triggerScenarios":"Writer initialization with mappings that reference fields not present in the row type of the incoming table (or mappings keyed to a different table path while none sets source_table); buildMappingEntries() finds zero entries for the tablePath and logs this message.","commonSituations":"Column name mismatches between the SeaTunnel row type and the mapping properties; upstream schema changes that renamed/dropped fields; users expecting mappings to apply globally but whose row type carries none of the mapped fields; typos in mapping property source names.","solutions":["Inspect the job's table path and row type; confirm the mapping property source names exactly match SeaTunnel column names.","If the intent was multi-table routing, set source_table on the relevant mappings so they are selected for this table.","If the no-op is unintended, fix the mappings; if it is intentional (subset-of-fields sink), suppress/ignore the warning knowingly."],"exampleFix":"// before (no matching fields)\nmappings = [{type = \"VERTEX\", label = \"person\", properties = {nm = \"name\"}}] // table has no 'name'\n// after\nmappings = [{type = \"VERTEX\", label = \"person\", properties = {name = \"user_name\"}}] // matches actual column","handlingStrategy":"validation","validationCode":"def rowColumns = tablePathColumns[tablePath]\ndef matched = mappings.findAll { m ->\n    (m.source_table == null || m.source_table == tablePath) &&\n    m.properties.values().every { rowColumns.contains(it) }\n}\nassert !matched.isEmpty() : \"No mappings match table ${tablePath}; writer will be a no-op\"","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Verify mapping property source names exactly match SeaTunnel column names","Set source_table on mappings when running multi-table jobs","Re-check mappings after upstream schema changes","Run a tiny test job and confirm rows actually land in HugeGraph before production"],"tags":["hugegraph","config","no-op","mapping"],"backgroundTag":"unmatched-mapping-config","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"}