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

  1. Check Kudu user permissions for table deletion
  2. Retry after confirming cluster health
  3. Verify the table wasn't concurrently deleted
  4. 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

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


AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10). Data as JSON: /api/errors/5420482d1e92a321. Report an issue: GitHub.