docs(hbase): add HugeGraph Docker + HBase validation runbook (issue #…3030)#3041
docs(hbase): add HugeGraph Docker + HBase validation runbook (issue #…3030)#3041vaijosh wants to merge 1 commit into
Conversation
…pache#3030) - improved `docker/hbase/README.md`. Added sections for "Standalone HugeGraph" and "Docker HugeGraph" and steps to verify the hbase backend -Used the steps in README.md file to verify the issue apache#3030. It its unreproducible in latest master branch.
There was a problem hiding this comment.
Pull request overview
Rewrites the docker/hbase/ HBase backend testing guide into a shorter dual-path runbook (standalone HugeGraph against Dockerized HBase, vs. fully containerized HugeGraph+HBase on a shared Docker network), and makes the HBase container's advertised hostname configurable so the same image works in both topologies. Originated from investigating issue #3030, which could not be reproduced on master; the underlying server change set is doc/operational only.
Changes:
- Restructures
docker/hbase/README.mdaround two explicit setup paths, adds REST traverser verification steps (/traversers/kout,/traversers/rays) and a troubleshooting table. - Adds
HBASE_HOSTNAME/HBASE_MASTER_HOSTNAME/HBASE_REGIONSERVER_HOSTNAMEenv wiring indocker-compose.hbase.ymlwith ahbasefallback. - Adds a
set_xml_property_valuehelper inentrypoint.shthat rewriteshbase.master.hostnameandhbase.regionserver.hostnameinhbase-site.xmlat container start.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
| docker/hbase/README.md | Replaces the long testing guide with a two-path runbook and adds REST verification + troubleshooting table. |
| docker/hbase/docker-compose.hbase.yml | Makes container hostname configurable and forwards HBase hostname env vars into the container. |
| docker/hbase/entrypoint.sh | Patches hbase-site.xml master/regionserver hostnames at runtime from env vars before starting daemons. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| docker compose -p hg-hbase -f docker/hbase/docker-compose.hbase.yml down -v | ||
| docker compose -p hg-hbase -f docker/hbase/docker-compose.hbase.yml build --no-cache hbase | ||
| docker compose -p hg-hbase -f docker/hbase/docker-compose.hbase.yml up -d | ||
| docker compose -p hg-hbase -f docker/hbase/docker-compose.hbase.yml logs -f hbase |
| docker compose -p hg-hbase -f docker/hbase/docker-compose.hbase.yml down -v | ||
| docker compose -p hg-hbase -f docker/hbase/docker-compose.hbase.yml build --no-cache hbase | ||
| HBASE_HOSTNAME=hbase docker compose -p hg-hbase -f docker/hbase/docker-compose.hbase.yml up -d | ||
| docker compose -p hg-hbase -f docker/hbase/docker-compose.hbase.yml logs -f hbase |
| ```bash | ||
| docker exec hg-hbase-test bash -c ' | ||
| for t in $(echo "list" | hbase shell -n 2>/dev/null | grep "^default_hugegraph"); do | ||
| echo "disable '"'"'$t'"'"'; drop '"'"'$t'"'"'" | ||
| done | hbase shell | ||
| ' | ||
| docker rm -f hg-server-dev-hbase | ||
| docker compose -p hg-hbase -f docker/hbase/docker-compose.hbase.yml down -v | ||
| ``` |
| set_xml_property_value() { | ||
| local property_name="$1" | ||
| local property_value | ||
| property_value=$(escape_sed_replacement "$2") | ||
|
|
||
| sed -i "/<name>${property_name//./\\.}<\\/name>/ {n; s|<value>.*</value>|<value>${property_value}</value>|;}" "${HBASE_SITE_XML}" | ||
| } | ||
|
|
||
| set_xml_property_value "hbase.master.hostname" "${HBASE_MASTER_HOSTNAME}" | ||
| set_xml_property_value "hbase.regionserver.hostname" "${HBASE_REGIONSERVER_HOSTNAME}" |
imbajin
left a comment
There was a problem hiding this comment.
Found one runbook blocker in the standalone HugeGraph + Docker HBase path.
| # 1) Start HBase | ||
| docker compose -p hg-hbase -f docker/hbase/docker-compose.hbase.yml down -v | ||
| docker compose -p hg-hbase -f docker/hbase/docker-compose.hbase.yml build --no-cache hbase | ||
| docker compose -p hg-hbase -f docker/hbase/docker-compose.hbase.yml up -d |
There was a problem hiding this comment.
Option 1 configures the host-side HugeGraph runtime with hbase.hosts=localhost, but this startup command leaves the HBase container advertising the default hostname hbase through the new entrypoint.sh rewrite. A host process can reach ZooKeeper on localhost:2181, then HBase redirects it to hbase:16000/16020, which normally is only resolvable inside the Docker network. Please override the standalone path to advertise host-reachable names, for example HBASE_MASTER_HOSTNAME=localhost HBASE_REGIONSERVER_HOSTNAME=localhost docker compose ... up -d, or document the required host mapping so this path works out of the box.
Description
While investigating issue #3030, the underlying bug could not be directly reproduced on the current master branch. However, during the investigation, I identified several improvements for docker/hbase/README.md that will be useful for verifying HBase-related issues in the future.
Specifically, this PR splits the local verification process into two clear paths (Standalone vs. Fully Containerized). It also enhances the HBase Docker artifacts by making hbase.master.hostname and hbase.regionserver.hostname fully configurable via environment variables.
Main Changes
1. Documentation Updates (
docker/hbase/README.md)perlscripts to dynamically swap backend/serializer properties (rocksdbhbase) and rewrite host configurations on the fly./traversers/REST APIs (kout,rays) to securely validate graph space persistence.UnknownHostExceptionor port conflicts) directly to their respective resolutions.2. Docker Environments (
docker/hbase/)docker-compose.hbase.yml): Replaced hardcoded hostnames with a configurable environment variable fallback (${HBASE_HOSTNAME:-hbase}).entrypoint.sh): Added aset_xml_property_valuehelper function inside the entrypoint sequence. This cleanly updateshbase.master.hostnameandhbase.regionserver.hostnameconfigurations insidehbase-site.xmlat runtime based on the container environment.Verifying of the issue
Verified the issue as follows
mvn clean package -DskipTests), initializing the store backend (init-store.sh), and running the sequential REST traversal scripts.hugegraph/server:devtarget image and executing the one-shot store initializations inside an isolated container network.hugegraph-serverlogs were entirely clean of the targeted warnings during operation; specifically, no instances of the following log patterns were observed:Does this PR potentially affect the following parts?
Documentation Status
Doc - Done(The primary objective of this PR is introducing the HBase validation runbook docs)