prestodb/presto · warning · PrestoException

NOT_SUPPORTED

NOT_SUPPORTED

Error message

Accumulo does not support renaming tables to different namespaces (schemas)

What it means

The same InitializingConfigurationManager placeholder also throws SERVER_STARTING_UP from match(SelectionCriteria): while the real resource group configuration is unavailable, no selector can match, so every query submission during initialization is rejected as transient.

Source

Thrown at presto-accumulo/src/main/java/com/facebook/presto/accumulo/AccumuloClient.java:470

            if (table.isIndexed()) {
                String indexTableName = Indexer.getIndexTableName(tableName);
                if (tableManager.exists(indexTableName)) {
                    tableManager.deleteAccumuloTable(indexTableName);
                }

                String metricsTableName = Indexer.getMetricsTableName(tableName);
                if (tableManager.exists(metricsTableName)) {
                    tableManager.deleteAccumuloTable(metricsTableName);
                }
            }
        }
    }

    public void renameTable(SchemaTableName oldName, SchemaTableName newName)
    {
        if (!oldName.getSchemaName().equals(newName.getSchemaName())) {
            throw new PrestoException(NOT_SUPPORTED, "Accumulo does not support renaming tables to different namespaces (schemas)");
        }

        AccumuloTable oldTable = getTable(oldName);
        if (oldTable == null) {
            throw new TableNotFoundException(oldName);
        }

        AccumuloTable newTable = new AccumuloTable(
                oldTable.getSchema(),
                newName.getTableName(),
                oldTable.getColumns(),
                oldTable.getRowId(),
                oldTable.isExternal(),
                oldTable.getSerializerClassName(),
                oldTable.getScanAuthorizations());

        // Validate table existence
        if (!tableManager.exists(oldTable.getFullTableName())) {

View on GitHub (pinned to 55bb57d202)

Solutions

  1. Retry query submission with backoff until initialization completes.
  2. Gate submission on coordinator readiness signals rather than port availability.
  3. Prefer a fast local resource-groups configuration file if the remote source is the bottleneck.
  4. Check coordinator logs for errors in the config manager load — if it never completes, fix the underlying config loading failure.

Example fix

// before
ResourceGroupId gid = manager.match(criteria).get().getResourceGroupId();
// after
Optional<SelectionContext<Void>> m = manager.match(criteria);
if (!m.isPresent() && serverInitializing) {
    retryWithBackoff(() -> manager.match(criteria));
}
Defensive patterns

Strategy: retry

Validate before calling

// wait for configuration manager to be installed
while (!internalResourceGroupManager.isLoaded()) { // not InitializingConfigurationManager
    Thread.sleep(1000);
}

Try / catch

try {
    Optional<SelectionContext<Void>> match = manager.match(criteria);
} catch (PrestoException e) {
    if (e.getErrorCode().getName().contains("SERVER_STARTING_UP")) {
        retryWithBackoff(() -> manager.match(criteria));
    } else {
        throw e;
    }
}

Prevention

When it happens

Trigger: Query submission during coordinator startup/reload where InternalResourceGroupManager.match is invoked before the real ResourceGroupConfigurationManager is installed.

Common situations: Clients or orchestrators racing coordinator startup; failover tests hitting the coordinator the moment the port opens; heavy config backends making initialization slow enough to surface the window in normal operations.

Understand the failure class

Background: Presto NOT_SUPPORTED error: what "not supported" means and how to fix it — this error's family across 3 libraries.

Related errors


AI-assisted analysis of prestodb/presto@55bb57d202 (2026-09-04). Data as JSON: /api/errors/81f5ec2108d7f3d9. Report an issue: GitHub.