quarkusio/quarkus · error · RegistryResolutionException

Failed to resolve extension catalog of ${platformCoords} [fr

Error message

Failed to resolve extension catalog of ${platformCoords} [from Maven repository ${repoId} (${repoUrl}) [which is a mirror of ... . The mirror may be out of sync.]]

What it means

MavenPlatformExtensionsResolver resolves a platform member BOM's extension catalog from Maven. When the underlying Maven resolution fails, it builds a RegistryResolutionException listing the platform coordinates, the repository it was fetched from, and any mirrors of that repository, adding 'The mirror may be out of sync.' to hint at mirror staleness. A related error is thrown if the downloaded JSON cannot be parsed.

Source

Thrown at independent-projects/tools/registry-client/src/main/java/io/quarkus/registry/client/maven/MavenPlatformExtensionsResolver.java:76

                t = t.getCause();
            }
            final StringBuilder buf = new StringBuilder();
            buf.append("Failed to resolve extension catalog of ")
                    .append(PlatformArtifacts.ensureBomArtifact(platformCoords).toCompactCoords());
            if (repo != null) {
                buf.append(" from Maven repository ").append(repo.getId()).append(" (").append(repo.getUrl()).append(")");
                final List<RemoteRepository> mirrored = repo.getMirroredRepositories();
                if (!mirrored.isEmpty()) {
                    buf.append(" which is a mirror of ");
                    buf.append(mirrored.get(0).getId()).append(" (").append(mirrored.get(0).getUrl()).append(")");
                    for (int i = 1; i < mirrored.size(); ++i) {
                        buf.append(", ").append(mirrored.get(i).getId()).append(" (").append(mirrored.get(i).getUrl())
                                .append(")");
                    }
                    buf.append(". The mirror may be out of sync.");
                }
            }
            throw new RegistryResolutionException(buf.toString(), e);
        }
        try {
            return ExtensionCatalog.mutableFromFile(jsonPath);
        } catch (IOException e) {
            throw new RegistryResolutionException("Failed to parse Quarkus extension catalog " + jsonPath, e);
        }
    }

    private String resolveLatestBomVersion(ArtifactCoords bom, String versionRange)
            throws RegistryResolutionException {
        final Artifact bomArtifact = new DefaultArtifact(bom.getGroupId(),
                PlatformArtifacts.ensureBomArtifactId(bom.getArtifactId()),
                "", "pom", bom.getVersion());
        log.debug("Resolving the latest version of %s:%s:%s:%s in the range %s", bom.getGroupId(), bom.getArtifactId(),
                bom.getClassifier(), bom.getType(), versionRange);
        try {
            return artifactResolver.getLatestVersionFromRange(bomArtifact, versionRange);
        } catch (Exception e) {

View on GitHub (pinned to e1c734241f)

Solutions

  1. Check the mirror URL in the message and sync it with the upstream repository (or force it to proxy on demand).
  2. Verify the platform BOM coordinates exist at the repository URL shown (curl/404 check).
  3. Fix settings.xml mirrorOf/repository configuration so the artifact can be fetched from the authoritative repo.
  4. If the artifact did download but fails parsing, inspect jsonPath and clear the local cache; the companion message 'Failed to parse Quarkus extension catalog' covers that path.
  5. Retry after the mirror catches up (new releases take time to propagate).

Example fix

// before (settings.xml)
<mirror>
  <id>corp</id><mirrorOf>external:*</mirrorOf>
  <url>https://nexus.corp/maven-public</url> <!-- stale, missing new platform BOM -->
</mirror>
// after
<!-- sync nexus.corp with upstream registry.maven.quarkus.io, or -->
<mirror>
  <id>corp</id><mirrorOf>*,!quarkus-registry</mirrorOf>
  <url>https://nexus.corp/maven-public</url>
</mirror>
Defensive patterns

Strategy: retry

Validate before calling

// Before resolving, check the artifact is reachable at the repo/mirror:
// curl -fsSI <repoUrl>/<platformCoords path>.json  -> expect 200

Try / catch

// Java
try {
    catalog = resolver.resolvePlatformExtensions(bomCoords);
} catch (RegistryResolutionException e) {
    if (e.getMessage().contains("The mirror may be out of sync")) {
        // wait/sync mirror, or route around it, then retry once
        catalog = resolver.resolvePlatformExtensions(bomCoords);
    } else throw e;
}

Prevention

When it happens

Trigger: resolvePlatformExtensions(bom) while Maven cannot download the platform BOM's catalog artifact from the repository or its mirrors — 404 because the mirror lacks the artifact, unreachable repo, or metadata mismatch between the primary repo and its mirror.

Common situations: Corporate Nexus/Artifactory mirror that has not yet proxied/cached the new Quarkus platform release; platform BOM published to a repo whose mirror is behind; wrong mirrorOf configuration in settings.xml; offline builds.

Related errors


AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05). Data as JSON: /api/errors/edaac8e05a9c1792. Report an issue: GitHub.