Add reachability-metadata-schema cross-validation#840
Merged
Conversation
jormundur00
commented
Mar 2, 2026
jormundur00
left a comment
Member
Author
There was a problem hiding this comment.
Offline pair-review results.
vjovanov
reviewed
Mar 2, 2026
| } | ||
| try { | ||
| String content = Files.readString(schemaFile); | ||
| Matcher vm = Pattern.compile("\"version\"\\s*:\\s*\"(\\d+)\\.(\\d+)\\.(\\d+)\"").matcher(content); |
Member
There was a problem hiding this comment.
Pattern.compile("") should be a constant, it's a common pattern to execute this only once as it is an expensive operation.
vjovanov
reviewed
Mar 2, 2026
| // Since both the metadata repository and the graal installation don't provide a schema, | ||
| // we skip validation. | ||
| } else if (schemaExistsInMetadataRepo && !schemaExistsInGraal) { | ||
| String message = "The configured GraalVM reachability metadata repository at " |
Member
There was a problem hiding this comment.
It would be great to try this PR out on a practical example and report on how error messages look like in the PR description.
Member
Author
There was a problem hiding this comment.
I've left parts of the outputs for the 3 major cases of this validation in the PR description. Take note that smart IDEs (such as IntelliJ Idea) automatically "multi-line" these outputs.
e0de8d5 to
e3606f4
Compare
e3606f4 to
cbe2ad3
Compare
vjovanov
approved these changes
Mar 4, 2026
jormundur00
added a commit
that referenced
this pull request
Mar 16, 2026
jormundur00
added a commit
that referenced
this pull request
Mar 17, 2026
jormundur00
added a commit
that referenced
this pull request
Mar 18, 2026
* Remove the usage of the global metadata/index.json from the nbt plugins (#837) * Add reachability-metadata-schema cross-validation (#840) * Move to 1.0-M1-SNAPSHOT * Fix broken ReachabilityMetadataFunctionalTest so that it works with the new metadata format * Disable LayeredApplicationFunctionalTest * Move to using actual 1.0-M1 release of reachability metadata
mergify Bot
added a commit
to robfrank/linklift
that referenced
this pull request
May 3, 2026
…1.5 to 1.1.0 [skip ci] Bumps [org.graalvm.buildtools:native-maven-plugin](https://github.com/graalvm/native-build-tools) from 0.11.5 to 1.1.0. Release notes *Sourced from [org.graalvm.buildtools:native-maven-plugin's releases](https://github.com/graalvm/native-build-tools/releases).* > 1.1.0 > ----- > > What's Changed > -------------- > > * Release 1.0.0 by [`@graalvmbot`](https://github.com/graalvmbot) in [graalvm/native-build-tools#857](https://redirect.github.com/graalvm/native-build-tools/pull/857) > * Bump version to 1.0.1-SNAPSHOT by [`@graalvmbot`](https://github.com/graalvmbot) in [graalvm/native-build-tools#858](https://redirect.github.com/graalvm/native-build-tools/pull/858) > * Use a safer way to create the temporary access filter file by [`@sschuberth`](https://github.com/sschuberth) in [graalvm/native-build-tools#852](https://redirect.github.com/graalvm/native-build-tools/pull/852) > * Bump io.netty:netty-codec-http from 4.1.129.Final to 4.1.132.Final in /samples/metadata-repo-integration by [`@dependabot`](https://github.com/dependabot)[bot] in [graalvm/native-build-tools#859](https://redirect.github.com/graalvm/native-build-tools/pull/859) > * Add class introduced in 5.14.1/6.0.1 by [`@marcphilipp`](https://github.com/marcphilipp) in [graalvm/native-build-tools#794](https://redirect.github.com/graalvm/native-build-tools/pull/794) > * Reduce CI usage by running CI only on "pull\_request" and running only the latest gradle version (except when creating a new release) by [`@jormundur00`](https://github.com/jormundur00) in [graalvm/native-build-tools#861](https://redirect.github.com/graalvm/native-build-tools/pull/861) > * Update latest docs symlink and improve 1.0.0 release notes by [`@jormundur00`](https://github.com/jormundur00) in [graalvm/native-build-tools#866](https://redirect.github.com/graalvm/native-build-tools/pull/866) > * Fix early classpath resolution in GenerateDynamicAccessMetadata by [`@jormundur00`](https://github.com/jormundur00) in [graalvm/native-build-tools#868](https://redirect.github.com/graalvm/native-build-tools/pull/868) > * Bump reachability metadata version to 1.0.0 by [`@jormundur00`](https://github.com/jormundur00) in [graalvm/native-build-tools#879](https://redirect.github.com/graalvm/native-build-tools/pull/879) > * Add listLibrariesMissingMetadata task/goal for Gradle and Maven by [`@jormundur00`](https://github.com/jormundur00) in [graalvm/native-build-tools#877](https://redirect.github.com/graalvm/native-build-tools/pull/877) > > **Full Changelog**: <graalvm/native-build-tools@1.0.0...1.1.0> > > 1.0.0 > ----- > > Breaking Changes > ---------------- > > * Native Build Tools 1.0.0 moves to the `1.0-M1` release of the reachability metadata repository, which uses the new `reachability-metadata.json` metadata format and no longer uses the global `metadata/index.json`. > * This may require dependency and metadata updates in downstream projects; some stacks can regress until they adapt. > > What's Changed > -------------- > > * Fix broken JavaApplicationFunctionalTest due to using a removed feature by [`@jormundur00`](https://github.com/jormundur00) in [graalvm/native-build-tools#850](https://redirect.github.com/graalvm/native-build-tools/pull/850) > * Remove the usage of the global metadata/index.json from the nbt plugins by [`@jormundur00`](https://github.com/jormundur00) in [graalvm/native-build-tools#829](https://redirect.github.com/graalvm/native-build-tools/pull/829) > * Add reachability-metadata-schema cross-validation by [`@jormundur00`](https://github.com/jormundur00) in [graalvm/native-build-tools#840](https://redirect.github.com/graalvm/native-build-tools/pull/840) > * Merge 1.0-M1 branch to master by [`@jormundur00`](https://github.com/jormundur00) in [graalvm/native-build-tools#848](https://redirect.github.com/graalvm/native-build-tools/pull/848) > > **Full Changelog**: <graalvm/native-build-tools@0.11.5...1.0.0> Commits * [`84cc046`](graalvm/native-build-tools@84cc046) Release 1.1.0 * [`95512d0`](graalvm/native-build-tools@95512d0) Add listLibrariesMissingMetadata task/goal for Gradle and Maven ([#877](https://redirect.github.com/graalvm/native-build-tools/issues/877)) * [`0dcda78`](graalvm/native-build-tools@0dcda78) Merge pull request [#879](https://redirect.github.com/graalvm/native-build-tools/issues/879) from jormundur00/bump-metadata-repository-1.0.0 * [`e5b90f0`](graalvm/native-build-tools@e5b90f0) Bump reachability metadata version to 1.0.0 * [`05f45d3`](graalvm/native-build-tools@05f45d3) Fix early classpath resolution in GenerateDynamicAccessMetadata ([#868](https://redirect.github.com/graalvm/native-build-tools/issues/868)) * [`4d614c7`](graalvm/native-build-tools@4d614c7) Update latest docs symlink and improve 1.0.0 release notes ([#866](https://redirect.github.com/graalvm/native-build-tools/issues/866)) * [`ee1351d`](graalvm/native-build-tools@ee1351d) Reduce CI usage by running CI only on "pull\_request" and running only the lat... * [`c6f3674`](graalvm/native-build-tools@c6f3674) Add class introduced in 5.14.1/6.0.1 ([#794](https://redirect.github.com/graalvm/native-build-tools/issues/794)) * [`5bc69bd`](graalvm/native-build-tools@5bc69bd) Bump io.netty:netty-codec-http from 4.1.129.Final to 4.1.132.Final in /sample... * [`395f3b2`](graalvm/native-build-tools@395f3b2) Use a safer way to create the temporary access filter file ([#852](https://redirect.github.com/graalvm/native-build-tools/issues/852)) * Additional commits viewable in [compare view](graalvm/native-build-tools@0.11.5...1.1.0) [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- Dependabot commands and options You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
In this PR we introduce cross-validation between the
reachability-metadata-schemapresent in the users graal build and their reachability metadata repository. We do this to assure that the user is using compatible versions of graal and the metadata repo.The validation covers the following cases, based on the presence of the new schema:
Also in this PR, we introduce tests for the
SchemaValidationUtils, for both the oldvalidateSchemasmethod and the newvalidateReachabilityMetadataSchemamethod. These tests verify that the newly-added utils work as intended.Examples of stack traces which include various warnings/errors introduced by this validation:
Fixes: #827