{"record":{"id":"523b5c5517bafbc1","repo":"prestodb/presto","slug":"query-prerequisites-s-is-already-registered","errorCode":null,"errorMessage":"Query Prerequisites '%s' is already registered","messagePattern":"Query Prerequisites '(.+?)' is already registered","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"presto-main-base/src/main/java/com/facebook/presto/dispatcher/QueryPrerequisitesManager.java","lineNumber":55,"sourceCode":"import static java.util.Objects.requireNonNull;\n\npublic class QueryPrerequisitesManager\n        implements QueryPrerequisites\n{\n    private static final Logger log = Logger.get(QueryPrerequisitesManager.class);\n\n    private static final Path QUERY_PREREQUISITES_CONFIG = Paths.get(\"etc/query-prerequisites.properties\");\n    private static final String QUERY_PREREQUISITES_PROPERTY_NAME = \"query-prerequisites.factory\";\n    private final Map<String, QueryPrerequisitesFactory> queryPrerequisitesFactories = new ConcurrentHashMap<>();\n    private final QueryPrerequisites defaultQueryPrerequisites = new DefaultQueryPrerequisites();\n    private final AtomicReference<QueryPrerequisites> queryPrerequisites = new AtomicReference<>(defaultQueryPrerequisites);\n\n    public void addQueryPrerequisitesFactory(QueryPrerequisitesFactory queryPrerequisitesFactory)\n    {\n        requireNonNull(queryPrerequisitesFactory, \"queryPrerequisitesFactory is null\");\n\n        if (queryPrerequisitesFactories.putIfAbsent(queryPrerequisitesFactory.getName(), queryPrerequisitesFactory) != null) {\n            throw new IllegalArgumentException(format(\"Query Prerequisites '%s' is already registered\", queryPrerequisitesFactory.getName()));\n        }\n    }\n\n    public void loadQueryPrerequisites()\n            throws Exception\n    {\n        if (Files.exists(QUERY_PREREQUISITES_CONFIG)) {\n            Map<String, String> properties = new HashMap<>(loadProperties(QUERY_PREREQUISITES_CONFIG.toFile()));\n\n            String factoryName = properties.remove(QUERY_PREREQUISITES_PROPERTY_NAME);\n            checkArgument(!isNullOrEmpty(factoryName),\n                    \"Query Prerequisites configuration %s does not contain %s\", QUERY_PREREQUISITES_CONFIG.toAbsolutePath().toFile(), QUERY_PREREQUISITES_PROPERTY_NAME);\n\n            log.info(\"-- Loading query prerequisites factory --\");\n\n            QueryPrerequisitesFactory queryPrerequisitesFactory = queryPrerequisitesFactories.get(factoryName);\n            checkState(queryPrerequisitesFactory != null, \"Query prerequisites factory %s is not registered\", factoryName);\n","sourceCodeStart":37,"sourceCodeEnd":73,"githubUrl":"https://github.com/prestodb/presto/blob/55bb57d202de3b926896fa966c2c4a44c779634e/presto-main-base/src/main/java/com/facebook/presto/dispatcher/QueryPrerequisitesManager.java#L37-L73","documentation":"QueryPrerequisitesManager.addQueryPrerequisitesFactory was handed a factory whose name is already registered; prerequisites factories must be uniquely named and the duplicate registration is rejected.","triggerScenarios":"Thrown at presto-main-base/src/main/java/com/facebook/presto/dispatcher/QueryPrerequisitesManager.java:55 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use a unique factory name","Remove the duplicated plugin providing the same prerequisites factory"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"55bb57d202de3b926896fa966c2c4a44c779634e","analyzedAt":"2026-09-04T12:50:26.162Z","contentChangedAt":"2026-09-04T12:50:26.162Z","schemaVersion":2},"datasetVersion":"2026-09-11T21:17:09.523Z"}