Big +1 Le lun. 14 févr. 2022 à 14:54, Nicolò Boschi <[email protected]> a écrit :
> Dear Pulsar community, > > > I would like to start a discussion about having a plan to make Pulsar > runtime-compatible with JDK 17. > > > The goal is to run Pulsar using JDK17 at runtime, benefitting from the > latest JVM performance improvements and features. > > > The non-goal is to deprecate JDK8 or JDK11 runtime compatibility. The java > compiler *release* flag will be kept to 8 (this change deserves another > discussion thread). > > > *Build* > > > At the moment, the build command (mvn clean install -DskipTests) works well > using JDK17. > > > We fixed a lot of unit tests and other issues found using JDK17 removing > PowerMockito improper usages: https://github.com/apache/pulsar/pull/14098 > > Other small pulls were merged fixing other kinds of issues (all related to > the tests themself and not the production code). > > > *Runtime compatibility* > > > Currently I haven't seen severe issues running Pulsar on JDK17. > > For testing purposes, I’ve created a simple image which pulls the Pulsar > master and installs JDK17-zulu instead of JDK11. > > I've tried running the docker image in a Kubernetes environment (deploying > it with the Apache Pulsar helm chart), testing a few scenario: > > * Produce and consume message (pulsar cli, pulsar perf) > > * Functions/Connectors (embedding Nar files) > > > All the components/pods are working without visible issues. However my > tests weren't under high traffic and a lot of Pulsar features were not > involved in the tests. > > > The main problems might be caused by the restrictions around reflection > usage introduced in JDK17 JEP 403: Strongly Encapsulate JDK Internals > <https://openjdk.java.net/jeps/403> > > We may need to unlock some packages to reflection to keep some > optimizations, for example for BookKeeper Native IO ( > > https://github.com/apache/bookkeeper/blob/master/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/NativeIO.java#L98 > ) > > > It would be great to chase other improvements to be explicitly unlocked for > other low-level libraries (Netty, GRPC...) > > > > *Continuous Integration* > > To maintain the support for JDK17 we need to switch all the CI jobs to > JDK17; the idea is to replace JDK11 completely. We could - not sure - keep > a single job for JDK11 compatibility, like we do with JDK8. > > > > *Docker distribution* > > After we get the Pulsar master CI stable, we can move the official Docker > images to JDK17 (currently on JDK11). > > > > *Proposal plan* > > We can start moving the CI to JDK17 after the branch-2.10 has been cut and > targeting JDK17 runtime support for Pulsar 2.11 > > > > > WDYT? > > BR, > Nicolò Boschi >
