From 19adb9533573c6769bb5293ea77fce0b9d3b6fdb Mon Sep 17 00:00:00 2001 From: manuzhang Date: Wed, 22 Oct 2025 23:36:45 +0800 Subject: [PATCH 1/2] Core: Drop support for Java 11 --- .github/workflows/delta-conversion-ci.yml | 4 ++-- .github/workflows/flink-ci.yml | 2 +- .github/workflows/hive-ci.yml | 2 +- .github/workflows/java-ci.yml | 2 +- .github/workflows/kafka-connect-ci.yml | 2 +- .github/workflows/spark-ci.yml | 4 +--- README.md | 2 +- baseline.gradle | 2 +- build.gradle | 17 ++++++----------- jmh.gradle | 4 ++-- site/docs/contribute.md | 2 +- 11 files changed, 18 insertions(+), 25 deletions(-) diff --git a/.github/workflows/delta-conversion-ci.yml b/.github/workflows/delta-conversion-ci.yml index ecd107a473b5..0169a1763cf6 100644 --- a/.github/workflows/delta-conversion-ci.yml +++ b/.github/workflows/delta-conversion-ci.yml @@ -71,7 +71,7 @@ jobs: runs-on: ubuntu-24.04 strategy: matrix: - jvm: [11, 17, 21] + jvm: [17, 21] env: SPARK_LOCAL_IP: localhost steps: @@ -100,7 +100,7 @@ jobs: runs-on: ubuntu-24.04 strategy: matrix: - jvm: [11, 17, 21] + jvm: [17, 21] env: SPARK_LOCAL_IP: localhost steps: diff --git a/.github/workflows/flink-ci.yml b/.github/workflows/flink-ci.yml index 66f6c6834740..d04dbd00ca97 100644 --- a/.github/workflows/flink-ci.yml +++ b/.github/workflows/flink-ci.yml @@ -73,7 +73,7 @@ jobs: runs-on: ubuntu-24.04 strategy: matrix: - jvm: [11, 17, 21] + jvm: [17, 21] flink: ['1.20', '2.0', '2.1'] env: SPARK_LOCAL_IP: localhost diff --git a/.github/workflows/hive-ci.yml b/.github/workflows/hive-ci.yml index c33ec06477c1..867ed278f9a2 100644 --- a/.github/workflows/hive-ci.yml +++ b/.github/workflows/hive-ci.yml @@ -72,7 +72,7 @@ jobs: runs-on: ubuntu-24.04 strategy: matrix: - jvm: [11, 17, 21] + jvm: [17, 21] env: SPARK_LOCAL_IP: localhost steps: diff --git a/.github/workflows/java-ci.yml b/.github/workflows/java-ci.yml index eb3bb2994ff6..3a96bd56be84 100644 --- a/.github/workflows/java-ci.yml +++ b/.github/workflows/java-ci.yml @@ -67,7 +67,7 @@ jobs: runs-on: ubuntu-24.04 strategy: matrix: - jvm: [11, 17, 21] + jvm: [17, 21] env: SPARK_LOCAL_IP: localhost steps: diff --git a/.github/workflows/kafka-connect-ci.yml b/.github/workflows/kafka-connect-ci.yml index 6ea8e14c11ed..64f705eb1510 100644 --- a/.github/workflows/kafka-connect-ci.yml +++ b/.github/workflows/kafka-connect-ci.yml @@ -72,7 +72,7 @@ jobs: runs-on: ubuntu-24.04 strategy: matrix: - jvm: [11, 17, 21] + jvm: [17, 21] env: SPARK_LOCAL_IP: localhost steps: diff --git a/.github/workflows/spark-ci.yml b/.github/workflows/spark-ci.yml index ab13832f406f..dcfaeead3f83 100644 --- a/.github/workflows/spark-ci.yml +++ b/.github/workflows/spark-ci.yml @@ -71,14 +71,12 @@ jobs: runs-on: ubuntu-24.04 strategy: matrix: - jvm: [11, 17, 21] + jvm: [17, 21] spark: ['3.4', '3.5', '4.0'] scala: ['2.12', '2.13'] exclude: # Spark 3.5 is the first version not failing on Java 21 (https://issues.apache.org/jira/browse/SPARK-42369) # Full Java 21 support is coming in Spark 4 (https://issues.apache.org/jira/browse/SPARK-43831) - - jvm: 11 - spark: '4.0' - jvm: 21 spark: '3.4' - spark: '4.0' diff --git a/README.md b/README.md index 196d2c18e56c..e68eb177602c 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ Community discussions happen primarily on the [dev mailing list][dev-list] or on ### Building -Iceberg is built using Gradle with Java 11, 17, or 21. +Iceberg is built using Gradle with Java 17 or 21. * To invoke a build and run tests: `./gradlew build` * To skip tests: `./gradlew build -x test -x integrationTest` diff --git a/baseline.gradle b/baseline.gradle index 151fa40a1a28..757db06bdc83 100644 --- a/baseline.gradle +++ b/baseline.gradle @@ -57,7 +57,7 @@ subprojects { java { target 'src/main/java/**/*.java', 'src/test/java/**/*.java', 'src/testFixtures/java/**/*.java', 'src/jmh/java/**/*.java', 'src/integration/java/**/*.java' // 1.23.0 has an issue in formatting comments https://github.com/google/google-java-format/issues/1155 - // so we stick to 1.22.0 to produce consistent result for JDK 11/17/21 + // so we stick to 1.22.0 to produce consistent result for JDK 17/21 googleJavaFormat("1.22.0") removeUnusedImports() licenseHeaderFile "$rootDir/.baseline/copyright/copyright-header-java.txt" diff --git a/build.gradle b/build.gradle index 72fb4e72b6d0..d2ed2675ec03 100644 --- a/build.gradle +++ b/build.gradle @@ -51,10 +51,7 @@ try { project.logger.error(e.getMessage()) } -if (JavaVersion.current() == JavaVersion.VERSION_11) { - project.ext.jdkVersion = '11' - project.ext.extraJvmArgs = [] -} else if (JavaVersion.current() == JavaVersion.VERSION_17 || JavaVersion.current() == JavaVersion.VERSION_21) { +if (JavaVersion.current() == JavaVersion.VERSION_17 || JavaVersion.current() == JavaVersion.VERSION_21) { project.ext.jdkVersion = JavaVersion.current().getMajorVersion().toString() project.ext.extraJvmArgs = ["--add-opens", "java.base/java.io=ALL-UNNAMED", "--add-opens", "java.base/java.lang.invoke=ALL-UNNAMED", @@ -78,7 +75,7 @@ if (JavaVersion.current() == JavaVersion.VERSION_11) { "--add-opens", "java.base/sun.security.action=ALL-UNNAMED", "--add-opens", "java.base/sun.util.calendar=ALL-UNNAMED"] } else { - throw new GradleException("This build must be run with JDK 11 or 17 or 21 but was executed with JDK " + JavaVersion.current()) + throw new GradleException("This build must be run with JDK 17 or 21 but was executed with JDK " + JavaVersion.current()) } tasks.withType(AbstractArchiveTask).configureEach { @@ -190,7 +187,7 @@ subprojects { tasks.withType(JavaCompile.class).configureEach { options.encoding = "UTF-8" - options.release = 11 + options.release = 17 } javadoc { @@ -249,9 +246,9 @@ subprojects { tasks.withType(ScalaCompile.class) { scalaCompileOptions.keepAliveMode.set(KeepAliveMode.DAEMON) // `options.release` doesn't seem to work for ScalaCompile :( - sourceCompatibility = "11" - targetCompatibility = "11" - scalaCompileOptions.additionalParameters.add("-release:11") + sourceCompatibility = "17" + targetCompatibility = "17" + scalaCompileOptions.additionalParameters.add("-release:17") } } } @@ -940,8 +937,6 @@ project(':iceberg-arrow') { } project(':iceberg-nessie') { - // Starting from Nessie 0.104.2, JDK 17+ is required for test dependencies - test.onlyIf { JavaVersion.current() != JavaVersion.VERSION_11 } test { useJUnitPlatform() } diff --git a/jmh.gradle b/jmh.gradle index 57efb3821d8f..20e8608f4897 100644 --- a/jmh.gradle +++ b/jmh.gradle @@ -17,8 +17,8 @@ * under the License. */ -if (jdkVersion != '11' && jdkVersion != '17' && jdkVersion != '21') { - throw new GradleException("The JMH benchmarks must be run with JDK 11 or JDK 17 or JDK 21") +if (jdkVersion != '17' && jdkVersion != '21') { + throw new GradleException("The JMH benchmarks must be run with JDK 17 or JDK 21") } def flinkVersions = (System.getProperty("flinkVersions") != null ? System.getProperty("flinkVersions") : System.getProperty("defaultFlinkVersions")).split(",") diff --git a/site/docs/contribute.md b/site/docs/contribute.md index 5b057a86f3ec..dd9064ffdc70 100644 --- a/site/docs/contribute.md +++ b/site/docs/contribute.md @@ -96,7 +96,7 @@ settle disagreements or to force a decision. ## Building the Project Locally -Iceberg is built using Gradle with Java 11, 17, or 21. +Iceberg is built using Gradle with Java 17 or 21. * To invoke a build and run tests: `./gradlew build` * To skip tests: `./gradlew build -x test -x integrationTest` From c746769a1586f89d34b1d4c3f489cc17dbd69035 Mon Sep 17 00:00:00 2001 From: manuzhang Date: Tue, 25 Nov 2025 08:19:17 +0800 Subject: [PATCH 2/2] Build: Bump ORC from 1.9.7 to 2.2.1 --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e221933f7727..36a9464a4766 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -77,7 +77,7 @@ mockserver = "5.15.0" nessie = "0.105.5" netty-buffer = "4.2.7.Final" object-client-bundle = "3.3.2" -orc = "1.9.7" +orc = "2.2.1" parquet = "1.16.0" roaringbitmap = "1.3.0" scala-collection-compat = "2.14.0"