Thanks, Gian, Your references are helpful and I am studying them.
I didn't see any references to OpenJDK vs Oracle's JDKs. Are there any differences in the way Unsafe calls (or other hidden classes) are handled by OpenJDK? Or is this a "don't care" as far as Druid is concerned? Are the version numbers between Oracle and OpenJDK always aligned? Lee. On Fri, Oct 11, 2019 at 5:45 PM Gian Merlino <[email protected]> wrote: > You didn't address this message to me, but in Druid most of the work for > Java 9+ compatibility is mentioned in this master issue, which you might > find helpful: https://github.com/apache/incubator-druid/issues/5589. > Skimming the list, these might be particularly relevant to DataSketches: > > - https://github.com/apache/incubator-druid/pull/7487 (cleaner operations) > - https://github.com/apache/incubator-druid/pull/7466 (ByteBuffer unmap > operation) > - https://github.com/apache/incubator-druid/pull/7576 (Remove direct > references to Unsafe) > > Btw, it would be better, I think, to address emails to the list at large. > It encourages more people to participate. If Roman is a subscriber he would > get a copy anyway. If not, you could encourage him to subscribe. > > On Fri, Oct 11, 2019 at 3:13 PM leerho <[email protected]> wrote: > > > Roman, > > > > I hope you are doing well. > > > > I really appreciate the contributions you made to our Memory component! > > > > Given that Druid has made its code base compatible with OpenJDK 11, we > > could use your help in what changes do we need to make to make that > happen > > for DataSketches. As I recall, our DataSketches library was not the only > > Druid dependency that took advantage of Unsafe. So I assume you have > been > > down this path :) > > > > Currently, I have a check in the static initializer in Memory/UnsafeUtil: > > parseJavaVersion(...) that checks the string returned from > > System.getProperty("java.version"). If that string does not contain > "1.8" > > or "8" it will throw an error. Given that we have not tested with JDK 9, > > 10, 11 or 12, I felt it was safer to explicitly throw rather than having > > the users experience some weird failure later that may be difficult to > > debug. > > > > With only one minor exception (which we could easily fix) the Memory > > component is the only place where Unsafe is used. However, we do use > > reflection to gain internal access to a number of other classes including > > ByteBuffer, Cleaner, and Bits. > > > > Looking forward to hearing from you. > > > > Cheers, > > > > Lee. > > >
