prestodb/presto · error · IllegalStateException
Procedures already registered for connector:
Error message
Procedures already registered for connector:
What it means
Testing-only registry guard: TestProcedureRegistry.addProcedures detected that the connector already has procedures registered. Real deployments resolve procedures per-connector transactionally; this in-memory test registry simply forbids double registration.
Source
Thrown at presto-main-base/src/main/java/com/facebook/presto/testing/TestProcedureRegistry.java:48
import static com.facebook.presto.spi.StandardErrorCode.PROCEDURE_NOT_FOUND;
import static java.util.Objects.requireNonNull;
public class TestProcedureRegistry
implements ProcedureRegistry
{
private final Map<ConnectorId, Map<SchemaTableName, BaseProcedure<?>>> connectorProcedures = new ConcurrentHashMap<>();
@Override
public void addProcedures(ConnectorId connectorId, Collection<BaseProcedure<?>> procedures)
{
requireNonNull(connectorId, "connectorId is null");
requireNonNull(procedures, "procedures is null");
Map<SchemaTableName, BaseProcedure<?>> proceduresByName = procedures.stream().collect(Collectors.toMap(
procedure -> new SchemaTableName(procedure.getSchema(), procedure.getName()),
Function.identity()));
if (connectorProcedures.putIfAbsent(connectorId, proceduresByName) != null) {
throw new IllegalStateException("Procedures already registered for connector: " + connectorId);
}
}
@Override
public void removeProcedures(ConnectorId connectorId)
{
connectorProcedures.remove(connectorId);
}
@Override
public BaseProcedure<?> resolve(ConnectorId connectorId, SchemaTableName name)
{
Map<SchemaTableName, BaseProcedure<?>> procedures = connectorProcedures.get(connectorId);
if (procedures != null) {
BaseProcedure<?> procedure = procedures.get(name);
if (procedure != null) {
return procedure;
}View on GitHub (pinned to 55bb57d202)
Solutions
- Call removeProcedures(connectorId) before re-registering in tests
- Register procedures for a connector only once per test setup
- Use a fresh TestProcedureRegistry instance per test
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at presto-main-base/src/main/java/com/facebook/presto/testing/TestProcedureRegistry.java:48 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/2e84111a20468a05.
Report an issue: GitHub.