prestodb/presto · error · PrestoException

GENERIC_INTERNAL_ERROR

GENERIC_INTERNAL_ERROR

Error message

Query %s already registered

What it means

SqlQueryManager.createQuery attempted to register a QueryExecution whose query ID is already present in the query tracker. Registration is refused to avoid two executions sharing one ID; this indicates duplicate submission of the same query id and is treated as an internal error.

Source

Thrown at presto-main/src/main/java/com/facebook/presto/execution/SqlQueryManager.java:309

    public QueryState getQueryState(QueryId queryId)
    {
        return queryTracker.getQuery(queryId).getState();
    }

    @Override
    public void recordHeartbeat(QueryId queryId)
    {
        queryTracker.tryGetQuery(queryId)
                .ifPresent(QueryExecution::recordHeartbeat);
    }

    @Override
    public void createQuery(QueryExecution queryExecution)
    {
        requireNonNull(queryExecution, "queryExecution is null");

        if (!queryTracker.addQuery(queryExecution)) {
            throw new PrestoException(GENERIC_INTERNAL_ERROR, format("Query %s already registered", queryExecution.getQueryId()));
        }

        queryExecution.addFinalQueryInfoListener(finalQueryInfo -> {
            try {
                queryMonitor.queryCompletedEvent(finalQueryInfo);
            }
            finally {
                // execution MUST be added to the expiration queue or there will be a leak
                queryTracker.expireQuery(queryExecution.getQueryId());
            }
        });

        stats.trackQueryStats(queryExecution);
        // TODO(pranjalssh): Support plan statistics tracking for other query managers
        historyBasedPlanStatisticsTracker.updateStatistics(queryExecution);

        embedVersion.embedVersion(queryExecution::start).run();
    }

View on GitHub (pinned to 55bb57d202)

Solutions

  1. Check for retry logic or concurrent callers reusing a generated QueryId
  2. Report as an internal coordinator bug if reproducible
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at presto-main/src/main/java/com/facebook/presto/execution/SqlQueryManager.java:309 when the library encounters an invalid state.

Common situations: See trigger scenarios.


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