Hey all, seeking a clarification on our Java suppo...
# dev
l
Hey all, seeking a clarification on our Java support matrix: When we say java 17 is fully supported since druid 27, are we talking strictly about the core druid project code and not about the dependencies we are pinning in our pom files? • For example, we depend on guice 4.2.2 (in master, druid27 is actually guice 4.1.0), which doesn't publicly support java 17 until 5.1.0.
āœ… 1
The reason I ask is because I was chasing down a confusing failure mode while testing druid29 in my company's dev cluster. We compiled with java17 and were having startup of the MM fail saying it can't read class file version 61. In my debugger, I see that the exception is being thrown in Guice ClassReader.java. This is what led me to start wondering about our dependencies and their ability to interface with druid compiled and running with java17. The root cause: I had a monitor class in my monitors list that wasn't supported on MM. • Removing the monitor (CacheMonitor), fixed startup. Just for fun, I also recompiled with a Guice dependency of 5.1.0 which allowed the MM to startup with or without the monitor in the monitors list.
FWIW - I did no validation on anything druid compiled with guice 5.1.0. That might be completely broken. I just did it for fun and to get a data point
not to spam the thread, but had a second to dig a little deeper this morning and see that ClassReader is actually a part of a guice dependency (ASM) which didn't support java17 until v9.1 (guice 4.2.2 depends on ASM v7.0)
k
Yeah I know of people running into weird issues with java 17 and guice
Do you have the patch ready for upgrading guice ?
z
I think if you use jdk17 or later at
runtime
that will work as long as all the classes guice will encounter are
jdk11
compatible - if you could set your custom extension to compile against
11
things will work correctly