apache/seatunnel · error · CatalogException
Could not delete table %s
Error message
Could not delete table %s
What it means
KuduCatalog.dropTable() deletes the Kudu table via kuduClient.deleteTable; if the Kudu RPC throws a KuduException it is wrapped in a CatalogException with this message. Only RPC-level failures produce this — a missing table raises TableNotExistException instead (unless ignoreIfNotExists).
Source
Thrown at seatunnel-connectors-v2/connector-kudu/src/main/java/org/apache/seatunnel/connectors/seatunnel/kudu/catalog/KuduCatalog.java:240
@Override
public void createTable(TablePath tablePath, CatalogTable table, boolean ignoreIfExists)
throws TableAlreadyExistException, DatabaseNotExistException, CatalogException {
throw new UnsupportedOperationException();
}
@Override
public void dropTable(TablePath tablePath, boolean ignoreIfNotExists)
throws TableNotExistException, CatalogException {
String tableName = tablePath.getFullName();
try {
if (tableExists(tablePath)) {
kuduClient.deleteTable(tableName);
} else if (!ignoreIfNotExists) {
throw new TableNotExistException(catalogName, tablePath);
}
} catch (KuduException e) {
throw new CatalogException("Could not delete table " + tableName, e);
}
}
@Override
public void createDatabase(TablePath tablePath, boolean ignoreIfExists)
throws DatabaseAlreadyExistException, CatalogException {
throw new UnsupportedOperationException();
}
@Override
public void dropDatabase(TablePath tablePath, boolean ignoreIfNotExists)
throws DatabaseNotExistException, CatalogException {
throw new UnsupportedOperationException();
}
protected Optional<PrimaryKey> getPrimaryKey(List<ColumnSchema> columnSchemaList) {
List<String> pkFields =
columnSchemaList.stream().map(ColumnSchema::getName).collect(Collectors.toList());View on GitHub (pinned to cf67b549a7)
Solutions
- Check Kudu user permissions for table deletion
- Retry after confirming cluster health
- Verify the table wasn't concurrently deleted
- Inspect the wrapped KuduException cause
Defensive patterns
Strategy: try-catch
Validate before calling
// Pre-check: catalog.tableExists(tablePath) and sufficient Kudu ACLs for the user
Try / catch
try { catalog.dropTable(tablePath, false); } catch (CatalogException e) { /* retry or inspect e.getCause() (KuduException) */ } Prevention
- Grant the Kudu user delete permissions on the table
- Pass ignoreIfNotExists=true for idempotent cleanup jobs
- Avoid concurrent drops of the same table
When it happens
Trigger: Calling catalog.dropTable(tablePath, ignoreIfNotExists) when tableExists passed but the actual deleteTable RPC failed — leader election in progress, permissions, or connectivity loss.
Common situations: Insufficient Kudu ACLs to delete tables; tablet-server unavailability during delete; race where table is dropped concurrently by another job.
Related errors
- Failed EXECUTE SQL in catalog %s
- Unsupported action type:
- Table 'TablePath{databaseName='null', schemaName='null', tab
- Failed creating table {tablePath.getFullName()}
- Failed close kudu client
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/5420482d1e92a321.
Report an issue: GitHub.