apache/seatunnel · error · ClickhouseConnectorException
Table %s.%s not found in table list of job configuration.
Error message
Table %s.%s not found in table list of job configuration.
What it means
ClickhouseSourceReader.pollNext() looks up the ClickhouseSourceTable for a split's configTablePath in its local tables map and throws TABLE_NOT_FOUND_ERROR when absent. The reader received a split for a table that was not part of its initialized table list, meaning reader state and split enumeration are inconsistent.
Source
Thrown at seatunnel-connectors-v2/connector-clickhouse/src/main/java/org/apache/seatunnel/connectors/seatunnel/clickhouse/source/ClickhouseSourceReader.java:80
@Override
public void close() throws IOException {
if (client != null) {
client.close();
}
}
@Override
public void pollNext(Collector<SeaTunnelRow> output) throws Exception {
synchronized (output.getCheckpointLock()) {
ClickhouseSourceSplit split = splitQueue.poll();
if (split != null) {
ClickhouseValueReader clickhouseValueReader = null;
try {
ClickhouseSourceTable clickhouseSourceTable =
tables.get(split.getConfigTablePath());
if (clickhouseSourceTable == null) {
throw new ClickhouseConnectorException(
ClickhouseConnectorErrorCode.TABLE_NOT_FOUND_ERROR,
String.format(
"Table %s.%s not found in table list of job configuration.",
split.getConfigTablePath().getDatabaseName(),
split.getConfigTablePath().getTableName()));
}
CatalogTable catalogTable = clickhouseSourceTable.getCatalogTable();
clickhouseValueReader =
new ClickhouseValueReader(
split,
catalogTable.getSeaTunnelRowType(),
clickhouseSourceTable);
while (clickhouseValueReader.hasNext()) {
List<SeaTunnelRow> next = clickhouseValueReader.next();
next.forEach(output::collect);
}View on GitHub (pinned to cf67b549a7)
Solutions
- Restart the job from scratch (no savepoint/checkpoint) so splits are re-enumerated from the current config
- Ensure the table list in the job config still contains the table named in the error
- If resuming after a config change is intended, change tablePath/config carefully or use a new job name
- Verify all SeaTunnel nodes run the same connector version
Example fix
// before: resuming modified job from old savepoint sh bin/seatunnel.sh --config job.conf -s old.savepoint // after: start fresh so splits match current config sh bin/seatunnel.sh --config job.conf -e local
Defensive patterns
Strategy: fallback
Validate before calling
// before resuming from a savepoint, confirm all configured tables are still present in the new config List<String> configured = config.getTablePaths(); assert configured.contains(split.getConfigTablePath()) : "split table missing from new config; start job fresh";
Try / catch
try {
reader.pollNext(...);
} catch (ClickhouseConnectorException e) {
if (e.getErrorCode() == ClickhouseConnectorErrorCode.TABLE_NOT_FOUND_ERROR) {
// drop stale savepoint/checkpoint and restart the job so splits match the current config
log.error("Stale split for removed table; restart job without savepoint", e);
}
throw e;
} Prevention
- Never resume from savepoints/checkpoints after changing the table list in the config
- Keep the same connector version across all nodes to avoid split-state incompatibility
- When editing table config, start the job fresh or with a new job name
- Log the reader's table map contents at startup to catch init mismatches early
When it happens
Trigger: A SourceSplit arrives whose configTablePath is not a key in the reader's `tables` map — typically after a job config change with restored/compatible checkpoint state, or a split enumerated for a table removed from the new config.
Common situations: Restarting/resuming a job from a checkpoint/savepoint after the table list in the config was edited, running with an incompatible connector version whose split serialization changed, or master/reader table-map initialization mismatch.
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
- TABLE_NOT_EXISTED
- Can not find catalog table with factoryId [%s]
- ACKNOWLEDGE_FAILED
- COMMIT_FAILED
- TABLE_NOT_FOUND
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/53af8368e2c1700e.
Report an issue: GitHub.