imbajin opened a new pull request, #3275:
URL: https://github.com/apache/hugegraph/pull/3275

   ## Purpose of the PR
   
   Enable opt-in ToplingDB for Server, PD and Store using a verified 
component-local Java/JNI pair. Standard RocksDB remains the default. This is 
stage 2/4 after the Java 17 baseline; dedicated distributions and 
Docker/Compose follow separately.
   
   ## Fastest way to try it
   
   ![Prepare, select, initialize and start 
ToplingDB](https://raw.githubusercontent.com/hugegraph/hugegraph/task/topling-core-20261005/docs/images/topling-quickstart.png)
   
   Use a stopped standalone Server distribution on Linux x86_64 with a Java 17 
JDK and a trusted, native-compatible Topling JNI JAR:
   
   ```bash
   export TOPLING_JNI_JAR=/absolute/path/to/rocksdbjni-topling.jar
   export TOPLING_JNI_SHA256='<trusted-64-character-sha256>'
   bash bin/prepare-topling.sh
   ```
   
   Set `backend=rocksdb` and `rocksdb.provider=topling` in the selected graph 
properties. Use initially empty, service-writable external data/WAL 
directories. Then:
   
   ```bash
   export TOPLINGDB_ROCKSDB_PROVIDER=topling
   bash bin/init-store.sh
   bash bin/start-hugegraph.sh
   ```
   
   For PD and Store, prepare each component separately, set `rocksdb.provider` 
in its existing YAML mapping and use its own start script. See [the complete 
guide](https://github.com/hugegraph/hugegraph/blob/task/topling-core-20261005/docs/toplingdb.md)
 for dependencies and paths. Existing database conversion is outside this 
change.
   
   ## Main Changes
   
   Preparation checks the trusted hash, native dependencies and actual 
EasyMigrate configuration behavior, then binds the selected Java/native pair 
with a checksum receipt. Startup refuses changed receipts and competing JNI. 
Prepared directories/files are readable across service users without permitting 
their modification.
   
   Server preserves native column-family ownership and routes OLAP cleanup to 
its owning database. Request cleanup releases native leases while keeping graph 
cache identity and invalidation listeners until graph close. PD/Store drain 
producers before native owners; Store recovery/fatal exits are coordinated 
outside callback locks. Metrics sessions are returned on success and failure.
   
   The branch is shared with [fork PR 
#266](https://github.com/hugegraph/hugegraph/pull/266). General query/scan 
lifecycle [#261](https://github.com/hugegraph/hugegraph/pull/261), snapshot 
recovery [#267](https://github.com/hugegraph/hugegraph/pull/267) and review 
policy [upstream #3274](https://github.com/apache/hugegraph/pull/3274) remain 
separate. No fork-only CI rerun helpers are included.
   
   ## Verifying these changes
   
   - [ ] Trivial rework / code cleanup without any test coverage. (No Need)
   - [x] Already covered by existing tests and added focused regression tests.
   - [x] Need tests and can be verified as follows:
   
   Java 17 native/configuration, lifecycle/cache/OLAP/Auth, metrics/heartbeat 
and real shutdown-hook regressions have old/new controls and frozen source 
bindings. The normal package entry now compiles and runs the real Node destroy 
child test despite Spring Boot's executable-jar layout. A complete earlier 
HStore package run covered writes, reads, normal stop, restart and index 
persistence; it predates the latest Java fixes and is not current-head service 
acceptance. Final combination/style validation and new-head CI are still being 
completed. Local Linux amd64 validation runs under emulation on Darwin arm64; 
focused/component tests do not replace live distributed or production 
acceptance.
   
   ## Does this PR potentially affect the following parts?
   
   - [ ] Dependencies
   - [x] Modify configurations
   - [ ] The public API
   - [x] Other affects: optional native runtime selection and resource lifecycle
   - [ ] Nope
   
   ## Documentation Status
   
   - [ ] `Doc - TODO`
   - [x] `Doc - Done`: `docs/toplingdb.md` and [paired website PR 
#510](https://github.com/apache/hugegraph-doc/pull/510); coordinate both merges.
   - [ ] `Doc - No Need`
   


-- 
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