Yeah, the Flink benchmark shouldn't be a blocker, as the 1.20 module itself can be built and run with Java 17.
I am in favor of dropping Java 11 support. We probably can also add Java 25 to the CI build after dropping Java 11, as JDK 25 (LTS) was released on Sep 25. We will still have 3 LTS releases (17, 21, 25) after dropping Java 11. I tend to be a bit more aggressive in dropping old versions. Let's see what others think. On Wed, Nov 19, 2025 at 10:52 AM Jean-Baptiste Onofré <[email protected]> wrote: > Hi everyone, > > I worked on the Gradle 9.x upgrade for Iceberg. Gradle 9.2.x requires > JDK17 minimum. > > I did a quick pass on Iceberg modules, I see all modules support JDK17. > > There is a known issue with JDK 17 in the Flink 1.20 module for a > specific benchmark. The comment in > > flink/v1.20/flink/src/jmh/java/org/apache/iceberg/flink/sink/shuffle/StatisticsRecordSerializerBenchmark.java. > This benchmark in 1.20 only works with Java 11 probably due to usage > of ArraysAsListSerializer in FlinkChillPackageRegistrar. Flink 2.0 and > above switched to DefaultSerializers#ArraysAsListSerializer in Kryo > 5.6. > Using Java 17 would result in the following error..."This affects only > that JMH benchmark, not the entire Flink 1.20 module. The module can > still be built and run with JDK 17; the benchmark has a runtime issue > due to Java module access restrictions. > I think we can live with that, waiting to remove Flink 1.20 in the future. > > Regarding this, I would like to start a discussion to define JDK17 min > in Iceberg. > > Thoughts ? > > NB: if we have a consensus, I would be happy to start an > update/cleanup PR and prepare the next "major" release with JDK17 min. > > Regards > JB >
