{"record":{"id":"932a292276c8e806","repo":"quarkusio/quarkus","slug":"the-following-registries-were-configured-as-exclus","errorCode":null,"errorMessage":"The following registries were configured as exclusive providers of the ${bomCoords} platform: ${conflictingRegistryIds}","messagePattern":"The following registries were configured as exclusive providers of the (.+?) platform: (.+?)","errorType":"exception","errorClass":"RegistryResolutionException","httpStatus":null,"severity":"error","filePath":"independent-projects/tools/registry-client/src/main/java/io/quarkus/registry/ExtensionCatalogResolver.java","lineNumber":676,"sourceCode":"        final Set<ArtifactCoords> addedPlatformBoms = new HashSet<>();\n        String quarkusVersion = null;\n        for (ArtifactCoords bom : preferredPlatforms) {\n            if (!addedPlatformBoms.add(bom)) {\n                continue;\n            }\n            if (registries == null || registries.isEmpty()) {\n                try {\n                    registries = filterRegistries(r -> r.checkPlatform(bom));\n                } catch (ExclusiveProviderConflictException e) {\n                    final StringBuilder buf = new StringBuilder();\n                    buf.append(\n                            \"The following registries were configured as exclusive providers of the \");\n                    buf.append(PlatformArtifacts.ensureBomArtifact(bom).toCompactCoords());\n                    buf.append(\" platform: \").append(e.conflictingRegistries.get(0).getId());\n                    for (int i = 1; i < e.conflictingRegistries.size(); ++i) {\n                        buf.append(\", \").append(e.conflictingRegistries.get(i).getId());\n                    }\n                    throw new RegistryResolutionException(buf.toString());\n                }\n\n                if (registries.isEmpty()) {\n                    log.warn(\"None of the configured registries recognizes platform \" + bom.toCompactCoords());\n                    continue;\n                }\n            }\n\n            ExtensionCatalog.Mutable catalog = null;\n            RegistryExtensionResolver registry = null;\n            int registryPreferenceIndex = 0;\n            for (int i = 0; i < registries.size(); ++i) {\n                registry = registries.get(i);\n                try {\n                    catalog = registry.resolvePlatformExtensions(bom);\n                    registryPreferenceIndex = catalogBuilder.getRegistryPreferenceIndex(registry.getId());\n                    break;\n                } catch (RegistryResolutionException e) {","sourceCodeStart":658,"sourceCodeEnd":694,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/tools/registry-client/src/main/java/io/quarkus/registry/ExtensionCatalogResolver.java#L658-L694","documentation":"A RegistryResolutionException thrown during resolver initialization when two or more registries are each configured as the exclusive provider of the same platform BOM. Exclusive-provider conflicts are detected per BOM and reported with the ids of all conflicting registries.","triggerScenarios":"ExtensionCatalogResolver constructor (config processing) resolves each configured platform BOM via its registries; a ConflictingProviderException carrying conflictingRegistries is caught and rethrown as this message using PlatformArtifacts.ensureBomArtifact(bom).toCompactCoords().","commonSituations":"settings.xml or registry client config marking two different registries with exclusive=true for the same io.quarkus.platform BOM; mixing corporate and community registries both claiming exclusive ownership of the same platform.","solutions":["Mark exclusive=true for only one registry per platform BOM; remove the exclusive flag from the duplicate","Remove one of the conflicting registries from the configuration for that platform","Split the platforms so each registry exclusively provides a distinct BOM"],"exampleFix":"// before: both registries exclusive for the same BOM\n<quarkus-registry><url>https://registry.quarkus.io</url><exclusive>true</exclusive></quarkus-registry>\n<quarkus-registry><url>https://registry.quarkus.redhat.com</url><exclusive>true</exclusive></quarkus-registry>\n// after\n<quarkus-registry><url>https://registry.quarkus.io</url></quarkus-registry>\n<quarkus-registry><url>https://registry.quarkus.redhat.com</url><exclusive>true</exclusive></quarkus-registry>","handlingStrategy":"validation","validationCode":"// Ensure at most one exclusive registry per platform BOM in config\nMap<String, Long> counts = registries.stream()\n  .filter(r -> r.isExclusive())\n  .flatMap(r -> r.getExclusivePlatforms().stream())\n  .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));\nif (counts.values().stream().anyMatch(c -> c > 1)) throw new IllegalStateException(\"Duplicate exclusive platform\");","typeGuard":null,"tryCatchPattern":"try { resolver.resolveExtensionCatalog(); } catch (RegistryResolutionException e) { if (e.getMessage().contains(\"exclusive providers\")) { /* fix registry config */ } throw e; }","preventionTips":["Audit settings.xml for duplicate exclusive=true flags","Assign each platform BOM exactly one owning registry","Review shared corporate registry configs before merging","Keep community and internal registries on distinct platforms"],"tags":["configuration","registry-client","platform-bom"],"backgroundTag":"conflicting-registry-exclusive-provider","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"}