apache/seatunnel · critical · CatalogException
Failed to open catalog ${catalogName}
Error message
Failed to open catalog ${catalogName} What it means
EasysearchCatalog.open wraps client initialization in a try/catch and rethrows any exception as a CatalogException with the catalog name. It indicates the Easysearch REST client could not be created or the initial connection/verification against the cluster failed.
Source
Thrown at seatunnel-connectors-v2/connector-easysearch/src/main/java/org/apache/seatunnel/connectors/seatunnel/easysearch/catalog/EasysearchCatalog.java:89
String catalogName, String defaultDatabase, ReadonlyConfig easySearchConfig) {
this.catalogName = checkNotNull(catalogName, "catalogName cannot be null");
this.defaultDatabase = defaultDatabase;
this.pluginConfig = checkNotNull(easySearchConfig, "easySearchConfig cannot be null");
}
@Override
public void open() throws CatalogException {
try {
ezsClient = EasysearchClient.createInstance(pluginConfig);
EasysearchClusterInfo easysearchClusterInfo = ezsClient.getClusterInfo();
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(
"Success open ezs catalog: {}, cluster info: {}",
catalogName,
easysearchClusterInfo);
}
} catch (Exception e) {
throw new CatalogException(String.format("Failed to open catalog %s", catalogName), e);
}
}
@Override
public void close() throws CatalogException {
ezsClient.close();
}
@Override
public String name() {
return catalogName;
}
@Override
public String getDefaultDatabase() throws CatalogException {
return defaultDatabase;
}
View on GitHub (pinned to cf67b549a7)
Solutions
- Verify cluster connectivity: curl the Easysearch endpoint from the job machine.
- Check catalog options (hosts, scheme, username, password, TLS settings) for typos.
- Inspect the chained cause 'e' in the stack trace for the root failure (connect timeout, 401, SSL error).
- If using https, import the cluster certificate into the truststore or disable/fix cert validation appropriately.
Example fix
// before
catalogs {
easysearch {
hosts = ["localhost:9200"]
scheme = "https"
}
}
// after (cluster is plain http)
catalogs {
easysearch {
hosts = ["localhost:9200"]
scheme = "http"
}
} Defensive patterns
Strategy: try-catch
Validate before calling
// preflight connectivity HttpGet ping = new HttpGet(host + ":" + port); // execute with credentials; fail fast if not 200
Try / catch
try {
catalog.open();
} catch (CatalogException e) {
if (e.getCause() instanceof IOException || e.getCause() instanceof RuntimeException) {
// inspect cause: connect refused vs 401 vs SSL
}
throw e;
} Prevention
- Ping the Easysearch endpoint from the job host before submitting
- Double-check scheme (http/https), hosts and credentials
- Import TLS certs when using https
When it happens
Trigger: Any exception during ezsClient initialization in open(): unreachable host/port, wrong scheme (http vs https), TLS handshake failure, authentication rejection, or malformed cluster info used to build the client.
Common situations: Wrong hosts/username/password in catalog options; cluster down or firewalled; HTTPS certificate not trusted; Easysearch version endpoint not reachable behind a proxy.
Understand the failure class
Background: ECONNREFUSED and "connection refused" / "could not connect to server" errors: what they mean and how to fix them — this error's family across 44 libraries.
Related errors
- CONNECT_FAILED
- Failed to drop table ${tableName} in catalog ${catalogName}
- Failed to truncate table ${tableName} in catalog ${catalogNa
- Unsupported action type: ${actionType}
- GET_EZS_VERSION_FAILED
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/2ce2920460f7a82b.
Report an issue: GitHub.