Skip to content

HBASE-30087: Create a nightly Jenkins test for the Read-Replica feature - #8809

Open
kgeisz wants to merge 1 commit into
apache:masterfrom
kgeisz:HBASE-30087
Open

kgeisz wants to merge 1 commit into
apache:masterfrom
kgeisz:HBASE-30087

Conversation

@kgeisz

@kgeisz kgeisz commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

https://issues.apache.org/jira/browse/HBASE-30087

AI Usage

Some changes were generated using Claude Opus 4.6.

Summary

HBase's Read-Replica feature was merged into master in PR #8044. This pull request adds Jenkins integration tests for Read-Replica.

The typical HBase mini-cluster integration test framework cannot be used to test the Read-Replica feature because each cluster in a read-replica setup must have a unique meta table name. These mini-clusters run in the same JVM and end up sharing the same static META_TABLE_NAME variable. (PR #7730 is an open pull request to make the meta table name non-static.)

Instead, these integration tests use two Docker containers running HBase that are part of a read-replica setup. An HBase Docker client uses Python to send HBase commands to the HBase shell within each container. This allows us to run each HBase cluster in its own isolated JVM.

The Read-Replica integration tests reside in dev-support/read-replica. The tests have their own Jenkinsfile that runs the hbase_nightly_read_replica_test.sh driver script, which does the following:

  1. Builds a Docker test environment image using dev-support/docker/Dockerfile and starts this container. The container helps with portability for running tests either locally or in Jenkins.

Once the test environment container is up and running, the driver script runs run_read_replica_integration_tests.sh inside of this container, which does the following:

  1. Sets up the test environment - creates Python env, compile Protobuf, etc.
  2. Builds the hbase-docker image, which is used to establish a read-replica setup between two Docker containers running HBase.
  3. Starts the hbase-docker containers using docker compose. These containers are run alongside the test env container by bind-mounting the host's Docker socket (a Docker-outside-of-Docker (DooD) setup)
  4. Uses pytest to run several integration tests
  5. Creates a test report to be published by Jenkins (similar to the Nightly Test's console report)

These integration tests have been run in Jenkins against this feature branch (HBASE-30087). We now would like to merge this feature branch to the master so the Read-Replica feature can continue to be tested against new changes to HBase.

Results Examples

Previous runs against the HBASE-30087 branch, including successful runs, can be found here:

https://ci-hbase.apache.org/job/HBase-Read-Replica-Tests/job/HBASE-30087/

Here is an example of a console report from a successful test run:

Screenshot 2026-10-15 at 2 58 41 PM

Here is an example of a failed run. When a test fails, the test's logs are linked along with the HBase logs from each read-replica Docker container:

Screenshot 2026-10-15 at 2 58 15 PM

…re (apache#8517)

- Changes were partially generated by Claude Opus 4.6
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.

1 participant