Hi everyone, Some updates and questions around JDK 17 below. First of all, I wanted to let people know that currently Cassandra trunk can be already compiled and run with J8 + J11 + J17. This is the product of the realization that the feature branch makes it harder for working on JDK17 related tickets due to the involvement of too many moving parts. Agreement reached in [1] that new JDK introduction can be done incrementally. Scripted UDFs removed, hooks to be added in a follow up ticket. What does this mean? - Currently you can compile and run Cassandra trunk with JDK 17(further to 8+11). You can run unit and java distributed tests already with JDK17 - CASSANDRA-18106 in progress, enabling CCM to handle JDK8, 11 and 17 with trunk and when that is ready we will be able to run also Python tests; After that one lands it comes CASSANDRA-18247 ; its goal is to add CircleCI config (separate of the one we have for 8+11) for 11+17 which can be used from people who work on JDK17 related issues. Patch proposal already in the ticket. Final version we will have when we do the switch 8+11 to 11+17, things will go through evolution.
What does this mean? Anyone who is interested to test or to help with JDK17 effort can easily do it directly from trunk. Jenkins and CircleCI are not switched from 8+11 to 11+17 until we are ready. Only test experimental additional CircleCI config will be added, temporary to make it easier for testing To remind you - the umbrella ticket for the JDK17 builds is CASSANDRA-16895. Good outstanding candidate still not assigned - CASSANDRA-18180, if anyone has cycles, please, take a look at it. CASSANDRA-18263 might be also of interest to someone. In other news, I added already to the JDK17 jvm options certain imports/exports which are needed at this point but as we agreed in the past - it will be good to try to eliminate as many of them as we can. Consider those experimental in my opinion. Some of them though are related to: -- some were added already from 11; thoughts? *-- *some will be eliminated with some maintenance in progress *-- *some are related to https://chronicle.software/chronicle-support-java-17. I guess we are cornered with those until Chronicle eliminates the need for those. (CASSANDRA-18049) -- Find a way to get FileDescriptor.fd and sun.nio.ch.FileChannelImpl.fd without opening internals (CASSANDRA-17850) -- we also use setAccessible at numerous places. And I am sure our CI will tell me I am missing something, especially when trunk is alive... A few other questions: - thoughts around the usage/future of Unsafe? History around the choice of using it in C* and future plans I might not know of? - ECJ - It seems the compiler artifacts are moved from here <https://mvnrepository.com/artifact/org.eclipse.jdt.core.compiler/ecj> to here <https://mvnrepository.com/artifact/org.eclipse.jdt/ecj> and there is change of license from EPL1.0 to EPL2.0 too. But if I read correctly here <https://www.apache.org/legal/resolved.html#weak-copyleft-licenses> that should not affect us. I am dealing with this in CASSANDRA-18190. Please let me know if you see any problem with this that I might be missing. - Looking at the history of tickets around JMXServerUtils class I guess it was accepted that we might have breakages (and we already had CASSANDRA-14173) - JmxRegistry extends sun.rmi.registry.RegistryImpl? Best regards, Ekaterina [1] https://lists.apache.org/thread/c39yrbdszgz9s34vr17wpjdhv6h2oo61