{"record":{"id":"2ce2920460f7a82b","repo":"apache/seatunnel","slug":"failed-to-open-catalog-catalogname","errorCode":null,"errorMessage":"Failed to open catalog ${catalogName}","messagePattern":"Failed to open catalog (.+?)","errorType":"exception","errorClass":"CatalogException","httpStatus":null,"severity":"critical","filePath":"seatunnel-connectors-v2/connector-easysearch/src/main/java/org/apache/seatunnel/connectors/seatunnel/easysearch/catalog/EasysearchCatalog.java","lineNumber":89,"sourceCode":"            String catalogName, String defaultDatabase, ReadonlyConfig easySearchConfig) {\n        this.catalogName = checkNotNull(catalogName, \"catalogName cannot be null\");\n        this.defaultDatabase = defaultDatabase;\n        this.pluginConfig = checkNotNull(easySearchConfig, \"easySearchConfig cannot be null\");\n    }\n\n    @Override\n    public void open() throws CatalogException {\n        try {\n            ezsClient = EasysearchClient.createInstance(pluginConfig);\n            EasysearchClusterInfo easysearchClusterInfo = ezsClient.getClusterInfo();\n            if (LOGGER.isDebugEnabled()) {\n                LOGGER.debug(\n                        \"Success open ezs catalog: {}, cluster info: {}\",\n                        catalogName,\n                        easysearchClusterInfo);\n            }\n        } catch (Exception e) {\n            throw new CatalogException(String.format(\"Failed to open catalog %s\", catalogName), e);\n        }\n    }\n\n    @Override\n    public void close() throws CatalogException {\n        ezsClient.close();\n    }\n\n    @Override\n    public String name() {\n        return catalogName;\n    }\n\n    @Override\n    public String getDefaultDatabase() throws CatalogException {\n        return defaultDatabase;\n    }\n","sourceCodeStart":71,"sourceCodeEnd":107,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-easysearch/src/main/java/org/apache/seatunnel/connectors/seatunnel/easysearch/catalog/EasysearchCatalog.java#L71-L107","documentation":"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.","triggerScenarios":"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.","commonSituations":"Wrong hosts/username/password in catalog options; cluster down or firewalled; HTTPS certificate not trusted; Easysearch version endpoint not reachable behind a proxy.","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."],"exampleFix":"// before\ncatalogs {\n  easysearch {\n    hosts = [\"localhost:9200\"]\n    scheme = \"https\"\n  }\n}\n// after (cluster is plain http)\ncatalogs {\n  easysearch {\n    hosts = [\"localhost:9200\"]\n    scheme = \"http\"\n  }\n}","handlingStrategy":"try-catch","validationCode":"// preflight connectivity\nHttpGet ping = new HttpGet(host + \":\" + port);\n// execute with credentials; fail fast if not 200","typeGuard":null,"tryCatchPattern":"try {\n    catalog.open();\n} catch (CatalogException e) {\n    if (e.getCause() instanceof IOException || e.getCause() instanceof RuntimeException) {\n        // inspect cause: connect refused vs 401 vs SSL\n    }\n    throw e;\n}","preventionTips":["Ping the Easysearch endpoint from the job host before submitting","Double-check scheme (http/https), hosts and credentials","Import TLS certs when using https"],"tags":["easysearch","catalog","connection"],"backgroundTag":"connection-refused","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}