quarkusio/quarkus · error · RuntimeException
The following registries were configured as exclusive provid
Error message
The following registries were configured as exclusive providers of extensions based on Quarkus version ${quarkusCoreVersion}: ${conflictingRegistryIds} What it means
When resolving which registries serve a given Quarkus core version, more than one registry declared itself an exclusive provider for that version. Exclusive-provider contracts cannot both hold, so the resolver throws a RuntimeException listing all conflicting registry IDs. It signals a registry configuration/metadata inconsistency, not a network problem.
Source
Thrown at independent-projects/tools/registry-client/src/main/java/io/quarkus/registry/ExtensionCatalogResolver.java:894
catalogBuilder.addUpstreamQuarkusVersion(upstreamQuarkusVersion);
}
}
}
}
private List<RegistryExtensionResolver> getRegistriesForQuarkusVersion(String quarkusCoreVersion) {
try {
return filterRegistries(r -> r.checkQuarkusVersion(quarkusCoreVersion));
} catch (ExclusiveProviderConflictException e) {
final StringBuilder buf = new StringBuilder();
buf.append(
"The following registries were configured as exclusive providers of extensions based on Quarkus version ");
buf.append(quarkusCoreVersion);
buf.append(": ").append(e.conflictingRegistries.get(0).getId());
for (int i = 1; i < e.conflictingRegistries.size(); ++i) {
buf.append(", ").append(e.conflictingRegistries.get(i).getId());
}
throw new RuntimeException(buf.toString());
}
}
private List<RegistryExtensionResolver> filterRegistries(Function<RegistryExtensionResolver, Integer> recognizer)
throws ExclusiveProviderConflictException {
RegistryExtensionResolver exclusiveProvider = null;
List<RegistryExtensionResolver> filtered = null;
List<RegistryExtensionResolver> conflicts = null;
for (int i = 0; i < registries.size(); ++i) {
final RegistryExtensionResolver registry = registries.get(i);
final int versionCheck = recognizer.apply(registry);
if (versionCheck == RegistryExtensionResolver.VERSION_NOT_RECOGNIZED) {
if (exclusiveProvider == null && filtered == null) {
filtered = new ArrayList<>(registries.size() - 1);
for (int j = 0; j < i; ++j) {
filtered.add(registries.get(j));
}View on GitHub (pinned to e1c734241f)
Solutions
- Fix the registry configuration so only one registry is marked exclusive for the given Quarkus version.
- Contact/fix the operator of the offending registry to correct its quarkus-versions exclusivity metadata.
- Remove one of the conflicting registries from .quarkus/config.yaml.
- Use a quarkusCoreVersion for which only one configured registry is exclusive.
Example fix
// before (.quarkus/config.yaml) registries: - registry.quarkus.io - registry.acme.corp # also declares exclusive for 3.2.x // after registries: - registry.acme.corp # keep only the exclusive provider - registry.quarkus.io # or remove the exclusivity claim on the registry side
Defensive patterns
Strategy: try-catch
Validate before calling
// Prefer fixing configuration; before resolving, ensure only one registry claims exclusivity per Quarkus version in your registry descriptors/config.
Try / catch
// Java
try {
registries = resolver.resolveExtensionCatalog(coreVersion, platforms);
} catch (RuntimeException e) {
if (e.getMessage().startsWith("The following registries were configured as exclusive providers")) {
// remove one of the conflicting registries from config and retry once
}
throw e;
} Prevention
- Never enable the exclusive-provider flag on a mirror/corporate registry alongside registry.quarkus.io for the same version line.
- Keep per-version exclusivity documented in your registry operations runbook.
- Pin one registry per Quarkus version in .quarkus/config.yaml.
- Validate registry metadata before publishing exclusivity changes.
When it happens
Trigger: getRegistriesForQuarkusVersion() -> filterRegistries() raises ExclusiveProviderConflictException because two configured registries' version catalogs both mark themselves exclusive for the same quarkusCoreVersion; happens during resolveExtensionCatalog() with registries whose quarkus-versions descriptors overlap exclusivity.
Common situations: Misconfigured private registry mirroring Quarkus while keeping the exclusive flag; a registry published with bad/overlapping exclusivity metadata; mixing registry.quarkus.io with a corporate registry that both claim exclusivity for the same version line.
Related errors
- Malformed URL: + url
- Couldn't resolve the Quarkus platform catalog since none of
- Unable to find the TLS configuration for name ${name}.
- CORS cannot be configured both programmatically and in the '
- Failed to translate ${provider} to URL
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/797801cd15075153.
Report an issue: GitHub.