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]

Reply via email to