Meanwhile, back to the topic of Migration to OpenJDK11 ... Unfortunately, the Apache email lists do not accommodate images or files. So I am going to move this next discussion to our asf slack channel "datasketches-dev".
I have posted my study there. You can offer comments or suggestions either here or there. Cheers, Lee. On Fri, Oct 18, 2019 at 3:53 PM leerho <[email protected]> wrote: > I opened a ticket (DATASKETCHES-3) with infra to see if we could add this > capability to our slack channel. > > On Fri, Oct 18, 2019 at 12:29 PM Dave Fisher <[email protected]> wrote: > >> Hi - >> >> Apache Pulsar uses this: https://github.com/merlimat/slack-email-digest >> >> They don’t have their slack channels at the-asf.slack.com but it does >> work. You can always ask for infra’s help. >> >> Regards, >> Dave >> >> > On Oct 18, 2019, at 12:26 PM, leerho <[email protected]> wrote: >> > >> > I wonder if there is a way to have slack auto-post to an email list? >> > >> > On Fri, Oct 18, 2019 at 5:13 AM Evans Ye <[email protected]> wrote: >> > >> >> I don't have the expertise on jdk 11 but would love know more about >> >> datasketches and specifically the java lib. Would be great if you can >> bring >> >> back the result of what you have discussed in the slack dev channel. >> This >> >> helps other contributors easily to search and get to know what >> happened in >> >> the community and get involved :) >> >> >> >> Best >> >> Evans >> >> >> >> leerho <[email protected]> 於 2019年10月18日 週五 11:03 寫道: >> >> >> >>> Christopher, >> >>> >> >>> This would be fabulous. I have tons of questions, whenever you are >> >> ready. >> >>> I might be easier to interact via the ASF slack channel >> "datasketches" or >> >>> "datasketches-dev". >> >>> >> >>> Lee. >> >>> >> >>> On Thu, Oct 17, 2019 at 5:07 PM Jon Malkin <[email protected]> >> wrote: >> >>> >> >>>> The memory repository is the one that needs the most conversion help. >> >>>> Everything using Unsafe in datasketches-java runs through the memory >> >>>> package. >> >>>> >> >>>> I'm not sure off-hand if the characterization repo has low level >> tests >> >> of >> >>>> Memory (on my phone at the moment), but we'd be looking to minimize >> the >> >>>> speed impact in the process since it very directly impacts sketch >> >> speed. >> >>>> >> >>>> jon >> >>>> >> >>>> >> >>>> >> >>>> On Thu, Oct 17, 2019, 4:43 PM Christopher <[email protected]> >> wrote: >> >>>> >> >>>>> I've converted several other projects to using JDK 11, and can help >> >>>>> with this if there's still a need for help. I've actually been >> >> looking >> >>>>> at ways I can contribute to DataSketches since ApacheCon, and this >> >>>>> seems to be something I can probably do. >> >>>>> >> >>>>> On Wed, Oct 16, 2019 at 9:47 PM leerho <[email protected]> wrote: >> >>>>>> >> >>>>>> Gian, >> >>>>>> >> >>>>>> If I were to supply you with a link to a snapshot or a Release >> >>>> Candidate >> >>>>>> version of the datasketches jar (and Memory jar) could you test in >> >>> your >> >>>>>> environment under JDK 11 and see if it works? >> >>>>>> >> >>>>>> Lee >> >>>>>> >> >>>>>> >> >>>>>> On Mon, Oct 14, 2019 at 9:19 PM leerho <[email protected]> wrote: >> >>>>>> >> >>>>>>> Holy Cow! I have never seen such a complex travis config! >> >>>>>>> >> >>>>>>> On Mon, Oct 14, 2019 at 6:54 PM Gian Merlino <[email protected]> >> >>>> wrote: >> >>>>>>> >> >>>>>>>> I should have linked Druid's Travis config file for reference. >> >>> Here >> >>>>> it is: >> >>>>>>>> >> >> https://github.com/apache/incubator-druid/blob/master/.travis.yml >> >>>>>>>> >> >>>>>>>> On Mon, Oct 14, 2019 at 6:53 PM Gian Merlino <[email protected]> >> >>>> wrote: >> >>>>>>>> >> >>>>>>>>>> So what exactly is the requirement? Our DataSketches code >> >>> does >> >>>>>>>> compile >> >>>>>>>>>> under JDK8 and we have lots of customers and users using JDK >> >>> 8. >> >>>>>>>>> >> >>>>>>>>> It depends on who you ask, I guess :) >> >>>>>>>>> >> >>>>>>>>> From Druid's perspective, we aren't going to be compiling your >> >>>> code, >> >>>>>>>> only >> >>>>>>>>> running it. So the only requirement we would ask for is that >> >> the >> >>>>> code >> >>>>>>>>> _runs_ under a Java 11 runtime. Being able to compile under >> >> Java >> >>>> 11 >> >>>>> is >> >>>>>>>> good >> >>>>>>>>> for future-proofing your code, though. It is starting to >> >> become >> >>>> more >> >>>>>>>>> prevalent. >> >>>>>>>>> >> >>>>>>>>>> It sounds like (as far as Unsafe is concerned) converting >> >> all >> >>>> the >> >>>>>>>> direct >> >>>>>>>>>> unsafe.blah() calls to static MethodHandle.invoke calls is >> >>> what >> >>>> is >> >>>>>>>>> required. >> >>>>>>>>>> >> >>>>>>>>>> Is this correct? >> >>>>>>>>> >> >>>>>>>>> That is certainly part of it, I'm not 100% sure if that's all >> >>>> that's >> >>>>>>>>> needed. Btw, CI can help verify. In Druid's Travis config, we >> >>> run >> >>>>> our >> >>>>>>>> tests >> >>>>>>>>> on both JDK 8 and JDK 11. In order to make this automated >> >>> testing >> >>>>>>>> easier, >> >>>>>>>>> we chose to do the work needed to compile Druid on JDK 11, >> >> even >> >>>>> though >> >>>>>>>> we >> >>>>>>>>> still compile release builds using JDK 8 only. (If we hadn't >> >>> done >> >>>>> this >> >>>>>>>>> work, then we'd have to compile on 8 and test on 11, which >> >>> Travis >> >>>>>>>> doesn't >> >>>>>>>>> easily support.) >> >>>>>>>>> >> >>>>>>>>> On Mon, Oct 14, 2019 at 5:51 PM leerho <[email protected]> >> >>> wrote: >> >>>>>>>>> >> >>>>>>>>>> Thanks, Gian, this is VERY helpful! >> >>>>>>>>>> >> >>>>>>>>>> From my cursory glance, it appears that UnsafeUtil acquires >> >>>> Unsafe >> >>>>> and >> >>>>>>>>>> Unsafe-class the usual way using reflection (I didn't think >> >>> this >> >>>>> would >> >>>>>>>>>> work >> >>>>>>>>>> with 9+ ), and then defines some method-handles that the >> >> other >> >>>>> classes >> >>>>>>>>>> use. >> >>>>>>>>>> >> >>>>>>>>>> Will this approach allow code to compile under JDK11 and >> >> JDK8? >> >>>>>>>>>> >> >>>>>>>>>> It also seems that compiling with JDK11 is still a work in >> >>>>> progress as >> >>>>>>>> the >> >>>>>>>>>> pom.xml clearly specifies JDK8. >> >>>>>>>>>> >> >>>>>>>>>> So what exactly is the requirement? Our DataSketches code >> >> does >> >>>>> compile >> >>>>>>>>>> under JDK8 and we have lots of customers and users using JDK >> >> 8. >> >>>>>>>>>> >> >>>>>>>>>> It sounds like (as far as Unsafe is concerned) converting all >> >>> the >> >>>>>>>> direct >> >>>>>>>>>> unsafe.blah() calls to static MethodHandle.invoke calls is >> >> what >> >>>> is >> >>>>>>>>>> required. >> >>>>>>>>>> >> >>>>>>>>>> Is this correct? >> >>>>>>>>>> >> >>>>>>>>>> Lee. >> >>>>>>>>>> >> >>>>>>>>>> >> >>>>>>>>>> >> >>>>>>>>>> >> >>>>>>>>>> >> >>>>>>>>>> >> >>>>>>>>>> >> >>>>>>>>>> >> >>>>>>>>>> >> >>>>>>>>>> >> >>>>>>>>>> On Mon, Oct 14, 2019 at 2:07 PM Gian Merlino < >> >> [email protected]> >> >>>>> wrote: >> >>>>>>>>>> >> >>>>>>>>>>> And nobody should be using the Oracle JDK without a >> >>> commercial >> >>>>>>>>>> relationship >> >>>>>>>>>>> with Oracle, its license is a nightmare. >> >>>>>>>>>>> >> >>>>>>>>>>> On Mon, Oct 14, 2019 at 2:04 PM Gian Merlino < >> >>> [email protected]> >> >>>>>>>> wrote: >> >>>>>>>>>>> >> >>>>>>>>>>>> Oracle and OpenJDK builds behave the same as each other >> >>> now. >> >>>>> The >> >>>>>>>>>>>> differences are in terms of licensing, length of support, >> >>> and >> >>>>>>>> release >> >>>>>>>>>>>> cadence. IMO most Java devs should be using one of the >> >>>>> third-party >> >>>>>>>>>>> OpenJDK >> >>>>>>>>>>>> distributions (e.g. Corretto, Zulu, AdoptOpenJDK) rather >> >>> than >> >>>>>>>> vanilla >> >>>>>>>>>>>> OpenJDK these days, because of the new OpenJDK policy >> >> that >> >>>>> public >> >>>>>>>>>> updates >> >>>>>>>>>>>> will cease for major versions after 6 months. >> >>>>>>>>>>>> >> >>>>>>>>>>>> On Mon, Oct 14, 2019 at 11:07 AM leerho < >> >> [email protected]> >> >>>>> wrote: >> >>>>>>>>>>>> >> >>>>>>>>>>>>> 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. >> >>>>>>>>>>>>>>> >> >>>>>>>>>>>>>> >> >>>>>>>>>>>>> >> >>>>>>>>>>>> >> >>>>>>>>>>> >> >>>>>>>>>> >> >>>>>>>>> >> >>>>>>>> >> >>>>>>> >> >>>>> >> >>>>> >> --------------------------------------------------------------------- >> >>>>> To unsubscribe, e-mail: [email protected] >> >>>>> For additional commands, e-mail: [email protected] >> >>>>> >> >>>>> >> >>>> >> >>> >> >> >> > -- >> > From my cell phone. >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [email protected] >> For additional commands, e-mail: [email protected] >> >>
