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]

Reply via email to