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