yugaaank opened a new pull request, #3104: URL: https://github.com/apache/hugegraph/pull/3104
## Summary Adds a self-contained `run-riscv64-smoke.sh` script that builds the HugeGraph Server distribution on the host (x86-64/arm64), then runs it inside an emulated `linux/riscv64` container via Docker QEMU to verify the RISC-V port works end-to-end. ## What it tests The script covers every item in [HUGEGRAPH-3099](https://github.com/apache/hugegraph/issues/3099): - **Architecture assertion** — confirms the container is riscv64 - **RocksDB JNI** — open/put/get/close via a compiled Java program against rocksdbjni, with `LD_PRELOAD=libatomic.so.1` for RISC-V - **HugeGraph init + health** — entrypoint runs `init-store.sh`, polls `GET /graphs` until 200 - **REST schema CRUD** — propertykey, vertexlabel, edgelabel, vertices, edge, then asserts `GET /vertices` and `GET /edges` return data - **Gremlin query** — `g.V().hasLabel("person").count() == 2` via port 8182 with graph aliases binding - **Restart + persistence** — restarts the container, re-checks health, verifies vertices survived ## Expected output ``` PASS architecture: riscv64 PASS RocksDB: open / put / get / close PASS HugeGraph: init / health / REST CRUD / Gremlin / restart / persistence PASS cleanup: container, volume, and image removed ``` ## Approach Single self-contained script (no CI pipeline changes). Designed for contributors to run locally: ```bash ./run-riscv64-smoke.sh # builds dist + runs test ./run-riscv64-smoke.sh path/to/server-dist.tar.gz # skip build KEEP=1 ./run-riscv64-smoke.sh # leave container for debugging ``` ## Key design decisions - **Reuses the repo's own `docker-entrypoint.sh`** so `init-store.sh` runs before the server starts (skipping it caused silent failures) - **Raises startup timeout to 1800s** — the analyzer dictionary loads twice under QEMU (~3.5 min each) plus Groovy warmup - **`--memory=4g`** to prevent host OOM under QEMU emulation - **`curl --compressed`** — the server returns gzip by default regardless of `Accept` header - **jq runs inside the container** — not available on all hosts - **G1RSetUpdatingPauseTimePercent stripped** — not supported on OpenJDK 11 RISC-V build - **Unique resource names** via timestamp — no conflicts with parallel runs, no leftover cruft - **EXIT trap with full cleanup** — removes container, volume, image, and temp dirs; dumps diagnostics on failure ## Coexistence with PR #3102 This PR takes a different approach than [#3102](https://github.com/apache/hugegraph/pull/3102) — a single standalone script vs. a multi-file CI pipeline. The two are complementary: the script here is for local contributor validation, while #3102 integrates into CI. Happy to coordinate if a combined approach is preferred. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
