Skip to content

feat: upgrade TinkerPop to 3.8.1 and support JDK 21#3078

Draft
xf20054658 wants to merge 3 commits into
apache:masterfrom
xf20054658:upgrade/tinkerpop-3.8.1-jdk21
Draft

feat: upgrade TinkerPop to 3.8.1 and support JDK 21#3078
xf20054658 wants to merge 3 commits into
apache:masterfrom
xf20054658:upgrade/tinkerpop-3.8.1-jdk21

Conversation

@xf20054658

Copy link
Copy Markdown

Changes

1. Upgrade TinkerPop 3.5.1 → 3.8.1

  • Update tinkerpop.version and GREMLIN_VERSION
  • Add gremlin-util dependency
  • Adapt all API breaking changes:
    • BiPredicatePBiPredicate
    • AggregateGlobalStep/AggregateLocalStepAggregateStep
    • HasContainerHolderHasContainerHolder<S, E> (generic)
    • MutatingConfiguring
    • RequestMessage/ResponseMessage/ResponseStatusCode package migration
    • Tokens class removed → string literals
    • StoreTest removed
  • Upgrade maven-compiler-plugin 3.1 → 3.11.0
  • Upgrade lombok 1.18.30 → 1.18.34

2. Support JDK 21

  • Update maven.compiler.source/target from 11 to 21
  • Add JDK 21 to CI matrix (keep JDK 11)
  • Upgrade actions/setup-java from v3 to v4
  • Upgrade Docker base images to eclipse-temurin:21

Verification

  • All 40 modules compile successfully on JDK 21
  • mvn clean compile -DskipTests passed

Related Files

27 files changed, detailed changelog in hugegraph-server/update.md

1. Upgrade TinkerPop from 3.5.1 to 3.8.1:
   - Update tinkerpop.version in pom.xml files
   - Update GREMLIN_VERSION constant in CoreVersion.java
   - Add gremlin-util dependency
   - Adapt API breaking changes:
     * BiPredicate -> PBiPredicate (ConditionP, Condition)
     * AggregateGlobalStep/AggregateLocalStep -> AggregateStep
     * HasContainerHolder -> HasContainerHolder<S, E>
     * Mutating -> Configuring (HugePrimaryKeyStrategy)
     * RequestMessage/ResponseMessage migrated to gremlin.util.message
     * Tokens constants replaced with string literals
     * StoreTest removed (ProcessBasicSuite)
   - Upgrade maven-compiler-plugin 3.1 -> 3.11.0
   - Upgrade lombok 1.18.30 -> 1.18.34

2. Support JDK 21 (keep JDK 11 compatibility):
   - Update maven.compiler.source/target from 11 to 21
   - Add JDK 21 to CI matrix in all workflows
   - Upgrade actions/setup-java from v3 to v4
   - Upgrade Docker base images from eclipse-temurin:11 to eclipse-temurin:21

All 40 modules compile successfully on JDK 21.
@dosubot dosubot Bot added size:L This PR changes 100-499 lines, ignoring generated files. api Changes of API ci-cd Build or deploy dependencies Incompatible dependencies of package gremlin TinkerPop gremlin labels Jun 30, 2026

@imbajin imbajin left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking: yes. Summary: The PR has release-blocking build and dependency-metadata issues: Java 11 matrix jobs cannot compile a Java 21 target, and the upgraded TinkerPop/Lombok dependency set is not reflected in distribution metadata. Evidence: static diff shows source/target 21 with JDK 11 CI matrices; current install-dist metadata still lists TinkerPop 3.5.1/Lombok 1.18.24 and lacks gremlin-util; JDK 21 scoped compile passed locally; GitHub reports no checks.

Comment thread pom.xml
<release.name>hugegraph</release.name>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<maven.compiler.source>21</maven.compiler.source>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking: yes. This changes the whole reactor to Java 21 bytecode while several workflows still run Java 11 matrix legs. Those jobs will invoke Maven under JDK 11 with source/target 21, which javac 11 cannot compile; either keep the compiler release/source/target compatible with Java 11, or remove the JDK 11 matrix entries and update the compatibility claim.

Comment thread hugegraph-server/pom.xml
</dependency>
<dependency>
<groupId>org.apache.tinkerpop</groupId>
<artifactId>gremlin-util</artifactId>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking: yes. Adding gremlin-util and upgrading TinkerPop/Lombok changes the third-party dependency set, but no install-dist release metadata changed. The current known-dependencies/LICENSE entries still list TinkerPop 3.5.1 and Lombok 1.18.24 and have no gremlin-util entry, so refresh known-dependencies plus LICENSE/NOTICE/licenses before merge.

@contrueCT

Copy link
Copy Markdown
Contributor

Hi, thanks for your attention and contribution to this upgrade work.

I’m currently working on the TinkerPop and JDK upgrade as well, although I haven’t opened a PR against the main HugeGraph repository yet. I have created an issue to track the related work and discussion here: #3069

Maybe we can align on the upgrade scope and avoid duplicated work. Thanks again for taking the time to work on this!

@imbajin imbajin marked this pull request as draft July 3, 2026 12:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

api Changes of API ci-cd Build or deploy dependencies Incompatible dependencies of package gremlin TinkerPop gremlin size:L This PR changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants