Skip to content

Migrate corfudb-cloud to JDK 25#283

Merged
chetangudisagar merged 1 commit intomasterfrom
jdk-25
Mar 13, 2026
Merged

Migrate corfudb-cloud to JDK 25#283
chetangudisagar merged 1 commit intomasterfrom
jdk-25

Conversation

@chetangudisagar
Copy link
Copy Markdown
Collaborator

@chetangudisagar chetangudisagar commented Feb 19, 2026

Changes Made

Gradle Wrapper (6 files)

  • Upgraded Gradle from 8.10 to 9.1.0 across all subprojects
    (root, universe, tests, benchmarks, cloud/infrastructure,
    cloud/corfu/corfu-client-example).
    Gradle 9.1.0 is required for JDK 25 support (8.10 only supports up to Java 23).

Java Compilation (gradle/java.gradle)

  • sourceCompatibility and targetCompatibility updated from VERSION_21
    to VERSION_25.
  • Added --add-opens JVM flags for JDK 25's stricter module encapsulation:
    java.base/java.net, java.base/java.lang, java.base/java.util,
    java.base/java.lang.reflect, java.base/java.io,
    java.management/sun.management, jdk.attach/sun.tools.attach.
  • Added testRuntimeOnly dependency on junit-platform-launcher:1.5.2
    (required by Gradle 9.x - JUnit Platform launcher must be explicitly
    on the test runtime classpath).

Groovy/Gradle 9.x API Compatibility (gradle/idea.gradle)

  • groovy.util.XmlParser -> groovy.xml.XmlParser (moved in Groovy 4.x)
  • QName import changed from groovy.xml.* to groovy.namespace.QName
  • compileJava.destinationDir -> compileJava.destinationDirectory.asFile.get()
    (destinationDir removed in Gradle 9.x)

Gradle 9.x API Compatibility (gradle/universe.gradle)

  • JavaExec.main -> JavaExec.mainClass.set() (main property removed in
    Gradle 9.x) for deployment and shutdown tasks.

Lombok Plugin Upgrade (4 files)

  • io.freefair.lombok upgraded from 8.12.1 to 9.2.0 in:
    universe/universe-core/build.gradle.kts
    universe/universe-infrastructure/build.gradle.kts
    tests/build.gradle.kts
    benchmarks/build.gradle.kts
    (8.12.1 is incompatible with Gradle 9.x; 9.2.0 bundles
    Lombok 1.18.40+ which supports JDK 25)

Protobuf Plugin Upgrade (2 files)

  • com.google.protobuf upgraded from 0.9.3 to 0.9.6 in:
    benchmarks/build.gradle.kts
    tests/build.gradle.kts
    (0.9.3 uses Configuration.fileCollection() which was removed in Gradle 9.x)

Palantir Docker Plugin Upgrade (3 files)

  • com.palantir.docker upgraded from 0.36.0 to 0.37.0 in:
    tests/build.gradle.kts
    cloud/infrastructure/integration-tools/build.gradle.kts
    cloud/infrastructure/kibana/kibana-tools/build.gradle.kts
    (0.36.0 uses ImmutableAttributesFactory internal API removed in Gradle 9.x)
  • Added pluginManagement block with Maven Central repository and
    resolutionStrategy in tests/settings.gradle.kts (0.37.0 is published
    to Maven Central but not the Gradle Plugin Portal).

Checkstyle Fix (FakeDns.java)

  • Added missing blank line before class declaration
  • Added braces to single-line if statement

GitHub Actions Workflows (4 files)

  • pull_request_universe.yml: java-version 21 -> 25
  • pull_request_benchmarks.yml: java-version 21 -> 25
  • publish-universe-artifacts.yml: java-version 21 -> 25
  • run_benchmarks.yml: java-version 21 -> 25

Dockerfiles (5 files)

  • tests/Dockerfile: openjdk:21-bullseye -> eclipse-temurin:25-jdk-noble
  • benchmarks/Dockerfile: openjdk:21-bullseye -> eclipse-temurin:25-jdk-noble
  • cloud/corfu/corfu-client-example/Dockerfile: openjdk:21-bullseye -> eclipse-temurin:25-jdk-noble
  • cloud/infrastructure/integration-tools/Dockerfile: openjdk:21-bullseye -> eclipse-temurin:25-jdk-noble
  • cloud/infrastructure/kibana/kibana-tools/Dockerfile: openjdk:21-bullseye -> eclipse-temurin:25-jdk-noble

Note: Also migrated from deprecated openjdk Docker images to eclipse-temurin
(Adoptium), which is the recommended OpenJDK distribution.

Verified locally with JDK 25.0.2:

  • ./gradlew check passes in universe/
  • ./gradlew check passes in benchmarks/
  • ./gradlew compileJava compileTestJava passes in tests/
    (tests/check has pre-existing checkstyle and Docker integration test
    failures unrelated to JDK migration)

## Changes Made

### Gradle Wrapper (6 files)
- Upgraded Gradle from 8.10 to 9.1.0 across all subprojects
  (root, universe, tests, benchmarks, cloud/infrastructure,
  cloud/corfu/corfu-client-example).
  Gradle 9.1.0 is required for JDK 25 support (8.10 only supports up to Java 23).

### Java Compilation (gradle/java.gradle)
- sourceCompatibility and targetCompatibility updated from VERSION_21
  to VERSION_25.
- Added --add-opens JVM flags for JDK 25's stricter module encapsulation:
  java.base/java.net, java.base/java.lang, java.base/java.util,
  java.base/java.lang.reflect, java.base/java.io,
  java.management/sun.management, jdk.attach/sun.tools.attach.
- Added testRuntimeOnly dependency on junit-platform-launcher:1.5.2
  (required by Gradle 9.x - JUnit Platform launcher must be explicitly
  on the test runtime classpath).

### Groovy/Gradle 9.x API Compatibility (gradle/idea.gradle)
- groovy.util.XmlParser -> groovy.xml.XmlParser (moved in Groovy 4.x)
- QName import changed from groovy.xml.* to groovy.namespace.QName
- compileJava.destinationDir -> compileJava.destinationDirectory.asFile.get()
  (destinationDir removed in Gradle 9.x)

### Gradle 9.x API Compatibility (gradle/universe.gradle)
- JavaExec.main -> JavaExec.mainClass.set() (main property removed in
  Gradle 9.x) for deployment and shutdown tasks.

### Lombok Plugin Upgrade (4 files)
- io.freefair.lombok upgraded from 8.12.1 to 9.2.0 in:
  universe/universe-core/build.gradle.kts
  universe/universe-infrastructure/build.gradle.kts
  tests/build.gradle.kts
  benchmarks/build.gradle.kts
  (8.12.1 is incompatible with Gradle 9.x; 9.2.0 bundles
  Lombok 1.18.40+ which supports JDK 25)

### Protobuf Plugin Upgrade (2 files)
- com.google.protobuf upgraded from 0.9.3 to 0.9.6 in:
  benchmarks/build.gradle.kts
  tests/build.gradle.kts
  (0.9.3 uses Configuration.fileCollection() which was removed in Gradle 9.x)

### Palantir Docker Plugin Upgrade (3 files)
- com.palantir.docker upgraded from 0.36.0 to 0.37.0 in:
  tests/build.gradle.kts
  cloud/infrastructure/integration-tools/build.gradle.kts
  cloud/infrastructure/kibana/kibana-tools/build.gradle.kts
  (0.36.0 uses ImmutableAttributesFactory internal API removed in Gradle 9.x)
- Added pluginManagement block with Maven Central repository and
  resolutionStrategy in tests/settings.gradle.kts (0.37.0 is published
  to Maven Central but not the Gradle Plugin Portal).

### Checkstyle Fix (FakeDns.java)
- Added missing blank line before class declaration
- Added braces to single-line if statement

### GitHub Actions Workflows (4 files)
- pull_request_universe.yml: java-version 21 -> 25
- pull_request_benchmarks.yml: java-version 21 -> 25
- publish-universe-artifacts.yml: java-version 21 -> 25
- run_benchmarks.yml: java-version 21 -> 25

### Dockerfiles (5 files)
- tests/Dockerfile: openjdk:21-bullseye -> eclipse-temurin:25-jdk-noble
- benchmarks/Dockerfile: openjdk:21-bullseye -> eclipse-temurin:25-jdk-noble
- cloud/corfu/corfu-client-example/Dockerfile: openjdk:21-bullseye -> eclipse-temurin:25-jdk-noble
- cloud/infrastructure/integration-tools/Dockerfile: openjdk:21-bullseye -> eclipse-temurin:25-jdk-noble
- cloud/infrastructure/kibana/kibana-tools/Dockerfile: openjdk:21-bullseye -> eclipse-temurin:25-jdk-noble

Note: Also migrated from deprecated openjdk Docker images to eclipse-temurin
(Adoptium), which is the recommended OpenJDK distribution.

Verified locally with JDK 25.0.2:
- ./gradlew check passes in universe/
- ./gradlew check passes in benchmarks/
- ./gradlew compileJava compileTestJava passes in tests/
  (tests/check has pre-existing checkstyle and Docker integration test
  failures unrelated to JDK migration)
@chetangudisagar chetangudisagar merged commit 988f98c into master Mar 13, 2026
2 checks passed
@chetangudisagar chetangudisagar deleted the jdk-25 branch March 13, 2026 20:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants