{"record":{"id":"796cbc70c293c275","repo":"apache/seatunnel","slug":"invalid-graph-schema-796cbc","errorCode":"INVALID_GRAPH_SCHEMA","errorMessage":"Mapping[EDGE/%s]: Field '%s' specified in idFields not found in row schema. Available fields: %s","messagePattern":"Mapping\\[EDGE/(.+?)\\]: Field '(.+?)' specified in idFields not found in row schema\\. Available fields: (.+?)","errorType":"error_code","errorClass":"HugeGraphConnectorException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-hugegraph/src/main/java/org/apache/seatunnel/connectors/seatunnel/hugegraph/mapper/EdgeMapper.java","lineNumber":352,"sourceCode":"                Object uuidValue = uuidValues.get(0);\n                if (isConsideredNull(uuidValue)) {\n                    return null;\n                }\n                return UUID.fromString(String.valueOf(uuidValue));\n            default:\n                throw new HugeGraphConnectorException(\n                        HugeGraphConnectorErrorCode.ILLEGAL_CONFIG_ARGUMENT,\n                        \"Unsupported IdStrategy: \" + strategy);\n        }\n    }\n\n    private List<Object> getFieldValues(SeaTunnelRow row, List<String> fields) {\n        List<Object> values = new ArrayList<>(fields.size());\n        Map<String, String> fm = mappingConfig.getFieldMapping();\n        for (String fieldName : fields) {\n            Integer index = fieldsIndex.get(fieldName);\n            if (index == null) {\n                throw new HugeGraphConnectorException(\n                        HugeGraphConnectorErrorCode.INVALID_GRAPH_SCHEMA,\n                        String.format(\n                                \"Mapping[EDGE/%s]: Field '%s' specified in idFields not found in row schema. \"\n                                        + \"Available fields: %s\",\n                                mappingConfig.getLabel(), fieldName, fieldsIndex.keySet()));\n            }\n\n            Object rawValue = row.getField(index);\n            if (isConsideredNull(rawValue)) {\n                continue;\n            }\n\n            String propName = fm.getOrDefault(fieldName, fieldName);\n            PropertyKey propertyKey = propertyKeyCache.get(propName);\n\n            if (propertyKey != null) {\n                Object converted =\n                        DataTypeUtil.convert(","sourceCodeStart":334,"sourceCodeEnd":370,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-hugegraph/src/main/java/org/apache/seatunnel/connectors/seatunnel/hugegraph/mapper/EdgeMapper.java#L334-L370","documentation":"EdgeMapper.getFieldValues resolves each field listed in idFields (or sort keys) to a column index in the row schema. A field missing from fieldsIndex means the mapping references a column the incoming SeaTunnel row does not have, so INVALID_GRAPH_SCHEMA is thrown with the label and available fields.","triggerScenarios":"Reading pkValues/stringValues/numberValues/uuidValues/getSortKeyValues for an EDGE mapping where an idFields/sortKey entry does not exist in the row's schema — typically a mismatch between upstream schema and fields mapping.","commonSituations":"Renaming a column upstream without updating id_fields; wrong table routed to the mapping in multi-table mode (source_table mismatch); case-sensitive field name typos.","solutions":["Align idFields entries with actual upstream columns listed in 'Available fields' in the message","Fix the fields/ColumnMapping so the field exists in the row schema","Check source_table routing: the row arriving may belong to a different table than assumed"],"exampleFix":"// before\nid_fields = [\"uid\"]   // upstream column is \"user_id\"\n// after\nid_fields = [\"user_id\"]","handlingStrategy":"validation","validationCode":"List<String> missing = idFields.stream()\n    .filter(f -> !rowSchema.getFieldNames().contains(f))\n    .collect(Collectors.toList());\nif (!missing.isEmpty()) throw new IllegalArgumentException(\"id_fields not in schema: \" + missing);","typeGuard":"boolean allPresent = idFields.stream().allMatch(schema.getFieldNames()::contains);","tryCatchPattern":"try { edgeMapper.map(row); } catch (HugeGraphConnectorException e) { if (e.getCode() == INVALID_GRAPH_SCHEMA) { log.error(e.getMessage()); /* fix id_fields or upstream schema */ } }","preventionTips":["Keep id_fields in sync with upstream column names (case-sensitive)","Re-validate mappings after any upstream schema change","Verify source_table routing so each mapping receives its own table's rows"],"tags":["hugegraph","mapper","edge","schema-mapping"],"backgroundTag":"schema-validation-failed","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"}