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