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
