imbajin commented on code in PR #3401:
URL: https://github.com/apache/hugegraph/pull/3401#discussion_r4365418937
##########
hugegraph-store/hg-store-dist/docker/docker-entrypoint.sh:
##########
@@ -55,9 +61,17 @@ require_env "HG_STORE_RAFT_ADDRESS"
: "${HG_STORE_REST_PORT:=8520}"
: "${HG_STORE_DATA_PATH:=/hugegraph-store/storage}"
+# Preserve mounted business configuration in the ordinary image. An explicitly
+# selected runtime (including the Topling image's default) configures both
sides.
+ROCKSDB_JSON=""
+if [[ -n "${TOPLINGDB_ROCKSDB_PROVIDER:-}" ]]; then
+ ROCKSDB_JSON="\"rocksdb\": { \"provider\": \"${ROCKSDB_PROVIDER}\" },"
Review Comment:
⚠️ Important: Preserve the selected provider above PD-managed configuration.
This JSON sets `rocksdb.provider=topling`, but when the local file is absent or
`S:Timestamp` is at least its mtime, `PdConfigureListener.updatePdConfig()`
inserts the persisted PD configuration with `sources.addFirst()`. A retained
`application-pd.yml` can contain the shipped `provider: rocksdb`, overriding
this JSON. `StoreNodeApplication` then runs `RocksDBRuntime.verify()` after the
listener and throws because the loaded JNI is Topling. A Spring 5.3.27
property-source probe confirms `topling` becomes `rocksdb` after adding the PD
source. Keep explicit image/provider selection above that source and add a
regression covering retained PD configuration followed by runtime verification;
the current entrypoint test only checks generated JSON.
##########
.github/workflows/pd-store-ci.yml:
##########
@@ -189,6 +189,7 @@ jobs:
run: |
bash $TRAVIS_DIR/test-topling-selection.sh
bash
hugegraph-store/hg-store-dist/src/assembly/travis/test-store-preloads.sh
+ bash docker/test-topling-images.sh
Review Comment:
⚠️ Important: Route this contract script to the job that executes it. This
is its only invocation and it is inside the PD job, but invoking the current
selector with only `docker/test-topling-images.sh` returns `{'docker'}`; no
`pd_store`/PD job runs. A later script-only repair can pass CI without
executing the changed tests. Add a PD entry for this path in `CONTRACT_SUITES`,
or execute the test in the selected Docker job, and cover the script-only
selection case. The workflow edit selects PD for this revision, so this is a
future-change coverage gap rather than a claim that the current run skipped the
test.
##########
helm/hugegraph/README.md:
##########
@@ -97,6 +97,57 @@ Store's wait init container and Helm test reuse the Store
and Server images,
which already contain `curl`; no separate curl image is needed by default.
See the [complete registry example](examples/values-internal-registry.yaml).
+### ToplingDB runtime
+
+Switch an existing release to ToplingDB with one value while keeping its values
+and persistent volumes:
+
+```bash
+helm upgrade hugegraph ./helm/hugegraph -n hugegraph --reuse-values \
+ --set global.runtimeVariant=topling --wait --timeout 15m
+```
+
+Use matching standard/Topling images of the same HugeGraph version. Development
+`latest` and `latest-topling` tags are published independently and may refer to
+different source revisions; select a matching build before changing the
runtime.
+For a new installation, use the same runtime parameter:
+
+```bash
+helm install hugegraph-topling ./helm/hugegraph -n hugegraph-topling \
+ --create-namespace --set global.runtimeVariant=topling --wait --timeout 15m
+```
+
+This selects the matching `-topling` image tags for PD, Store and HStore
Server,
+including the Store wait container and Helm test image. PD and Store own the
+ToplingDB databases; Server continues to use `backend=hstore`. Hubble keeps its
+independent image. Linux amd64 scheduling is added to these HugeGraph workloads
+and the test hook. Contradictory OS/architecture node selectors are rejected;
+other scheduling constraints are preserved. The deployment images already
include
+the verified community JNI; no artifact URL or checksum is needed in Helm
values.
+For source image builds, `RUNTIME_VARIANT=topling` uses the release pinned in
+[`docker/topling-runtime.env`](../../docker/topling-runtime.env).
+
+The current JNI requires a Haswell-compatible x86-64 CPU, including AVX2 and
BMI2.
+The architecture selector does not inspect CPU extensions; use a compatible
node pool.
+
+A component tag such as `1.8.0` becomes `1.8.0-topling`; tags already ending in
+`-topling` are kept. Custom repositories and `global.imageRegistry` work as
usual.
+An explicit `image.digest` remains exact and takes priority over the derived
tag;
Review Comment:
🧹 Minor: Document the actual digest restriction. These instructions say to
supply the matching Topling `image.digest`, but
`templates/runtime-variant-validation.yaml` unconditionally fails on any
nonempty PD, Store or Server digest when `global.runtimeVariant=topling`.
Following this guidance therefore prevents Helm rendering. Explain that these
digests must currently be cleared in favor of matching version tags, and align
`docs/operations.md`, or implement an explicit supported model for
variant-specific digests.
--
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]