prestodb/presto · error · PrestoException
UNEXPECTED_ACCUMULO_ERROR
UNEXPECTED_ACCUMULO_ERROR
Error message
Failed to get splits from Accumulo
What it means
A catch-all wrapper around getTabletSplits: any exception raised while computing tablet split ranges for a table (Accumulo client I/O, metadata lookup, range building) is rethrown as UNEXPECTED_ACCUMULO_ERROR with this message and the original cause attached. It signals an unexpected failure talking to or reading metadata from Accumulo during split planning.
Source
Thrown at presto-accumulo/src/main/java/com/facebook/presto/accumulo/AccumuloClient.java:711
LOG.debug("Fetching tablet locations: %s", fetchTabletLocations);
for (Range range : splitRanges) {
// If locality is enabled, then fetch tablet location
if (fetchTabletLocations) {
tabletSplits.add(new TabletSplitMetadata(getTabletLocation(tableName, range.getStartKey()), ImmutableList.of(range)));
}
else {
// else, just use the default location
tabletSplits.add(new TabletSplitMetadata(Optional.empty(), ImmutableList.of(range)));
}
}
// Log some fun stuff and return the tablet splits
LOG.debug("Number of splits for table %s is %d with %d ranges", tableName, tabletSplits.size(), splitRanges.size());
return tabletSplits;
}
catch (Exception e) {
throw new PrestoException(UNEXPECTED_ACCUMULO_ERROR, "Failed to get splits from Accumulo", e);
}
}
/**
* Gets the scan authorizations to use for scanning tables.
* <p>
* In order of priority: session username authorizations, then table property, then the default connector auths.
*
* @param session Current session
* @param schema Schema name
* @param table Table Name
* @return Scan authorizations
* @throws AccumuloException If a generic Accumulo error occurs
* @throws AccumuloSecurityException If a security exception occurs
*/
private Authorizations getScanAuthorizations(ConnectorSession session, String schema,
String table)
throws AccumuloException, AccumuloSecurityExceptionView on GitHub (pinned to 55bb57d202)
Solutions
- Inspect the wrapped cause in the exception stack trace to find the root error
- Verify Accumulo connectivity (zookeepers, instance name, username/password) in Accumulo connector config
- Confirm the table still exists and the user has read permissions on its metadata
- Check Accumulo server health/logs (tablet servers, Master) and retry after the cluster recovers
Example fix
// before connector.name=accumulo # zookeepers property missing -> client cannot reach the instance // after connector.name=accumulo accumulo.zookeepers=zoo1:2181,zoo2:2181 accumulo.instance=accumulo-instance accumulo.username=presto accumulo.password=****
Defensive patterns
Strategy: try-catch
Validate before calling
// Java: verify connectivity before split-planning calls
if (!client.isConnected() || !tableManager.exists(tableName)) {
throw new IllegalStateException("Accumulo unavailable or table " + tableName + " missing");
} Type guard
// Java: ensure the split result is usable before relying on it
boolean validSplits(List<ConnectorSplit> splits) {
return splits != null && !splits.isEmpty();
} Try / catch
try {
splits = client.getTabletSplits(tableName, splitRanges);
} catch (PrestoException e) {
if (e.getErrorCode().getName().equals("UNEXPECTED_ACCUMULO_ERROR")) {
LOG.error("Split planning failed", e.getCause()); // inspect root cause
// fix connectivity/permissions, then retry
} else {
throw e;
}
} Prevention
- Validate Accumulo connection settings (zookeepers, instance, credentials) before queries
- Monitor Accumulo cluster health and tablet server availability
- Ensure the querying user has read access to table and metadata tables
- Always log and inspect the cause chained to this wrapper to find the real root cause
- Add retry with backoff for transient Accumulo I/O errors during planning
When it happens
Trigger: Any Exception escaping the body of getTabletSplits while querying tablet metadata or building split ranges — e.g., Accumulo connection failures, table missing, authorization or I/O errors during range computation.
Common situations: Accumulo instance unreachable or restarted mid-query; invalid/missing ZooKeeper or instance configuration; table dropped or renamed between planning and split computation; permission/authorization errors on the metadata table.
Related errors
AI-assisted analysis of prestodb/presto@55bb57d202 (2026-09-04).
Data as JSON: /api/errors/32132ab54a44d8af.
Report an issue: GitHub.