chore(server): upgrade tinkerpop from 3.5 → 3.7.2 by n-WN · Pull Request #2884 · apache/hugegraph

added 3 commits

September 30, 2025 19:26
Upgrade Apache TinkerPop dependency to 3.7.2 to support Java 17 compatibility
while maintaining Java 11 backward compatibility.

Changes:
- Upgrade tinkerpop.version from 3.5.1 to 3.7.2 in hugegraph-server/pom.xml
- Update BiPredicate to PBiPredicate in query condition implementations
  (Condition.java, ConditionP.java, TraversalUtil.java)
- Fix package relocations: org.apache.tinkerpop.gremlin.driver.* -> org.apache.tinkerpop.gremlin.util.*
- Update serializer class names: GraphSONMessageSerializerV{1,2,3}d0 -> GraphSONMessageSerializerV{1,2,3}
- Migrate all Gremlin server and driver configuration files

This upgrade addresses the main blocking issue for Java 17 migration.
This commit fixes the remaining issues found after the initial TinkerPop 3.7.2 upgrade:

1. Update CoreVersion.GREMLIN_VERSION constant from "3.5.1" to "3.7.2"
   - Fixes version API returning incorrect Gremlin version
   - Located in hugegraph-server/hugegraph-core/.../CoreVersion.java

2. Update Docker multi-node deployment configurations (12 files)
   - Fix package path: org.apache.tinkerpop.gremlin.driver.ser.* -> org.apache.tinkerpop.gremlin.util.ser.*
   - Remove deprecated "d0" suffix: GraphSONMessageSerializerV{1,2,3}d0 -> GraphSONMessageSerializerV{1,2,3}
   - Affects docker/configs/server{1,2,3}-conf/*.yaml
   - Required for Docker Compose multi-server cluster deployment

These files were missed in the initial upgrade (commit 44a6c3a) but are now
required for complete TinkerPop 3.7.2 compatibility across all deployment scenarios.
Remove gremlin-groovy-test 3.2.11 from test dependencies. This module was
officially deprecated in TinkerPop 3.2.4 and removed in 3.3.0 (March 2017).
The test functionality has been consolidated into gremlin-test module.

Verified that:
- No code references to gremlin-groovy-test in the codebase
- Project compiles successfully without this dependency
- TinkerPop 3.7.2 does not provide gremlin-groovy-test

References:
- TinkerPop 3.3.0 Upgrade Guide: https://tinkerpop.apache.org/docs/3.3.0/upgrade/
- JIRA TINKERPOP-1612: https://issues.apache.org/jira/browse/TINKERPOP-1612

@n-WN

Add --add-opens JVM argument to allow reflection access to java.base/java.util
for CollectionFactoryTest. This follows Apache TinkerPop's approach for handling
deep reflection in tests when running on Java 17+.

Issue: CollectionFactoryTest uses Whitebox.getInternalState() to verify internal
capacity of JDK collection classes (ArrayList, HashMap), which requires opening
the java.util module in Java 17 due to strong encapsulation.

Solution: Add argLine with --add-opens java.base/java.util=ALL-UNNAMED to the
unit-test execution in surefire plugin configuration.

Verified:
- Java 17: 398 tests passed, 0 failed
- Java 11: backward compatible (parameter ignored)

Reference: https://github.com/apache/tinkerpop/blob/384e9a730c735cd386812d463c6f6922da847988/pom.xml#L214

@imbajin imbajin changed the title Upgrade/tinkerpop 3.7.2 chore(server): upgrade tinkerpop from3.7.2

Nov 5, 2025

@imbajin imbajin changed the title chore(server): upgrade tinkerpop from3.7.2 chore(server): upgrade tinkerpop from 3.5 → 3.7.2

Nov 5, 2025