I took a look at your PR and left one minor comment. No patches were
required for us to use JDK 21.

Charles

On Sun, Sep 27, 2026 at 9:56 PM Junegunn Choi <[email protected]> wrote:
>
> Thanks, Charles!
>
> That helps a lot. We now have reports from multiple organizations
> (including ours, yours, and my previous workplace) running HBase 2.6
> with JDK 21 in production.
>
> Could you take a look at https://github.com/apache/hbase/pull/8691 and
> let me know if you have any concerns with the proposal? To be safe, it
> lists 2.6.8 as the minimum version in the 2.6 line and leaves the 2.5
> line unconfirmed.
>
> By the way, were any of your custom HBase or Hadoop patches required
> specifically for JDK 21?
>
> Best,
> Junegunn
>
>
> On Wed, Sep 23, 2026 at 9:33 PM Charles Connell via user
> <[email protected]> wrote:
> >
> > Hi Junegunn,
> >
> > At HubSpot, we have been running RegionServers on HBase 2.6 on Java 21
> > with Generational ZGC in production for several years. Our experience
> > has been great. Here are some details:
> > - HBase build: currently 2.6.3 with custom patches applied, you can
> > view our fork at https://github.com/HubSpot/hbase
> > - Hadoop build: currently 3.3.6 with custom patches, our fork is at
> > https://github.com/HubSpot/hadoop
> > - Server java version: Temurin-21.0.2+13
> > - Client java version varies between 11 to 21
> > - We add these JVM flags: --add-modules jdk.unsupported --add-opens
> > java.base/java.io=ALL-UNNAMED --add-opens
> > java.base/java.nio=ALL-UNNAMED --add-opens
> > java.base/sun.nio.ch=ALL-UNNAMED --add-opens
> > java.base/java.lang=ALL-UNNAMED --add-opens
> > java.base/jdk.internal.ref=ALL-UNNAMED --add-opens
> > java.base/java.lang.reflect=ALL-UNNAMED --add-opens
> > java.base/java.util=ALL-UNNAMED --add-opens
> > java.base/java.util.concurrent=ALL-UNNAMED --add-exports
> > java.base/jdk.internal.misc=ALL-UNNAMED --add-exports
> > java.security.jgss/sun.security.krb5=ALL-UNNAMED --add-exports
> > java.base/sun.net.dns=ALL-UNNAMED --add-exports
> > java.base/sun.net.util=ALL-UNNAMED
> >
> > We have found ZGC to behave excellently for the workload of a
> > RegionServer. When we were on G1 we sometimes had long GC pauses that
> > introduced request latency. ZGC eliminated this problem because its
> > pauses are only microseconds. Our only problem was with how ZGC
> > interacted with the Neoverse N1 CPUs we were using that I documented
> > at https://product.hubspot.com/blog/its-never-a-hardware-bug-until-it-is,
> > but this would only affect you if you were using that CPU.
> >
> > Charles
> >
> >
> >
> > On Wed, Sep 23, 2026 at 4:20 AM Junegunn Choi <[email protected]> wrote:
> > >
> > > Hi all,
> > >
> > > I'm working on updating HBase's Java support matrix as part of
> > > HBASE-29546 [1]. The proposed update is in PR #8691 [2]. I'd like to
> > > hear from anyone running HBase 2.6 or later on JDK 21 or a newer JDK.
> > >
> > > As one data point, we've been running our HBase 2.4 and 2.6 servers in
> > > production on JDK 21 to use Generational ZGC.
> > >
> > > Production experience would be particularly helpful, but testing
> > > results and unsuccessful upgrade attempts are also welcome.
> > >
> > > If you have tried this combination, could you share:
> > >
> > > - HBase and Hadoop versions, including any vendor distribution or
> > > custom patches.
> > > - JDK distribution and version, and whether you use it for HBase
> > > servers, clients, or both.
> > > - Whether this is production or testing, and how long you have used it.
> > > - Any compatibility issues, required JVM flags, or workarounds.
> > > - Any changes in performance, GC behavior, or stability compared with
> > > your previous JDK.
> > >
> > > A short reply is fine. Reports that everything works without issues
> > > are useful too. These experiences will help us assess the support
> > > levels and document any limitations.
> > >
> > > [1] https://issues.apache.org/jira/browse/HBASE-29546
> > > [2] https://github.com/apache/hbase/pull/8691
> > >
> > > Thanks,
> > > Junegunn

Reply via email to