{"record":{"id":"d6678b3eccd63e7d","repo":"quarkusio/quarkus","slug":"extension-catalog-bomcoords-could-not-be-resolv","errorCode":null,"errorMessage":"Extension catalog ${bomCoords} could not be resolved from ${registryIds}","messagePattern":"Extension catalog (.+?) could not be resolved from (.+?)","errorType":"exception","errorClass":"RegistryResolutionException","httpStatus":null,"severity":"error","filePath":"independent-projects/tools/registry-client/src/main/java/io/quarkus/registry/ExtensionCatalogResolver.java","lineNumber":781,"sourceCode":"            addOriginPreference(catalog, originPreference);\n            catalogBuilder.addCatalog(catalog);\n        }\n\n        if (quarkusVersion == null) {\n            if (catalogBuilder.catalogs.isEmpty()) {\n                final StringBuilder buf = new StringBuilder();\n                final Iterator<ArtifactCoords> boms = preferredPlatforms.iterator();\n                buf.append(PlatformArtifacts.ensureBomArtifact(boms.next()).toCompactCoords());\n                while (boms.hasNext()) {\n                    buf.append(\", \").append(PlatformArtifacts.ensureBomArtifact(boms.next()).toCompactCoords());\n                }\n                buf.append(\" could not be resolved from \");\n                RegistryExtensionResolver registry = registries.get(0);\n                buf.append(registry.getId());\n                for (int i = 1; i < registries.size(); ++i) {\n                    buf.append(\", \").append(registries.get(i).getId());\n                }\n                throw new RegistryResolutionException(buf.toString());\n            }\n        }\n        catalogBuilder.addUpstreamExtensionCatalogs(quarkusVersion, preferredPlatformKeys);\n    }\n\n    public void clearRegistryCache() throws RegistryResolutionException {\n        for (RegistryExtensionResolver registry : registries) {\n            registry.clearCache();\n        }\n    }\n\n    private void ensureRegistriesConfigured() throws RegistryResolutionException {\n        final int registriesTotal = registries.size();\n        if (registriesTotal == 0) {\n            throw new RegistryResolutionException(\"No registries configured\");\n        }\n    }\n","sourceCodeStart":763,"sourceCodeEnd":799,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/tools/registry-client/src/main/java/io/quarkus/registry/ExtensionCatalogResolver.java#L763-L799","documentation":"ExtensionCatalogResolver failed to assemble a full extension catalog: none of the configured registries could resolve the preferred platform BOM coordinates for the requested (null/unspecified) Quarkus version, and no other catalog could be obtained. The resolver aggregates catalogs from Quarkus registries; when every registry comes back empty and quarkusVersion is null, it reports the BOM coords plus all consulted registry IDs. This is a resolution failure, not a parsing failure.","triggerScenarios":"Calling resolveExtensionCatalog() (or similar) with quarkusVersion==null while every configured RegistryExtensionResolver returns null/empty for the preferred platform BOMs (e.g. io.quarkus.platform:quarkus-bom) — typically unreachable registries, wrong registry URLs, or a BOM version not published on any configured registry.","commonSituations":"Corporate proxy/firewall blocking registry.quarkus.io; typos or stale entries in .quarkus/config.yaml registry list; querying a Quarkus version that a private/internal registry does not host; offline builds with no local Maven cache of the BOM.","solutions":["Check network connectivity to the registry endpoints listed in the message (e.g. curl the registry URL).","Verify registry configuration in .quarkus/config.yaml (or RegistryConfig) points to valid registryquarkus URLs.","Run with -Dquarkus-registry=debug or enable logging to see per-registry resolution failures (HTTP 404/timeout).","Add a registry that hosts the requested BOM, or pin quarkusVersion to one that is available.","Run mvn -U / clearRegistryCache() to purge stale cached registry data and retry."],"exampleFix":"// before\nresolver.resolveExtensionCatalog(null, boms);\n// after\nresolver.resolveExtensionCatalog(\"3.2.5.Final\", boms); // pin a version actually hosted by the configured registries","handlingStrategy":"retry","validationCode":"// Java\nif (resolver.getRegistries().isEmpty()) {\n    throw new IllegalStateException(\"Configure at least one registry before resolving\");\n}\n// verify network to each registry endpoint\nfor (var r : resolver.getRegistries()) {\n    System.out.println(\"registry: \" + r.getId());\n}","typeGuard":null,"tryCatchPattern":"// Java\ntry {\n    catalog = resolver.resolveExtensionCatalog(quarkusVersion, preferredPlatforms);\n} catch (RegistryResolutionException e) {\n    resolver.clearRegistryCache();\n    catalog = resolver.resolveExtensionCatalog(quarkusVersion, preferredPlatforms); // retry once\n}","preventionTips":["Pin an explicit quarkusVersion that is known to be hosted by your registries.","Validate registry connectivity (curl the registry URL) before resolution in CI.","Keep .quarkus/config.yaml registry list minimal and correct.","Run clearRegistryCache() when switching networks (VPN/offline)."],"tags":["registry","maven","network","resolution"],"backgroundTag":"registry-catalog-resolution-failed","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}