apache/seatunnel · error · CatalogException
Dropping table %s exception.
Error message
Dropping table %s exception.
What it means
Thrown by HudiCatalog.dropTable when recursively deleting the table's HDFS/storage path (fs.delete) fails with an IOException, after existence checks already passed. It wraps the filesystem-level deletion error, not a catalog lookup failure.
Source
Thrown at seatunnel-connectors-v2/connector-hudi/src/main/java/org/apache/seatunnel/connectors/seatunnel/hudi/catalog/HudiCatalog.java:265
}
}
@Override
public void dropTable(TablePath tablePath, boolean ignoreIfNotExists)
throws TableNotExistException, CatalogException {
if (!tableExists(tablePath)) {
if (ignoreIfNotExists) {
return;
} else {
throw new TableNotExistException(catalogName, tablePath);
}
}
Path path = new Path(inferTablePath(tableParentDfsPathStr, tablePath));
try {
this.fs.delete(path, true);
} catch (IOException e) {
throw new CatalogException(String.format("Dropping table %s exception.", tablePath), e);
}
}
@Override
public void truncateTable(TablePath tablePath, boolean ignoreIfNotExists)
throws TableNotExistException, CatalogException {
throw new UnsupportedOperationException("Hudi catalog not support truncate table.");
}
@Override
public void createDatabase(TablePath tablePath, boolean ignoreIfExists)
throws DatabaseAlreadyExistException, CatalogException {
if (databaseExists(tablePath.getDatabaseName())) {
if (ignoreIfExists) {
return;
} else {
throw new DatabaseAlreadyExistException(catalogName, tablePath.getDatabaseName());
}View on GitHub (pinned to cf67b549a7)
Solutions
- Stop any jobs writing to the table, then retry the drop.
- Grant the connector user delete permission on the table path.
- Delete the path manually with hadoop fs -rm -r if the connector account cannot.
- Check the wrapped IOException cause for the concrete storage error.
Defensive patterns
Strategy: try-catch
Validate before calling
// Java
Path p = new Path(tablePathPath);
FileSystem fs = p.getFileSystem(conf);
if (!fs.exists(p)) { /* nothing to drop */ }
// check writability: fs.exists only proves read; deletes need write perms on parent Try / catch
// Java
try {
catalog.dropTable(tablePath, false);
} catch (CatalogException e) {
if (e.getCause() instanceof IOException) {
// stop writers, verify permissions, then retry
}
throw e;
} Prevention
- Ensure no jobs are writing to the table while dropping it.
- Grant the connector user delete permission on the table directory.
- Retry drops after transient cloud-storage throttling.
- Fall back to hadoop fs -rm -r with an admin account if needed.
When it happens
Trigger: Calling dropTable on an existing table when fs.delete(path, true) throws IOException: permission denied, HDFS/s3 outage, or files locked/being written by a running job.
Common situations: Connector user lacks delete permission on the table directory; concurrent SeaTunnel/Hudi job still writing to the table; cloud storage eventual-consistency or throttling errors.
Understand the failure class
Background: "failed to write file", "Could not save figure", "Error saving remote file" — file write failed: causes and fixes across languages and libraries — this error's family across 38 libraries.
Related errors
- Circular condition chain detected: '%s' already exists in th
- Condition for option '%s' has a null operator
- SeaTunnelAPIErrorCode.CONFIG_VALIDATION_FAILED
- Listing table in database %s exception.
- Error while checking whether table exists under path:${baseP
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/6a9ea61a606d473e.
Report an issue: GitHub.