Ver Fonte

Update bundled JDK to Java 22 (again) (#108654)

This commit re-bumps the bundled JDK to Java 22 now that we have
a tested workaround for the G1GC bug
(https://bugs.openjdk.org/browse/JDK-8329528).

relates #108571
relates #106987
Ryan Ernst há 1 ano atrás
pai
commit
2dceafc821

+ 10 - 30
build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/toolchain/AdoptiumJdkToolchainResolver.java

@@ -11,7 +11,6 @@ package org.elasticsearch.gradle.internal.toolchain;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 
-import org.apache.commons.compress.utils.Lists;
 import org.gradle.jvm.toolchain.JavaLanguageVersion;
 import org.gradle.jvm.toolchain.JavaToolchainDownload;
 import org.gradle.jvm.toolchain.JavaToolchainRequest;
@@ -21,17 +20,17 @@ import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.net.URI;
 import java.net.URL;
-import java.util.Comparator;
 import java.util.Map;
 import java.util.Optional;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.stream.StreamSupport;
 
 import static org.gradle.jvm.toolchain.JavaToolchainDownload.fromUri;
 
 public abstract class AdoptiumJdkToolchainResolver extends AbstractCustomJavaToolchainResolver {
 
     // package protected for better testing
-    final Map<AdoptiumVersionRequest, Optional<AdoptiumVersionInfo>> CACHED_SEMVERS = new ConcurrentHashMap<>();
+    final Map<AdoptiumVersionRequest, Optional<String>> CACHED_RELEASES = new ConcurrentHashMap<>();
 
     @Override
     public Optional<JavaToolchainDownload> resolve(JavaToolchainRequest request) {
@@ -39,7 +38,7 @@ public abstract class AdoptiumJdkToolchainResolver extends AbstractCustomJavaToo
             return Optional.empty();
         }
         AdoptiumVersionRequest versionRequestKey = toVersionRequest(request);
-        Optional<AdoptiumVersionInfo> versionInfo = CACHED_SEMVERS.computeIfAbsent(
+        Optional<String> versionInfo = CACHED_RELEASES.computeIfAbsent(
             versionRequestKey,
             (r) -> resolveAvailableVersion(versionRequestKey)
         );
@@ -54,12 +53,12 @@ public abstract class AdoptiumJdkToolchainResolver extends AbstractCustomJavaToo
         return new AdoptiumVersionRequest(platform, arch, javaLanguageVersion);
     }
 
-    private Optional<AdoptiumVersionInfo> resolveAvailableVersion(AdoptiumVersionRequest requestKey) {
+    private Optional<String> resolveAvailableVersion(AdoptiumVersionRequest requestKey) {
         ObjectMapper mapper = new ObjectMapper();
         try {
             int languageVersion = requestKey.languageVersion.asInt();
             URL source = new URL(
-                "https://api.adoptium.net/v3/info/release_versions?architecture="
+                "https://api.adoptium.net/v3/info/release_names?architecture="
                     + requestKey.arch
                     + "&image_type=jdk&os="
                     + requestKey.platform
@@ -71,14 +70,8 @@ public abstract class AdoptiumJdkToolchainResolver extends AbstractCustomJavaToo
                     + ")"
             );
             JsonNode jsonNode = mapper.readTree(source);
-            JsonNode versionsNode = jsonNode.get("versions");
-            return Optional.of(
-                Lists.newArrayList(versionsNode.iterator())
-                    .stream()
-                    .map(this::toVersionInfo)
-                    .max(Comparator.comparing(AdoptiumVersionInfo::semver))
-                    .get()
-            );
+            JsonNode versionsNode = jsonNode.get("releases");
+            return StreamSupport.stream(versionsNode.spliterator(), false).map(JsonNode::textValue).findFirst();
         } catch (FileNotFoundException e) {
             // request combo not supported (e.g. aarch64 + windows
             return Optional.empty();
@@ -87,21 +80,10 @@ public abstract class AdoptiumJdkToolchainResolver extends AbstractCustomJavaToo
         }
     }
 
-    private AdoptiumVersionInfo toVersionInfo(JsonNode node) {
-        return new AdoptiumVersionInfo(
-            node.get("build").asInt(),
-            node.get("major").asInt(),
-            node.get("minor").asInt(),
-            node.get("openjdk_version").asText(),
-            node.get("security").asInt(),
-            node.get("semver").asText()
-        );
-    }
-
-    private URI resolveDownloadURI(AdoptiumVersionRequest request, AdoptiumVersionInfo versionInfo) {
+    private URI resolveDownloadURI(AdoptiumVersionRequest request, String version) {
         return URI.create(
-            "https://api.adoptium.net/v3/binary/version/jdk-"
-                + versionInfo.semver
+            "https://api.adoptium.net/v3/binary/version/"
+                + version
                 + "/"
                 + request.platform
                 + "/"
@@ -118,7 +100,5 @@ public abstract class AdoptiumJdkToolchainResolver extends AbstractCustomJavaToo
         return anyVendorOr(request.getJavaToolchainSpec().getVendor().get(), JvmVendorSpec.ADOPTIUM);
     }
 
-    record AdoptiumVersionInfo(int build, int major, int minor, String openjdkVersion, int security, String semver) {}
-
     record AdoptiumVersionRequest(String platform, String arch, JavaLanguageVersion languageVersion) {}
 }

+ 1 - 5
build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/toolchain/OracleOpenJdkToolchainResolver.java

@@ -39,11 +39,7 @@ public abstract class OracleOpenJdkToolchainResolver extends AbstractCustomJavaT
     );
 
     // package private so it can be replaced by tests
-    List<JdkBuild> builds = List.of(
-        getBundledJdkBuild(),
-        // 22 release candidate
-        new JdkBuild(JavaLanguageVersion.of(22), "22", "36", "830ec9fcccef480bb3e73fb7ecafe059")
-    );
+    List<JdkBuild> builds = List.of(getBundledJdkBuild());
 
     private JdkBuild getBundledJdkBuild() {
         String bundledJdkVersion = VersionProperties.getBundledJdkVersion();

+ 1 - 7
build-tools-internal/src/test/groovy/org/elasticsearch/gradle/internal/toolchain/AdoptiumJdkToolchainResolverSpec.groovy

@@ -11,7 +11,6 @@ package org.elasticsearch.gradle.internal.toolchain
 import org.gradle.api.services.BuildServiceParameters
 import org.gradle.jvm.toolchain.JavaLanguageVersion
 import org.gradle.jvm.toolchain.JavaToolchainResolver
-import org.gradle.platform.OperatingSystem
 
 import static org.elasticsearch.gradle.internal.toolchain.AbstractCustomJavaToolchainResolver.toArchString
 import static org.elasticsearch.gradle.internal.toolchain.AbstractCustomJavaToolchainResolver.toOsString
@@ -38,12 +37,7 @@ class AdoptiumJdkToolchainResolverSpec extends AbstractToolchainResolverSpec {
                     toOsString(it[2], it[1]),
                     toArchString(it[3]),
                     languageVersion);
-            resolver.CACHED_SEMVERS.put(request, Optional.of(new AdoptiumJdkToolchainResolver.AdoptiumVersionInfo(languageVersion.asInt(),
-                    1,
-                    1,
-                    "" + languageVersion.asInt() + ".1.1.1+37",
-                    0, "" + languageVersion.asInt() + ".1.1.1+37.1"
-            )))
+            resolver.CACHED_RELEASES.put(request, Optional.of('jdk-' + languageVersion.asInt() + '.1.1.1+37.1'))
 
         }
         return resolver

+ 1 - 1
build-tools-internal/version.properties

@@ -2,7 +2,7 @@ elasticsearch     = 8.15.0
 lucene            = 9.10.0
 
 bundled_jdk_vendor = openjdk
-bundled_jdk = 21.0.2+13@f2283984656d49d69e91c558476027ac
+bundled_jdk = 22.0.1+8@c7ec1332f7bb44aeba2eb341ae18aca4
 # optional dependencies
 spatial4j         = 0.7
 jts               = 1.15.0

+ 5 - 0
docs/changelog/108654.yaml

@@ -0,0 +1,5 @@
+pr: 108654
+summary: Update bundled JDK to Java 22 (again)
+area: Packaging
+type: upgrade
+issues: []

+ 21 - 0
gradle/verification-metadata.xml

@@ -1720,6 +1720,27 @@
             <sha256 value="b6c17e747ae78cdd6de4d7532b3164b277daee97c007d3eaa2b39cca99882664" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="openjdk_22" name="linux" version="22.0.1">
+         <artifact name="linux-22.0.1-aarch64.tar.gz">
+            <sha256 value="0887c42b9897f889415a6f7b88549d38af99f6ef2d1117199de012beab0631eb" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="linux-22.0.1-x64.tar.gz">
+            <sha256 value="133c8b65113304904cdef7c9103274d141cfb64b191ff48ceb6528aca25c67b1" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="openjdk_22" name="macos" version="22.0.1">
+         <artifact name="macos-22.0.1-aarch64.tar.gz">
+            <sha256 value="b949a3bc13e3c5152ab55d12e699dfa6c8b00bedeb8302b13be4aec3ee734351" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="macos-22.0.1-x64.tar.gz">
+            <sha256 value="5daa4f9894cc3a617a5f9fe2c48e5391d3a2e672c91e1597041672f57696846f" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="openjdk_22" name="windows" version="22.0.1">
+         <artifact name="windows-22.0.1-x64.zip">
+            <sha256 value="de7f00fd1bd0d3a4c678fff2681dfad19284d74d357218a4be6f623488d040da" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="org.abego.treelayout" name="org.abego.treelayout.core" version="1.0.3">
          <artifact name="org.abego.treelayout.core-1.0.3.jar">
             <sha256 value="fa5e31395c39c2e7d46aca0f81f72060931607b2fa41bd36038eb2cb6fb93326" origin="Generated by Gradle"/>