{"record":{"id":"b8e9f6b3acca07be","repo":"apache/seatunnel","slug":"table-config-not-found","errorCode":"TABLE_CONFIG_NOT_FOUND","errorMessage":"The corresponding table configuration is not found","messagePattern":"The corresponding table configuration is not found","errorType":"error_code","errorClass":"HudiConnectorException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-hudi/src/main/java/org/apache/seatunnel/connectors/seatunnel/hudi/sink/HudiSinkFactory.java","lineNumber":148,"sourceCode":"                        catalogTable.getCatalogName());\n        // set record keys to options\n        CatalogTable finalCatalogTable = catalogTable;\n        return () ->\n                new HudiSink(\n                        context.getOptions(), hudiSinkConfig, hudiTableConfig, finalCatalogTable);\n    }\n\n    private HudiTableConfig getHudiTableConfig(HudiSinkConfig hudiSinkConfig, String tableName) {\n        List<HudiTableConfig> tableList = hudiSinkConfig.getTableList();\n        if (tableList.size() == 1) {\n            return tableList.get(0);\n        } else if (tableList.size() > 1) {\n            Optional<HudiTableConfig> optionalHudiTableConfig =\n                    tableList.stream()\n                            .filter(table -> table.getTableName().equals(tableName))\n                            .findFirst();\n            if (!optionalHudiTableConfig.isPresent()) {\n                throw new HudiConnectorException(\n                        TABLE_CONFIG_NOT_FOUND,\n                        \"The corresponding table configuration is not found\");\n            }\n            return optionalHudiTableConfig.get();\n        }\n        throw new HudiConnectorException(\n                TABLE_CONFIG_NOT_FOUND, \"The corresponding table configuration is not found\");\n    }\n}\n","sourceCodeStart":130,"sourceCodeEnd":158,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-hudi/src/main/java/org/apache/seatunnel/connectors/seatunnel/hudi/sink/HudiSinkFactory.java#L130-L158","documentation":"When the Hudi sink is configured with multiple tables, HudiSinkFactory.getHudiTableConfig() looks up the HudiTableConfig entry whose table_name matches the requested table. If no entry matches, a HudiConnectorException with TABLE_CONFIG_NOT_FOUND is thrown. Every table being written must have a corresponding entry in the sink's table_list.","triggerScenarios":"Multi-table Hudi sink where the runtime requests a config for tableName not present in the configured table_list — e.g. the data's table name doesn't equal any configured `table_name`.","commonSituations":"Schema/table name mismatch between upstream (e.g. CDC source table name) and the configured table_name; case-sensitivity differences; adding a table to the source but forgetting to add it to the Hudi sink table_list.","solutions":["Add a table_list entry with `table_name` exactly matching the table being routed.","Verify case sensitivity and exact spelling of the configured table_name versus the source table name.","If using table path-based config, confirm which table_name it registers and align the sink routing accordingly."],"exampleFix":"// before\ntable_list = [ { table_name = \"orders\", ... } ]\n// runtime routes table \"order_items\"\n\n// after\ntable_list = [\n  { table_name = \"orders\", ... },\n  { table_name = \"order_items\", ... }\n]","handlingStrategy":"validation","validationCode":"Set<String> configured = tableList.stream()\n    .map(HudiTableConfig::getTableName)\n    .collect(Collectors.toSet());\nif (!configured.contains(tableName))\n    throw new IllegalArgumentException(\"missing Hudi table config for: \" + tableName);","typeGuard":null,"tryCatchPattern":"try {\n    sink.write(...);\n} catch (HudiConnectorException e) {\n    if (e.getCode() == HudiConnectorException.TABLE_CONFIG_NOT_FOUND) {\n        // add/fix the table_list entry for the table\n    } else throw e;\n}","preventionTips":["Keep source table names and Hudi sink table_list entries in sync.","Watch case sensitivity of table names.","When adding a table upstream, add a matching sink entry in the same change."],"tags":["hudi","config","table-lookup","multi-table"],"backgroundTag":"record-not-found","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"}