prestodb/presto · error · IllegalArgumentException
Query Prerequisites '%s' is already registered
Error message
Query Prerequisites '%s' is already registered
What it means
QueryPrerequisitesManager.addQueryPrerequisitesFactory was handed a factory whose name is already registered; prerequisites factories must be uniquely named and the duplicate registration is rejected.
Source
Thrown at presto-main-base/src/main/java/com/facebook/presto/dispatcher/QueryPrerequisitesManager.java:55
import static java.util.Objects.requireNonNull;
public class QueryPrerequisitesManager
implements QueryPrerequisites
{
private static final Logger log = Logger.get(QueryPrerequisitesManager.class);
private static final Path QUERY_PREREQUISITES_CONFIG = Paths.get("etc/query-prerequisites.properties");
private static final String QUERY_PREREQUISITES_PROPERTY_NAME = "query-prerequisites.factory";
private final Map<String, QueryPrerequisitesFactory> queryPrerequisitesFactories = new ConcurrentHashMap<>();
private final QueryPrerequisites defaultQueryPrerequisites = new DefaultQueryPrerequisites();
private final AtomicReference<QueryPrerequisites> queryPrerequisites = new AtomicReference<>(defaultQueryPrerequisites);
public void addQueryPrerequisitesFactory(QueryPrerequisitesFactory queryPrerequisitesFactory)
{
requireNonNull(queryPrerequisitesFactory, "queryPrerequisitesFactory is null");
if (queryPrerequisitesFactories.putIfAbsent(queryPrerequisitesFactory.getName(), queryPrerequisitesFactory) != null) {
throw new IllegalArgumentException(format("Query Prerequisites '%s' is already registered", queryPrerequisitesFactory.getName()));
}
}
public void loadQueryPrerequisites()
throws Exception
{
if (Files.exists(QUERY_PREREQUISITES_CONFIG)) {
Map<String, String> properties = new HashMap<>(loadProperties(QUERY_PREREQUISITES_CONFIG.toFile()));
String factoryName = properties.remove(QUERY_PREREQUISITES_PROPERTY_NAME);
checkArgument(!isNullOrEmpty(factoryName),
"Query Prerequisites configuration %s does not contain %s", QUERY_PREREQUISITES_CONFIG.toAbsolutePath().toFile(), QUERY_PREREQUISITES_PROPERTY_NAME);
log.info("-- Loading query prerequisites factory --");
QueryPrerequisitesFactory queryPrerequisitesFactory = queryPrerequisitesFactories.get(factoryName);
checkState(queryPrerequisitesFactory != null, "Query prerequisites factory %s is not registered", factoryName);
View on GitHub (pinned to 55bb57d202)
Solutions
- Use a unique factory name
- Remove the duplicated plugin providing the same prerequisites factory
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at presto-main-base/src/main/java/com/facebook/presto/dispatcher/QueryPrerequisitesManager.java:55 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/523b5c5517bafbc1.
Report an issue: GitHub.