Skip to content

Update HBASE to 2.3.7 in PXF#62

Merged
tuhaihe merged 3 commits intoapache:mainfrom
ostinru:hbase
Feb 12, 2026
Merged

Update HBASE to 2.3.7 in PXF#62
tuhaihe merged 3 commits intoapache:mainfrom
ostinru:hbase

Conversation

@ostinru
Copy link
Collaborator

@ostinru ostinru commented Feb 11, 2026

hbase-client update

Update hbase-client from 1.3.2 to 2.3.7 (latest version with minimal 3rd-party library updates) with following decision made:

  • Use hadoop 2 version - Despite of the fact that we are using hadoop 3 in automation tests, we still using hadoop2 libs for all other connectors.
  • Use shaded version of libraries when it relocates java-packages to new namespaces
  • Use non-shaded version of libraries when it just bundles several jars to single fat-jar. Fat jars hides dependencies from gradle, however puts classes on classpath. This will lead to unpredictable issues.

Fortunately, hbase-client:2.3.7 depends on hadoop-2.10.0 that we are using! No changes here.

update details

runtimeClasspath - Runtime classpath of source set 'main'.
\--- org.apache.hbase:hbase-client:2.3.7
     +--- org.apache.hbase.thirdparty:hbase-shaded-protobuf:3.3.0
     +--- org.apache.hbase:hbase-common:2.3.7
     |    +--- org.apache.hbase:hbase-logging:2.3.7
     |    +--- org.apache.hbase.thirdparty:hbase-shaded-miscellaneous:3.3.0
     |    |    \--- com.google.errorprone:error_prone_annotations:2.3.4
     |    +--- org.apache.hbase.thirdparty:hbase-shaded-gson:3.3.0
     |    +--- org.apache.hbase.thirdparty:hbase-shaded-netty:3.3.0
     |    +--- commons-codec:commons-codec:1.13
     |    +--- org.apache.commons:commons-lang3:3.9
     |    +--- commons-io:commons-io:2.11.0
     |    +--- com.google.protobuf:protobuf-java:2.5.0
     |    +--- org.apache.htrace:htrace-core4:4.2.0-incubating
     |    +--- org.apache.commons:commons-crypto:1.0.0
     |    +--- org.apache.yetus:audience-annotations:0.5.0
     |    \--- org.apache.hadoop:hadoop-common:2.10.0 -> 2.10.2
     +--- org.apache.hbase:hbase-hadoop-compat:2.3.7
     |    +--- org.apache.hbase.thirdparty:hbase-shaded-miscellaneous:3.3.0 (*)
     |    +--- org.apache.hbase:hbase-metrics-api:2.3.7
     |    |    +--- org.apache.hbase:hbase-common:2.3.7 (*)
     |    |    +--- org.apache.commons:commons-lang3:3.9
     |    |    +--- org.apache.hbase.thirdparty:hbase-shaded-miscellaneous:3.3.0 (*)
     +--- org.apache.hbase:hbase-hadoop2-compat:2.3.7
     |    +--- org.apache.hbase:hbase-hadoop-compat:2.3.7 (*)
     |    +--- org.apache.hbase:hbase-common:2.3.7 (*)
     |    +--- org.apache.hbase:hbase-metrics:2.3.7
     |    |    +--- org.apache.hbase.thirdparty:hbase-shaded-miscellaneous:3.3.0 (*)
     |    |    +--- org.apache.hbase:hbase-common:2.3.7 (*)
     |    |    +--- org.apache.hbase:hbase-metrics-api:2.3.7 (*)
     |    |    +--- io.dropwizard.metrics:metrics-core:3.2.6
     |    +--- org.apache.hbase:hbase-metrics-api:2.3.7 (*)
     |    +--- org.apache.hadoop:hadoop-common:2.10.0 -> 2.10.2 (*)
     |    +--- javax.activation:javax.activation-api:1.2.0
     |    +--- org.apache.commons:commons-lang3:3.9
     |    +--- org.apache.hbase.thirdparty:hbase-shaded-miscellaneous:3.3.0 (*)
     +--- org.apache.hbase:hbase-protocol-shaded:2.3.7
     |    +--- org.apache.hbase.thirdparty:hbase-shaded-protobuf:3.3.0
     +--- org.apache.hbase:hbase-protocol:2.3.7
     |    +--- com.google.protobuf:protobuf-java:2.5.0
     +--- commons-codec:commons-codec:1.13
     +--- commons-io:commons-io:2.11.0
     +--- org.apache.commons:commons-lang3:3.9
     +--- org.slf4j:slf4j-api:1.7.30 -> 1.7.36
     +--- org.apache.hbase.thirdparty:hbase-shaded-miscellaneous:3.3.0 (*)
     +--- com.google.protobuf:protobuf-java:2.5.0
     +--- org.apache.hbase.thirdparty:hbase-shaded-netty:3.3.0
     +--- org.apache.zookeeper:zookeeper:3.5.7 (*)
     +--- org.apache.htrace:htrace-core4:4.2.0-incubating
     +--- org.jruby.jcodings:jcodings:1.0.18
     +--- org.jruby.joni:joni:2.1.11
     |    \--- org.jruby.jcodings:jcodings:1.0.13 -> 1.0.18
     +--- io.dropwizard.metrics:metrics-core:3.2.6 (*)
     +--- org.apache.commons:commons-crypto:1.0.0
     +--- org.apache.yetus:audience-annotations:0.5.0
     +--- org.apache.hadoop:hadoop-auth:2.10.0 -> 2.10.2 (*)
     \--- org.apache.hadoop:hadoop-common:2.10.0 -> 2.10.2 (*)

(*) - dependencies omitted (listed previously)

Other changes

  • Automation tests: upgrade hbase to 2.3.7

@ostinru
Copy link
Collaborator Author

ostinru commented Feb 11, 2026

Hello!

Here I am trying to upgrade HBASE dependency to something not so old.
I am trying new aproach - extract (./gradlew :dependencies --configuration runtimeClasspath) and manually check all dependencies one-by-one. So, dependency tree is present in commit message. Then I have added all dependecies to the build.gradle, so it explicit now.

Then I checked all hbase versions. 2.3.7 was latest version with pre 3.5.x zookeeper. After this version, dependency tree changes significantly.

We have 0 real users of HBASE connector. So, I won't be able to check that it works for users. Only automation tests.

@MisterRaindrop
Copy link
Collaborator

I think having automated tests that pass should be sufficient. If there are any related bugs, they can be reported to the community for fixes.

MisterRaindrop
MisterRaindrop approved these changes Feb 12, 2026
@MisterRaindrop MisterRaindrop requested review from MisterRaindrop and removed request for MisterRaindrop February 12, 2026 03:09
MisterRaindrop

This comment was marked as resolved.

@ostinru ostinru marked this pull request as ready for review February 12, 2026 05:52
@MisterRaindrop MisterRaindrop self-requested a review February 12, 2026 08:25
@tuhaihe tuhaihe merged commit 50e908b into apache:main Feb 12, 2026
24 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants