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, AccumuloSecurityException

View on GitHub (pinned to 55bb57d202)

Solutions

  1. Inspect the wrapped cause in the exception stack trace to find the root error
  2. Verify Accumulo connectivity (zookeepers, instance name, username/password) in Accumulo connector config
  3. Confirm the table still exists and the user has read permissions on its metadata
  4. 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

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.