apache/seatunnel · error · HudiConnectorException
TABLE_CONFIG_NOT_FOUND
TABLE_CONFIG_NOT_FOUND
Error message
The corresponding table configuration is not found
What it means
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.
Source
Thrown at seatunnel-connectors-v2/connector-hudi/src/main/java/org/apache/seatunnel/connectors/seatunnel/hudi/sink/HudiSinkFactory.java:148
catalogTable.getCatalogName());
// set record keys to options
CatalogTable finalCatalogTable = catalogTable;
return () ->
new HudiSink(
context.getOptions(), hudiSinkConfig, hudiTableConfig, finalCatalogTable);
}
private HudiTableConfig getHudiTableConfig(HudiSinkConfig hudiSinkConfig, String tableName) {
List<HudiTableConfig> tableList = hudiSinkConfig.getTableList();
if (tableList.size() == 1) {
return tableList.get(0);
} else if (tableList.size() > 1) {
Optional<HudiTableConfig> optionalHudiTableConfig =
tableList.stream()
.filter(table -> table.getTableName().equals(tableName))
.findFirst();
if (!optionalHudiTableConfig.isPresent()) {
throw new HudiConnectorException(
TABLE_CONFIG_NOT_FOUND,
"The corresponding table configuration is not found");
}
return optionalHudiTableConfig.get();
}
throw new HudiConnectorException(
TABLE_CONFIG_NOT_FOUND, "The corresponding table configuration is not found");
}
}
View on GitHub (pinned to cf67b549a7)
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.
Example fix
// before
table_list = [ { table_name = "orders", ... } ]
// runtime routes table "order_items"
// after
table_list = [
{ table_name = "orders", ... },
{ table_name = "order_items", ... }
] Defensive patterns
Strategy: validation
Validate before calling
Set<String> configured = tableList.stream()
.map(HudiTableConfig::getTableName)
.collect(Collectors.toSet());
if (!configured.contains(tableName))
throw new IllegalArgumentException("missing Hudi table config for: " + tableName); Try / catch
try {
sink.write(...);
} catch (HudiConnectorException e) {
if (e.getCode() == HudiConnectorException.TABLE_CONFIG_NOT_FOUND) {
// add/fix the table_list entry for the table
} else throw e;
} Prevention
- 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.
When it happens
Trigger: 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`.
Common situations: 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.
Understand the failure class
Background: Record Not Found Errors: "not found", RecordNotFound, and "was not found" — what they mean and how to fix them — this error's family across 28 libraries.
Related errors
- CONFIG_VALIDATION_FAILED
- Please configure unique `table_name`, not allow null/duplica
- Please configure `table_name`, not allow null table name in
- Please configure `record_key_fields` of ${tableName}, it is
- UNSUPPORTED_OPERATION
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/b8e9f6b3acca07be.
Report an issue: GitHub.