apache/seatunnel · error · TableNotExistException
TableNotExistException: table '${tablePath}' does not exist
Error message
TableNotExistException: table '${tablePath}' does not exist in catalog '${catalogName}' What it means
Thrown by HbaseCatalog.dropTable when the target HBase table does not exist and ignoreIfNotExists is false. Standard catalog TableNotExistException sentinel; the missing table and catalog name identify the failed lookup.
Source
Thrown at seatunnel-connectors-v2/connector-hbase/src/main/java/org/apache/seatunnel/connectors/seatunnel/hbase/catalog/HbaseCatalog.java:147
}
return;
}
hbaseClient.createTable(
tablePath.getDatabaseName(),
tablePath.getTableName(),
hbaseParameters.getFamilyNames().values().stream()
.filter(value -> !"all_columns".equals(value))
.collect(Collectors.toList()),
ignoreIfExists);
}
@Override
public void dropTable(TablePath tablePath, boolean ignoreIfNotExists)
throws TableNotExistException, CatalogException {
checkNotNull(tablePath);
if (!tableExists(tablePath)) {
if (!ignoreIfNotExists) {
throw new TableNotExistException(catalogName, tablePath);
}
return;
}
hbaseClient.dropTable(tablePath.getDatabaseName(), tablePath.getTableName());
}
@Override
public void createDatabase(TablePath tablePath, boolean ignoreIfExists)
throws DatabaseAlreadyExistException, CatalogException {
if (databaseExists(tablePath.getDatabaseName())) {
if (!ignoreIfExists) {
throw new DatabaseAlreadyExistException(catalogName, tablePath.getDatabaseName());
}
return;
}
hbaseClient.createNamespace(tablePath.getDatabaseName());
}
View on GitHub (pinned to cf67b549a7)
Solutions
- Pass ignoreIfNotExists = true for idempotent cleanup.
- Confirm the exact namespace:table name with HBase shell 'list'.
- Check whether another process already dropped the table.
Example fix
// before catalog.dropTable(path, false); // fails if already dropped // after catalog.dropTable(path, true);
Defensive patterns
Strategy: validation
Validate before calling
if (catalog.tableExists(tablePath)) {
catalog.dropTable(tablePath, false);
} Try / catch
try {
catalog.dropTable(tablePath, false);
} catch (TableNotExistException e) {
LOG.info("Table {} already gone; nothing to drop", tablePath.getFullName());
} Prevention
- Use ignoreIfNotExists = true for cleanup scripts.
- Check tableExists before dropping.
- HBase names are case-sensitive — verify exact namespace:table strings.
- Handle re-runs of teardown logic gracefully.
When it happens
Trigger: Calling dropTable(tablePath, ignoreIfNotExists=false) where tableExists returns false (table never created, already dropped, or wrong namespace/name).
Common situations: Cleanup scripts running twice; typos in table or namespace name; case mismatch (HBase table names are case-sensitive); table disabled but effectively absent in the connector's check.
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
Related errors
- Failed to open catalog %s
- DatabaseNotExistException: database '${databaseName}' does n
- Not implement
- TableAlreadyExistException: table '${tablePath}' already exi
- DatabaseAlreadyExistException: database '${databaseName}' al
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/53e7861997819b2f.
Report an issue: GitHub.