Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update builder images to jdk-17.0.7 #34120

Merged
merged 4 commits into from
Jun 21, 2023

Conversation

cescoffier
Copy link
Member

  • Update the GraalVM Community builder image to the tag jdk-17 / jdk-17.0.7
  • Update the Mandrel builder image to the tag jdk-17(Mandrel 23.0)
  • Update GraalVM SDK version to 23.0 (yes, it does not follow the same version scheme)

Note that the version scheme and name also changed: GraalVM CE -> GraalVM Community. We kept the name of the image unchanged to avoid a massive breaking change.

@cescoffier cescoffier requested review from zakkak, gsmet and Karm and removed request for zakkak June 19, 2023 06:32
@quarkus-bot quarkus-bot bot added area/core area/dependencies Pull requests that update a dependency file area/devtools Issues/PR related to maven, gradle, platform and cli tooling/plugins area/documentation labels Jun 19, 2023
@cescoffier
Copy link
Member Author

(pinging @Karm instead of @zakkak (in PTO if I'm correct)).

@geoand / @Karm / @gsmet I'm wondering about the io.quarkus.deployment.pkg.steps.GraalVM class:

  • java 11 as default (shouldn't it be 17)
  • uses the old version schema, it's fine for now, but might become confusing in a few months

@cescoffier
Copy link
Member Author

Note - unrelated to that PR, I've also deprecated the native S2i (which included Maven / Gradle...).

(FYI: @tqvarnst and @maxandersen)

@cescoffier
Copy link
Member Author

@Karm seems like the AWT substitutions would need some love (see the documentation build).

@quarkus-bot

This comment has been minimized.

Copy link
Member

@maxandersen maxandersen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You mention the image is deprecated...but it does not seem explicitly called out/mentioned anywhere ?

@@ -17,8 +17,8 @@
<properties>
<!-- The Graal version we suggest using in documentation - as that's
what we work with by self downloading it: -->
<graal-sdk.version-for-documentation>22.3</graal-sdk.version-for-documentation>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this really necessary to change everywhere ? I'm here thinking of handling updates/backports of docs.

Maybe not a super big deal but just wondering why change this perfectly valid key?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because we use that variable to indicate where to download the GraalVM Community packages, and we want to recommend jdk-17.0.7 (aka 23.0)

@geoand
Copy link
Contributor

geoand commented Jun 19, 2023

@geoand / @Karm / @gsmet I'm wondering about the io.quarkus.deployment.pkg.steps.GraalVM class:

  • java 11 as default (shouldn't it be 17)
  • uses the old version schema, it's fine for now, but might become confusing in a few months

I would say, let's fix this properly once 3.2 is out and we have more time and won't be affected by people being off

@cescoffier
Copy link
Member Author

@maxandersen

You mention the image is deprecated...but it does not seem explicitly called out/mentioned anywhere ?

That's the good news: the Quarkus codebase does not reference that image (but it's still pulled a lot...). I've updated the description on Quay. See https://quay.io/repository/quarkus/ubi-quarkus-graalvmce-s2i (let me know if you don't have access to the usage log)

@cescoffier
Copy link
Member Author

@maxandersen @Karm is it expected that the new SDK is compiled with Java 17 - which obviously will break our java 11 support.

@maxandersen
Copy link
Member

is it expected that the new SDK is compiled with Java 17 - which obviously will break our java 11 support.

breaks some build components I reckon or do we have an actual runtime/just-for-java-not-native-image dependency on this?

@@ -71,7 +71,7 @@
<jboss-logmanager-embedded.version>1.0.11</jboss-logmanager-embedded.version>
<slf4j-jboss-logmanager.version>1.1.0.Final</slf4j-jboss-logmanager.version>
<slf4j-api.version>1.7.36</slf4j-api.version>
<graal-sdk.version>22.3.2</graal-sdk.version>
<graal-sdk.version>23.0.0</graal-sdk.version>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this makes it only build on java 11.
afaics it only brings in the annotations - that library shouldn't be java 17 bound IMO.

I've pinged on graalvm slack what their recommendation is.

In worst case we stay on the old version for this as it just brings substitution annotations.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

imo we should for now stay on 22.3.2 for the jar dependency - then we at least can kick of right testing etc.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

one piece of evidence to stay on 22.3.2 is that there are no API differences:
https://diff.revapi.org/?groupId=org.graalvm.sdk&artifactId=graal-sdk&old=22.3.2&new=23.0.0

@cescoffier cescoffier force-pushed the graalvm-june-2023-update branch from 35fa7cf to fd7b2b2 Compare June 19, 2023 08:18
@github-actions
Copy link

github-actions bot commented Jun 19, 2023

🙈 The PR is closed and the preview is expired.

@quarkus-bot

This comment has been minimized.

@cescoffier cescoffier force-pushed the graalvm-june-2023-update branch from fd7b2b2 to 96e1889 Compare June 20, 2023 05:49
public static final Version VERSION_22_3_0 = new Version("GraalVM 22.3.0", "22.3.0", Distribution.ORACLE);
public static final Version VERSION_22_2_0 = new Version("GraalVM 22.2.0", "22.2.0", Distribution.ORACLE);
public static final Version VERSION_23_0_0 = new Version("GraalVM 23.0.0", "23.0.0", Distribution.ORACLE);
public static final Version VERSION_23_1_0 = new Version("GraalVM 23.1.0", "23.1.0", Distribution.ORACLE);

public static final Version MINIMUM = VERSION_22_2_0;
public static final Version CURRENT = VERSION_22_3_2;
public static final Version CURRENT = VERSION_23_0_0;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are we going to detect the version correctly with the new version scheme? Or GraalVM still has 23 in the version string? My recollection is that you said it doesn't.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, that's a problem. I mentioned this in the PR description. I believe the class needs to be adjusted.

if (linesList.size() == 3) {
static Version of(Stream<String> output) {
List<String> lines = output
.dropWhile(l -> !l.startsWith("GraalVM") && !l.startsWith("native-image"))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@gsmet How is this not dropping lines of the form (third line in the new output):

Substrate VM GraalVM CE 20.0.1+9.1 (build 20.0.1+9, serial gc)

and

OpenJDK Runtime Environment Mandrel-23.0.0.0-Final (build 17.0.7+7)

What am I missing?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the safer option is to pull the image before running --version on it.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jerboaa it's dropWhile: it's dropping the lines while the condition is true, then it keeps all the lines.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As for changing entirely the way it is done, I'm not comfortable to do it now but could be convinced for a future version.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FWIW, I discovered this method today while implementing this :).

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@gsmet Gotcha. Fair enough then.

@Karm
Copy link
Member

Karm commented Jun 20, 2023

@Karm seems like the AWT substitutions would need some love (see the documentation build).

@cescoffier Could you be more specific, please? The doc build log seem ok...?

@cescoffier
Copy link
Member Author

No, I was suspecting a problem, but it was due to the broken version detection

- Update the GraalVM Community builder image to the tag `jdk-17` / `jdk-17.0.7`
- Update the Mandrel builder image to the tag `jdk-17`(Mandrel 23.0)
- Update GraalVM SDK version to 23.0 (yes, it does not follow the same version scheme)

Note that the version scheme and name also changed: GraalVM CE -> GraalVM Community. We kept the name of the image unchanged to avoid a massive breaking change.
It's a hack because the new jar use Java 17 bytecode.
We would need to be sure that this version is not used for anything more than the SVM artifact version.
gsmet added 2 commits June 20, 2023 16:02
@gsmet gsmet force-pushed the graalvm-june-2023-update branch from 5fe6d49 to ccd299f Compare June 20, 2023 14:04
@quarkus-bot quarkus-bot bot added the area/infra-automation anything related to CI, bots, etc. that are used to automated our infrastructure label Jun 20, 2023
@gsmet gsmet dismissed maxandersen’s stale review June 20, 2023 14:05

We decided to merge it.

Copy link
Member

@gsmet gsmet left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, I restarted a CI run with some adjusted timeouts. I'll merge this evening.

@gsmet gsmet added this to the 3.2 - main milestone Jun 20, 2023
@quarkus-bot
Copy link

quarkus-bot bot commented Jun 20, 2023

Failing Jobs - Building ccd299f

Status Name Step Failures Logs Raw logs
✔️ JVM Tests - JDK 11
JVM Tests - JDK 17 Build ⚠️ Check → Logs Raw logs
✔️ JVM Tests - JDK 19
Native Tests - Windows - RESTEasy Jackson Setup GraalVM ⚠️ Check → Logs Raw logs

@gsmet gsmet merged commit 2a029d9 into quarkusio:main Jun 21, 2023
@cescoffier cescoffier deleted the graalvm-june-2023-update branch July 3, 2023 07:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/core area/dependencies Pull requests that update a dependency file area/devtools Issues/PR related to maven, gradle, platform and cli tooling/plugins area/documentation area/infra-automation anything related to CI, bots, etc. that are used to automated our infrastructure
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants