{"record":{"id":"8a19c024827cac68","repo":"prestodb/presto","slug":"unexpected-accumulo-error-8a19c0","errorCode":"UNEXPECTED_ACCUMULO_ERROR","errorMessage":"Failed to get connector to Accumulo","messagePattern":"Failed to get connector to Accumulo","errorType":"error_code","errorClass":"PrestoException","httpStatus":null,"severity":"critical","filePath":"presto-accumulo/src/main/java/com/facebook/presto/accumulo/AccumuloModule.java","lineNumber":159,"sourceCode":"        {\n            requireNonNull(config, \"config is null\");\n            this.instance = config.getInstance();\n            this.zooKeepers = config.getZooKeepers();\n            this.username = config.getUsername();\n            this.password = config.getPassword();\n        }\n\n        @Override\n        public Connector get()\n        {\n            try {\n                Instance inst = new ZooKeeperInstance(instance, zooKeepers);\n                Connector connector = inst.getConnector(username, new PasswordToken(password.getBytes(UTF_8)));\n                LOG.info(\"Connection to instance %s at %s established, user %s\", instance, zooKeepers, username);\n                return connector;\n            }\n            catch (AccumuloException | AccumuloSecurityException e) {\n                throw new PrestoException(UNEXPECTED_ACCUMULO_ERROR, \"Failed to get connector to Accumulo\", e);\n            }\n        }\n    }\n}\n","sourceCodeStart":141,"sourceCodeEnd":164,"githubUrl":"https://github.com/prestodb/presto/blob/55bb57d202de3b926896fa966c2c4a44c779634e/presto-accumulo/src/main/java/com/facebook/presto/accumulo/AccumuloModule.java#L141-L164","documentation":"AccumuloModule's provider builds a ZooKeeperInstance and requests a Connector using configured instance name, ZooKeepers, username, and password. Any AccumuloException or AccumuloSecurityException during this is wrapped as UNEXPECTED_ACCUMULO_ERROR 'Failed to get connector to Accumulo', meaning the client could not authenticate or reach the instance.","triggerScenarios":"Calling the Supplier.get() that establishes the connector when the Accumulo instance name is wrong, ZooKeepers are unreachable, credentials are invalid, or Accumulo throws a security exception during getConnector.","commonSituations":"Misconfigured accumulo.instance/zookeepers/username/password in catalog properties; ZooKeeper quorum down or firewalled; Accumulo user password changed; instance name typo after cluster migration.","solutions":["Verify catalog properties (instance, zookeepers, username, password) match the Accumulo cluster exactly.","Test connectivity to ZooKeeper (nc/zkCli to zookeeper:2181) and confirm the instance name via 'accumulo info' or the monitor.","Validate credentials with the Accumulo shell using the same username/password; reset the password if changed.","Check Accumulo monitor/server logs for authentication or availability errors during the attempt."],"exampleFix":"// before (catalog properties)\naccumulo.instance=old-prod-instance\n// after\naccumulo.instance=prod-instance\naccumulo.zookeepers=zk1:2181,zk2:2181,zk3:2181\naccumulo.username=presto\naccumulo.password=<correct-password>","handlingStrategy":"validation","validationCode":"// Pre-flight check of config and connectivity before obtaining the connector:\nProperties p = loadCatalogProperties(\"accumulo.properties\");\nassertPresent(p, \"accumulo.instance\", \"accumulo.zookeepers\", \"accumulo.username\", \"accumulo.password\");\ntry (Socket s = new Socket()) {\n  s.connect(new InetSocketAddress(zkHost, 2181), 3000); // ZooKeeper reachable\n}","typeGuard":null,"tryCatchPattern":"try {\n  Connector c = connectorSupplier.get();\n} catch (PrestoException e) {\n  if (e.getErrorCode().getName().equals(\"UNEXPECTED_ACCUMULO_ERROR\")) {\n    // verify instance name, ZooKeeper reachability, and credentials, then retry\n  }\n  throw e;\n}","preventionTips":["Validate catalog properties against 'accumulo info' output before deploying.","Monitor ZooKeeper quorum health and alert on connectivity loss.","Rotate Accumulo user passwords in coordination with catalog config updates.","Smoke-test the connection at startup with a lightweight operation (e.g. tableOperations().list())."],"tags":["accumulo","connection","authentication","zookeeper","configuration"],"backgroundTag":"connection-refused","analyzedSha":"55bb57d202de3b926896fa966c2c4a44c779634e","analyzedAt":"2026-09-04T12:50:26.162Z","contentChangedAt":"2026-09-04T12:50:26.162Z","schemaVersion":2},"datasetVersion":"2026-09-11T21:17:09.523Z"}