That sounds good, looking forward to it. Please let me know if you want help.
> On Feb 25, 2022, at 9:56 PM, 张铎 <palomino...@gmail.com> wrote: > > Filed HBASE-26773 and tried, the result is not very good. Netty's > PlatformDependent can not meet all the requirements. > > So now I prefer we have a new hbase-thirdparty-unsafe module to provide the > Unsafe ability without exposing sun.misc.Unsafe directly. > > Will give it a try. > > Thanks. > > Andrew Purtell <apurt...@apache.org> 于2022年2月24日周四 10:46写道: > >> Ok, a bridge in one place would minimize the risk. >> >>> On Wed, Feb 23, 2022 at 6:07 PM 张铎(Duo Zhang) <palomino...@gmail.com> >>> wrote: >>> >>> I think this is a reasonable concern, we could do this on our own. >>> >>> But checking the commit history of PlatformDependent[1], the API is >> pretty >>> stable, so I think the risk of hitting a security issue but we can not >>> upgrade due to API conflicts is very low. And if a security issue >> requires >>> big changes on PlatformDependent, then I assume we have to fix our own >>> version as well... >>> >>> And we will not spread PlatformDependent references everywhere in our >> code, >>> we will still have a bridge, like the current UnsafeAccess. So if later >> we >>> decide to implement our own version, it will not introduce a big impact >> to >>> our code base. >>> >>> Thanks. >>> >>> >>> [1] >>> >>> >> https://github.com/netty/netty/commits/4.1/common/src/main/java/io/netty/util/internal/PlatformDependent.java >>> >>> Andrew Purtell <apurt...@apache.org> 于2022年2月24日周四 01:12写道: >>> >>>> We often upgrade netty after there is a CVE announcement. This >> produces a >>>> pressure to upgrade in production. Use of an internal API is not a good >>>> practice because it can cause friction because of breaking changes when >>>> there is a need to upgrade all of a sudden. This is painful and >> hopefully >>>> we can exclude it as a possibility now when coming up with the plan. We >>> can >>>> do the same thing they do in our own hbase-thirdparty without taking >> the >>>> dependency and achieve the same goal, right? >>>> >>>> On Mon, Feb 21, 2022 at 7:35 PM 张铎(Duo Zhang) <palomino...@gmail.com> >>>> wrote: >>>> >>>>> For me, since we shade netty, there will be no conflict with other >>> netty >>>>> dependencies, so we can make sure the netty version we used is >> exactly >>>> the >>>>> one we shaded in hbase-thirdparty. >>>>> >>>>> If later we want to upgrade netty version in hbase-thirdparty, and it >>>>> breaks the api, then we can release a new hbase-thirdparty, and >> upgrade >>>> the >>>>> main hbase repo to depend on the new hbase-thirdparty version, and >> also >>>>> modify the code in hbase accordingly. There will be no user visible >>>>> affects. >>>>> >>>>> Anyway, let me have a try first. Even with netty's PaltformDependent >>>> class, >>>>> since it still references sun.misc.Unsafe, maybe we will still get an >>>>> compile error... >>>>> >>>>> Thanks. >>>>> >>>>> Andrew Purtell <apurt...@apache.org> 于2022年2月22日周二 08:08写道: >>>>> >>>>>> Thanks for that. I understand better what you are proposing now. It >>> is >>>>>> clear that you have thought it through. >>>>>> >>>>>> So then the only question I have is this: Do you think it is a >>> concern >>>>> that >>>>>> Netty's PlatformDependent class is in their >> "io.netty.util.internal" >>>>>> package? The 'internal' designation suggests to me they won't apply >>> the >>>>>> same care to not breaking users of it as they would for their >> public >>>>>> (non-"internal") API. I noticed this earlier but had other >> questions >>> at >>>>>> that time. >>>>>> >>>>>> If it is a concern, we have the option of doing the same thing that >>>> Netty >>>>>> has done with their PlatformDependent class as a new utility class >> of >>>> our >>>>>> own in hbase-thirdparty. This may impose special requirements on >>>> building >>>>>> hbase-thirdparty, or, at least, the module containing this wrapper, >>> but >>>>> it >>>>>> is an option that would help us avoid external breaking changes. >> For >>>> your >>>>>> consideration. >>>>>> >>>>>> On Mon, Feb 21, 2022 at 3:48 PM 张铎(Duo Zhang) < >> palomino...@gmail.com >>>> >>>>>> wrote: >>>>>> >>>>>>> What I proposed here is for solving the problem… >>>>>>> >>>>>>> The problem is that when using —release 8, javac will not export >>> the >>>>>>> jdk.unsupported symbols, so using sun.misc.Unsafe will trigger a >>>>> compile >>>>>>> error. But at runtime if you export jdk.unsupported you can still >>> use >>>>>>> sun.misc.Unsafe. The related jdk issue said —release is only for >>>> public >>>>>> API >>>>>>> so not exporting jdk.unsupported is the expected behavior. >>>>>>> >>>>>>> So what I proposed here is to remove direct dependency on >>>>> sun.misc.Unsafe >>>>>>> in HBase code, so at compile time there will be no problem. Betty >>>> has a >>>>>>> wrapper of Unsafe so I think we could have a try. At runtime if >> we >>>> have >>>>>>> jdk.unsupported exported we could still actually make use of >>>>>>> sun.misc.Unsafe. >>>>>>> >>>>>>> Feel free to correct me if I missed something or there are still >>>>>> uncleared >>>>>>> things. >>>>>>> >>>>>>> Thanks. >>>>>>> >>>>>>> >>>>>>> >>>>>>> Andrew Purtell <andrew.purt...@gmail.com>于2022年2月22日 周二00:56写道: >>>>>>> >>>>>>>> As Nick discovered ‘—release’ doesn’t work for version 8 >> anyway. >>>>>>>> >>>>>>>> >>>>>>>>> On Feb 20, 2022, at 3:47 PM, 张铎 <palomino...@gmail.com> >> wrote: >>>>>>>>> >>>>>>>>> I know, with —release 8 ByteBuffer will not be an problem >> but >>>> then >>>>>>>>> sun.misc.Unsafe can not be used any more right? So the >> problem >>>> here >>>>>> is >>>>>>>> how >>>>>>>>> to make use of Unsafe with —release 8. What I proposed here >> is >>>> that >>>>>> we >>>>>>>> just >>>>>>>>> do not use it, then we can make use of —release 8 to address >>> the >>>>>>>> ByteBuffer >>>>>>>>> problem. >>>>>>>>> >>>>>>>>> Thanks. >>>>>>>>> >>>>>>>>> Andrew Purtell <apurt...@apache.org>于2022年2月21日 周一03:32写道: >>>>>>>>> >>>>>>>>>> The problem that leads us to consider '--release 8', or what >>> it >>>>>> would >>>>>>>>>> promise if it worked, isn't Unsafe, it is ByteBuffer. >>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> https://www.morling.dev/blog/bytebuffer-and-the-dreaded-nosuchmethoderror/ >>>>>>>>>> . Although to your point Netty has ByteBuf... >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> On Sun, Feb 20, 2022 at 5:23 AM 张铎(Duo Zhang) < >>>>>> palomino...@gmail.com >>>>>>>> >>>>>>>>>>> wrote: >>>>>>>>>>> >>>>>>>>>>> Since we have shaded netty, I think we could make use of >>>>>>>>>>> netty's PlatformDependent[1] class to avoid referencing >>> Unsafe >>>>>>>> directly, >>>>>>>>>>> then there will be no problem for us to use the '--release >> 8' >>>>>> option. >>>>>>>>>>> >>>>>>>>>>> If no big concerns, I will file an issue to remove all the >>>>>>>>>> sun.misc.Unsafe >>>>>>>>>>> references in our code base and make use of >> PlatformDependent >>>>> from >>>>>>> the >>>>>>>>>>> shaded netty. >>>>>>>>>>> >>>>>>>>>>> Thanks. >>>>>>>>>>> >>>>>>>>>>> 1. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> https://github.com/netty/netty/blob/4.1/common/src/main/java/io/netty/util/internal/PlatformDependent.java >>>>>>>>>>> >>>>>>>>>>> 张铎(Duo Zhang) <palomino...@gmail.com> 于2022年2月16日周三 >> 14:12写道: >>>>>>>>>>> >>>>>>>>>>>> I think this could be done by some module tricks, where we >>>>> build a >>>>>>>>>>> special >>>>>>>>>>>> module with -source 8 and -target 8.We have done similar >>>> things >>>>> in >>>>>>> the >>>>>>>>>>> past >>>>>>>>>>>> to have hadoop1-compat and hadoop2-compact. >>>>>>>>>>>> >>>>>>>>>>>> Let me have a try. >>>>>>>>>>>> >>>>>>>>>>>> Sean Busbey <bus...@apache.org> 于2022年2月16日周三 13:31写道: >>>>>>>>>>>> >>>>>>>>>>>>> Unfortunately if we want to keep jdk8 working we can't >> rely >>>> on >>>>>>>>>> building >>>>>>>>>>>>> with the jdk release target option on newer jdks. >>>>>>>>>>>>> >>>>>>>>>>>>> We ran into this recently in HBASE-25465 where a JDK bug >>> came >>>>> up. >>>>>>>>>>>>> >>>>>>>>>>>>> On Tue, Feb 15, 2022 at 8:12 PM 张铎(Duo Zhang) < >>>>>>> palomino...@gmail.com >>>>>>>>> >>>>>>>>>>>>> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> +1 on moving the minimum required java version for >>> compiling >>>>>> HBase >>>>>>>>>> to >>>>>>>>>>>>> Java >>>>>>>>>>>>>> 11. But we could still use --release=8 to still support >>> jdk8 >>>>> at >>>>>>>>>>> runtime. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Java 8 is still widely used, and I believe this will >> last >>>> for >>>>>> even >>>>>>>>>>> more >>>>>>>>>>>>>> years, as lots of big companies such as RedHat, >> Microsoft >>>> and >>>>>>> Amazon >>>>>>>>>>> are >>>>>>>>>>>>>> still shipping new jdk8 releases, I do not think it is >>> time >>>> to >>>>>>> fully >>>>>>>>>>>>> drop >>>>>>>>>>>>>> the support of jdk8. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Thanks. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Sean Busbey <bus...@apache.org> 于2022年2月16日周三 09:57写道: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> If we set the minJDK to 11 I believe that will >>> effectively >>>>>> remove >>>>>>>>>>> jdk8 >>>>>>>>>>>>>>> support, rather than "just" deprecate it. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> As we build out more robust testing I would be in favor >>> of >>>>>>> running >>>>>>>>>>>>> less >>>>>>>>>>>>>> of >>>>>>>>>>>>>>> it on deprecated JDKs. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Tue, Feb 15, 2022, 16:10 Josh Elser < >>> els...@apache.org> >>>>>>> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Deprecating jdk8 for HBase 3 and requiring minJdk=11 >>> seems >>>>>>>>>>>>> reasonable >>>>>>>>>>>>>> to >>>>>>>>>>>>>>>> me. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Gotta start pushing the issue somehow. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On 2/15/22 1:47 PM, Sean Busbey wrote: >>>>>>>>>>>>>>>>> Hi folks! >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> It's been some time since we decided to stick to LTS >>> JDK >>>>>>>>>>> releases >>>>>>>>>>>>> as >>>>>>>>>>>>>> a >>>>>>>>>>>>>>>> way >>>>>>>>>>>>>>>>> of getting a handle on the JDK treadmill. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> What do folks think about deprecating JDK8? The >>> openjdk8u >>>>>>>>>>> project >>>>>>>>>>>>> is >>>>>>>>>>>>>>>> still >>>>>>>>>>>>>>>>> going and there are commercial support options at >> least >>>>>>>>>> through >>>>>>>>>>>>> 2030. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Deprecating it in HBase 3 would mean we could remove >> it >>>> in >>>>>>>>>> HBase >>>>>>>>>>>>> 4, >>>>>>>>>>>>>> not >>>>>>>>>>>>>>>>> that we would _have_ to remove it. The way I think >>> about >>>>>>>>>> likely >>>>>>>>>>>>>> timing >>>>>>>>>>>>>>> of >>>>>>>>>>>>>>>>> these events goes like this: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> * HBase 2 started alphas in June 2017, betas in >> January >>>>> 2018, >>>>>>>>>>> and >>>>>>>>>>>>>> came >>>>>>>>>>>>>>>> out >>>>>>>>>>>>>>>>> in April 2018 >>>>>>>>>>>>>>>>> * HBase 3 started alphas in July 2021, and as of Feb >>> 2022 >>>>> we >>>>>>>>>>>>> haven't >>>>>>>>>>>>>>>>> discussed how close we are to our stated beta goals >>>>> (upgrades >>>>>>>>>>> from >>>>>>>>>>>>>>> active >>>>>>>>>>>>>>>>> 2.x releases and removal of not-ready features). >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Given the above, in the absence of us specifically >>>> pushing >>>>> to >>>>>>>>>>> roll >>>>>>>>>>>>>>>> through >>>>>>>>>>>>>>>>> major version numbers for some reason, I think a >>>> reasonably >>>>>>>>>>>>>>> conservative >>>>>>>>>>>>>>>>> estimate is for HBase 3 to arrive in late 2022 or >> early >>>>> 2023 >>>>>>>>>> and >>>>>>>>>>>>> then >>>>>>>>>>>>>>>> HBase >>>>>>>>>>>>>>>>> 4 to start alphas in ~2025. An HBase 5 prior to 2030 >>>> seems >>>>>>>>>>>>> unlikely. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> That all said, our current reference guide section on >>>> java >>>>>>>>>>>>> versions >>>>>>>>>>>>>>> does >>>>>>>>>>>>>>>>> not sound very confident about JDK11 support. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> A Note on JDK11 * >>>>>>>>>>>>>>>>>> Preliminary support for JDK11 is introduced with >> HBase >>>>>> 2.3.0. >>>>>>>>>>>>> This >>>>>>>>>>>>>>>>> support is limited to >>>>>>>>>>>>>>>>>> compilation and running the full test suite. There >> are >>>>> open >>>>>>>>>>>>>> questions >>>>>>>>>>>>>>>>> regarding the runtime >>>>>>>>>>>>>>>>>> compatibility of JDK11 with Apache ZooKeeper and >>> Apache >>>>>>>>>> Hadoop >>>>>>>>>>>>>>>>> (HADOOP-15338). >>>>>>>>>>>>>>>>>> Significantly, neither project has yet released a >>>> version >>>>>>>>>> with >>>>>>>>>>>>>>> explicit >>>>>>>>>>>>>>>>> runtime support for >>>>>>>>>>>>>>>>>> JDK11. The remaining known issues in HBase are >>>> catalogued >>>>> in >>>>>>>>>>>>>>>> HBASE-22972. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Since that blurb was written, Hadoop has added JDK11 >>>>> support >>>>>>>>>> [1] >>>>>>>>>>>>> as >>>>>>>>>>>>>> has >>>>>>>>>>>>>>>>> ZooKeeper[2]. As a part of buttoning up our JDK11 >>> support >>>>> we >>>>>>>>>>> could >>>>>>>>>>>>>>> update >>>>>>>>>>>>>>>>> our minimum supported versions of these projects to >>> match >>>>>> that >>>>>>>>>>>>>> support. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> What do folks think? >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> [1]: >> https://hadoop.apache.org/docs/r3.3.0/index.html >>>>>>>>>>>>>>>>> [2]: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>> >>>> >> https://zookeeper.apache.org/doc/r3.6.0/zookeeperAdmin.html#sc_systemReq >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Best regards, >>>>>>>>>> Andrew >>>>>>>>>> >>>>>>>>>> Unrest, ignorance distilled, nihilistic imbeciles - >>>>>>>>>> It's what we’ve earned >>>>>>>>>> Welcome, apocalypse, what’s taken you so long? >>>>>>>>>> Bring us the fitting end that we’ve been counting on >>>>>>>>>> - A23, Welcome, Apocalypse >>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Best regards, >>>>>> Andrew >>>>>> >>>>>> Unrest, ignorance distilled, nihilistic imbeciles - >>>>>> It's what we’ve earned >>>>>> Welcome, apocalypse, what’s taken you so long? >>>>>> Bring us the fitting end that we’ve been counting on >>>>>> - A23, Welcome, Apocalypse >>>>>> >>>>> >>>> >>>> >>>> -- >>>> Best regards, >>>> Andrew >>>> >>>> Unrest, ignorance distilled, nihilistic imbeciles - >>>> It's what we’ve earned >>>> Welcome, apocalypse, what’s taken you so long? >>>> Bring us the fitting end that we’ve been counting on >>>> - A23, Welcome, Apocalypse >>>> >>> >> >> >> -- >> Best regards, >> Andrew >> >> Unrest, ignorance distilled, nihilistic imbeciles - >> It's what we’ve earned >> Welcome, apocalypse, what’s taken you so long? >> Bring us the fitting end that we’ve been counting on >> - A23, Welcome, Apocalypse >>