apache/seatunnel · error · HbaseConnectorException
NAMESPACE_DELETE_EXCEPTION
NAMESPACE_DELETE_EXCEPTION
Error message
HbaseConnectorErrorCode.NAMESPACE_DELETE_EXCEPTION.getErrorMessage()
What it means
HBase admin operation for creating a namespace failed with an IOException, wrapped and rethrown as HbaseConnectorException with NAMESPACE_CREATE_EXCEPTION. The library throws this because the HBase Admin.createNamespace call requires an active cluster connection and the namespace must not already exist. It signals that namespace creation via the admin API could not complete.
Solutions
- Check whether the namespace already exists with HBase shell 'list_namespace' and skip creation if so
- Verify HBase cluster connectivity (zookeeper quorum, hbase.zookeeper.quorum config)
- Ensure the submitting user has CREATE permission on the namespace
- Inspect the wrapped cause (getCause) for the concrete IOException subclass
Example fix
// before
client.createNamespace("ns");
// after
if (!client.namespaceExists("ns")) { // guard via admin.getNamespaceDescriptor
client.createNamespace("ns");
} Defensive patterns
Strategy: validation
Validate before calling
try (Admin admin = connection.getAdmin()) {
boolean exists = false;
try { admin.getNamespaceDescriptor(DescriptorBuilder... ); } catch (NamespaceNotFoundException e) { exists = false; }
// create only if !exists
} Type guard
boolean namespaceExists(Admin admin, String ns) {
try { admin.getNamespaceDescriptor(ns); return true; }
catch (NamespaceNotFoundException e) { return false; }
catch (IOException e) { throw new UncheckedIOException(e); }
} Try / catch
try { client.createNamespace(ns); }
catch (HbaseConnectorException e) {
if (e.getCause() instanceof NamespaceExistException) { /* idempotent: skip */ }
else throw e;
} Prevention
- Check namespace existence before create (list_namespace)
- Make namespace creation idempotent in job setup
- Validate HBase connectivity before admin operations
When it happens
Trigger: Calling HbaseClient.createNamespace(namespace) when admin.createNamespace(NamespaceDescriptor.create(namespace).build()) throws IOException — e.g. cluster unreachable, namespace already exists (NamespaceExistException), or insufficient permissions.
Common situations: Running a Hbase sink job against a cluster where the namespace already exists from a previous run; HMaster unreachable; user lacks CREATE permission on the namespace.
Related errors
- TABLE_TRUNCATE_EXCEPTION
- DatabaseNotExistException: database
- Failed to close HBase connection.
- CONNECTION_FAILED
- CONNECTION_FAILED_FOR_ADMIN
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/67d89c5c4f53f4aa.
Report an issue: GitHub.
Appendix: source
Thrown at seatunnel-connectors-v2/connector-hbase/src/main/java/org/apache/seatunnel/connectors/seatunnel/hbase/client/HbaseClient.java:264
admin.deleteTable(table);
} catch (IOException e) {
throw new HbaseConnectorException(
HbaseConnectorErrorCode.TABLE_DELETE_EXCEPTION,
HbaseConnectorErrorCode.TABLE_DELETE_EXCEPTION.getErrorMessage(),
e);
}
}
/**
* Create a namespace.
*
* @param namespace namespace name
*/
public void createNamespace(String namespace) {
try {
admin.createNamespace(NamespaceDescriptor.create(namespace).build());
} catch (IOException e) {
throw new HbaseConnectorException(
HbaseConnectorErrorCode.NAMESPACE_CREATE_EXCEPTION,
HbaseConnectorErrorCode.NAMESPACE_CREATE_EXCEPTION.getErrorMessage(),
e);
}
}
/**
* Drop a namespace.
*
* @param namespace namespace name
*/
public void deleteNamespace(String namespace) {
try {
admin.deleteNamespace(namespace);
} catch (IOException e) {
throw new HbaseConnectorException(
HbaseConnectorErrorCode.NAMESPACE_DELETE_EXCEPTION,
HbaseConnectorErrorCode.NAMESPACE_DELETE_EXCEPTION.getErrorMessage(),View on GitHub (pinned to cf67b549a7)