From 44a6c3a9057435286da8db03bd5ebf3dab63c066 Mon Sep 17 00:00:00 2001 From: n-WN <30841158+n-WN@users.noreply.github.com> Date: Tue, 30 Sep 2025 16:28:28 +0000 Subject: [PATCH 1/4] chore: upgrade TinkerPop from 3.5.1 to 3.7.2 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. --- .../hugegraph/api/cypher/CypherClient.java | 4 ++-- .../hugegraph/opencypher/CypherOpProcessor.java | 10 +++++----- .../hugegraph/backend/query/Condition.java | 4 ++-- .../hugegraph/traversal/optimize/ConditionP.java | 5 ++--- .../traversal/optimize/TraversalUtil.java | 16 ++++++++-------- .../static/conf/gremlin-driver-settings.yaml | 2 +- .../src/assembly/static/conf/gremlin-server.yaml | 8 ++++---- .../src/assembly/static/conf/remote-objects.yaml | 2 +- .../src/assembly/static/conf/remote.yaml | 2 +- .../travis/conf-raft1/gremlin-server.yaml | 8 ++++---- .../travis/conf-raft2/gremlin-server.yaml | 8 ++++---- .../travis/conf-raft3/gremlin-server.yaml | 8 ++++---- hugegraph-server/pom.xml | 2 +- 13 files changed, 39 insertions(+), 40 deletions(-) diff --git a/hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/api/cypher/CypherClient.java b/hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/api/cypher/CypherClient.java index 92ae18c54d..31a7655aa0 100644 --- a/hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/api/cypher/CypherClient.java +++ b/hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/api/cypher/CypherClient.java @@ -35,8 +35,8 @@ import org.apache.tinkerpop.gremlin.driver.Cluster; import org.apache.tinkerpop.gremlin.driver.Result; import org.apache.tinkerpop.gremlin.driver.ResultSet; -import org.apache.tinkerpop.gremlin.driver.Tokens; -import org.apache.tinkerpop.gremlin.driver.message.RequestMessage; +import org.apache.tinkerpop.gremlin.util.Tokens; +import org.apache.tinkerpop.gremlin.util.message.RequestMessage; import org.slf4j.Logger; @ThreadSafe diff --git a/hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/opencypher/CypherOpProcessor.java b/hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/opencypher/CypherOpProcessor.java index dfad9b9594..cd0c97fb6a 100644 --- a/hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/opencypher/CypherOpProcessor.java +++ b/hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/opencypher/CypherOpProcessor.java @@ -19,7 +19,7 @@ import static java.util.Collections.emptyMap; import static java.util.Collections.singletonList; import static java.util.Optional.empty; -import static org.apache.tinkerpop.gremlin.driver.message.ResponseStatusCode.SERVER_ERROR; +import static org.apache.tinkerpop.gremlin.util.message.ResponseStatusCode.SERVER_ERROR; import static org.opencypher.gremlin.translation.StatementOption.EXPLAIN; import static org.slf4j.LoggerFactory.getLogger; @@ -33,10 +33,10 @@ import java.util.concurrent.FutureTask; import java.util.concurrent.TimeUnit; -import org.apache.tinkerpop.gremlin.driver.Tokens; -import org.apache.tinkerpop.gremlin.driver.message.RequestMessage; -import org.apache.tinkerpop.gremlin.driver.message.ResponseMessage; -import org.apache.tinkerpop.gremlin.driver.message.ResponseStatusCode; +import org.apache.tinkerpop.gremlin.util.Tokens; +import org.apache.tinkerpop.gremlin.util.message.RequestMessage; +import org.apache.tinkerpop.gremlin.util.message.ResponseMessage; +import org.apache.tinkerpop.gremlin.util.message.ResponseStatusCode; import org.apache.tinkerpop.gremlin.process.traversal.P; import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.DefaultGraphTraversal; diff --git a/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/Condition.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/Condition.java index 09e223e4ca..5adf93a8fd 100644 --- a/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/Condition.java +++ b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/Condition.java @@ -25,10 +25,10 @@ import java.util.Objects; import java.util.Set; import java.util.function.BiFunction; -import java.util.function.BiPredicate; import org.apache.commons.lang.ArrayUtils; import org.apache.hugegraph.backend.id.Id; +import org.apache.tinkerpop.gremlin.process.traversal.PBiPredicate; import org.apache.hugegraph.backend.store.Shard; import org.apache.hugegraph.structure.HugeElement; import org.apache.hugegraph.structure.HugeProperty; @@ -51,7 +51,7 @@ public enum ConditionType { NOT } - public enum RelationType implements BiPredicate { + public enum RelationType implements PBiPredicate { EQ("==", RelationType::equals), diff --git a/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/traversal/optimize/ConditionP.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/traversal/optimize/ConditionP.java index e41a0df706..b850045783 100644 --- a/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/traversal/optimize/ConditionP.java +++ b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/traversal/optimize/ConditionP.java @@ -17,16 +17,15 @@ package org.apache.hugegraph.traversal.optimize; -import java.util.function.BiPredicate; - import org.apache.hugegraph.backend.query.Condition; import org.apache.tinkerpop.gremlin.process.traversal.P; +import org.apache.tinkerpop.gremlin.process.traversal.PBiPredicate; public class ConditionP extends P { private static final long serialVersionUID = 9094970577400072902L; - private ConditionP(final BiPredicate predicate, + private ConditionP(final PBiPredicate predicate, Object value) { super(predicate, value); } diff --git a/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/traversal/optimize/TraversalUtil.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/traversal/optimize/TraversalUtil.java index 11a5c0cee4..ce2a8b5a5e 100644 --- a/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/traversal/optimize/TraversalUtil.java +++ b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/traversal/optimize/TraversalUtil.java @@ -24,7 +24,6 @@ import java.util.List; import java.util.Map; import java.util.Optional; -import java.util.function.BiPredicate; import java.util.function.Function; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -56,6 +55,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.Contains; import org.apache.tinkerpop.gremlin.process.traversal.Order; import org.apache.tinkerpop.gremlin.process.traversal.P; +import org.apache.tinkerpop.gremlin.process.traversal.PBiPredicate; import org.apache.tinkerpop.gremlin.process.traversal.Step; import org.apache.tinkerpop.gremlin.process.traversal.Traversal; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal; @@ -350,7 +350,7 @@ public static void fillConditionQuery(ConditionQuery query, public static Condition convHas2Condition(HasContainer has, HugeType type, HugeGraph graph) { P p = has.getPredicate(); E.checkArgument(p != null, "The predicate of has(%s) is null", has); - BiPredicate bp = p.getBiPredicate(); + PBiPredicate bp = p.getBiPredicate(); Condition condition; if (keyForContainsKeyOrValue(has.getKey())) { condition = convContains2Relation(graph, has); @@ -423,7 +423,7 @@ private static Condition.Relation convCompare2Relation(HugeGraph graph, HugeType type, HasContainer has) { assert type.isGraph(); - BiPredicate bp = has.getPredicate().getBiPredicate(); + PBiPredicate bp = has.getPredicate().getBiPredicate(); assert bp instanceof Compare; return isSysProp(has.getKey()) ? @@ -434,7 +434,7 @@ private static Condition.Relation convCompare2Relation(HugeGraph graph, private static Condition.Relation convCompare2SyspropRelation(HugeGraph graph, HugeType type, HasContainer has) { - BiPredicate bp = has.getPredicate().getBiPredicate(); + PBiPredicate bp = has.getPredicate().getBiPredicate(); assert bp instanceof Compare; HugeKeys key = token2HugeKey(has.getKey()); @@ -462,7 +462,7 @@ private static Condition.Relation convCompare2SyspropRelation(HugeGraph graph, private static Condition.Relation convCompare2UserpropRelation(HugeGraph graph, HugeType type, HasContainer has) { - BiPredicate bp = has.getPredicate().getBiPredicate(); + PBiPredicate bp = has.getPredicate().getBiPredicate(); assert bp instanceof Compare; String key = has.getKey(); @@ -492,7 +492,7 @@ private static Condition convRelationType2Relation(HugeGraph graph, HugeType type, HasContainer has) { assert type.isGraph(); - BiPredicate bp = has.getPredicate().getBiPredicate(); + PBiPredicate bp = has.getPredicate().getBiPredicate(); assert bp instanceof Condition.RelationType; String key = has.getKey(); @@ -505,7 +505,7 @@ private static Condition convRelationType2Relation(HugeGraph graph, public static Condition convIn2Relation(HugeGraph graph, HugeType type, HasContainer has) { - BiPredicate bp = has.getPredicate().getBiPredicate(); + PBiPredicate bp = has.getPredicate().getBiPredicate(); assert bp instanceof Contains; Collection values = (Collection) has.getValue(); @@ -548,7 +548,7 @@ public static Condition convIn2Relation(HugeGraph graph, public static Condition convContains2Relation(HugeGraph graph, HasContainer has) { // Convert contains-key or contains-value - BiPredicate bp = has.getPredicate().getBiPredicate(); + PBiPredicate bp = has.getPredicate().getBiPredicate(); E.checkArgument(bp == Compare.eq, "CONTAINS query with relation " + "'%s' is not supported", bp); diff --git a/hugegraph-server/hugegraph-dist/src/assembly/static/conf/gremlin-driver-settings.yaml b/hugegraph-server/hugegraph-dist/src/assembly/static/conf/gremlin-driver-settings.yaml index 55f38ab97d..bae2c46fb0 100644 --- a/hugegraph-server/hugegraph-dist/src/assembly/static/conf/gremlin-driver-settings.yaml +++ b/hugegraph-server/hugegraph-dist/src/assembly/static/conf/gremlin-driver-settings.yaml @@ -17,7 +17,7 @@ hosts: [localhost] port: 8182 serializer: { - className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, + className: org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV1, config: { serializeResultToString: false, ioRegistries: [org.apache.hugegraph.io.HugeGraphIoRegistry] diff --git a/hugegraph-server/hugegraph-dist/src/assembly/static/conf/gremlin-server.yaml b/hugegraph-server/hugegraph-dist/src/assembly/static/conf/gremlin-server.yaml index 32135163fd..067aaae0bb 100644 --- a/hugegraph-server/hugegraph-dist/src/assembly/static/conf/gremlin-server.yaml +++ b/hugegraph-server/hugegraph-dist/src/assembly/static/conf/gremlin-server.yaml @@ -82,25 +82,25 @@ scriptEngines: { } } serializers: - - {className: org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1, + - {className: org.apache.tinkerpop.gremlin.util.ser.GraphBinaryMessageSerializerV1, config: { serializeResultToString: false, ioRegistries: [org.apache.hugegraph.io.HugeGraphIoRegistry] } } - - {className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, + - {className: org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV1, config: { serializeResultToString: false, ioRegistries: [org.apache.hugegraph.io.HugeGraphIoRegistry] } } - - {className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0, + - {className: org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV2, config: { serializeResultToString: false, ioRegistries: [org.apache.hugegraph.io.HugeGraphIoRegistry] } } - - {className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0, + - {className: org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV3, config: { serializeResultToString: false, ioRegistries: [org.apache.hugegraph.io.HugeGraphIoRegistry] diff --git a/hugegraph-server/hugegraph-dist/src/assembly/static/conf/remote-objects.yaml b/hugegraph-server/hugegraph-dist/src/assembly/static/conf/remote-objects.yaml index 39679d8c30..4e24854c3f 100644 --- a/hugegraph-server/hugegraph-dist/src/assembly/static/conf/remote-objects.yaml +++ b/hugegraph-server/hugegraph-dist/src/assembly/static/conf/remote-objects.yaml @@ -17,7 +17,7 @@ hosts: [localhost] port: 8182 serializer: { - className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, + className: org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV1, config: { serializeResultToString: false, # The duplication of HugeGraphIoRegistry is meant to fix a bug in the diff --git a/hugegraph-server/hugegraph-dist/src/assembly/static/conf/remote.yaml b/hugegraph-server/hugegraph-dist/src/assembly/static/conf/remote.yaml index 55f38ab97d..bae2c46fb0 100644 --- a/hugegraph-server/hugegraph-dist/src/assembly/static/conf/remote.yaml +++ b/hugegraph-server/hugegraph-dist/src/assembly/static/conf/remote.yaml @@ -17,7 +17,7 @@ hosts: [localhost] port: 8182 serializer: { - className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, + className: org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV1, config: { serializeResultToString: false, ioRegistries: [org.apache.hugegraph.io.HugeGraphIoRegistry] diff --git a/hugegraph-server/hugegraph-dist/src/assembly/travis/conf-raft1/gremlin-server.yaml b/hugegraph-server/hugegraph-dist/src/assembly/travis/conf-raft1/gremlin-server.yaml index 7e10eb52b0..9929ed2802 100644 --- a/hugegraph-server/hugegraph-dist/src/assembly/travis/conf-raft1/gremlin-server.yaml +++ b/hugegraph-server/hugegraph-dist/src/assembly/travis/conf-raft1/gremlin-server.yaml @@ -74,25 +74,25 @@ scriptEngines: { } } serializers: - - {className: org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1, + - {className: org.apache.tinkerpop.gremlin.util.ser.GraphBinaryMessageSerializerV1, config: { serializeResultToString: false, ioRegistries: [org.apache.hugegraph.io.HugeGraphIoRegistry] } } - - {className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, + - {className: org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV1, config: { serializeResultToString: false, ioRegistries: [org.apache.hugegraph.io.HugeGraphIoRegistry] } } - - {className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0, + - {className: org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV2, config: { serializeResultToString: false, ioRegistries: [org.apache.hugegraph.io.HugeGraphIoRegistry] } } - - {className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0, + - {className: org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV3, config: { serializeResultToString: false, ioRegistries: [org.apache.hugegraph.io.HugeGraphIoRegistry] diff --git a/hugegraph-server/hugegraph-dist/src/assembly/travis/conf-raft2/gremlin-server.yaml b/hugegraph-server/hugegraph-dist/src/assembly/travis/conf-raft2/gremlin-server.yaml index 5f097f91bc..78d9098b45 100644 --- a/hugegraph-server/hugegraph-dist/src/assembly/travis/conf-raft2/gremlin-server.yaml +++ b/hugegraph-server/hugegraph-dist/src/assembly/travis/conf-raft2/gremlin-server.yaml @@ -74,25 +74,25 @@ scriptEngines: { } } serializers: - - {className: org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1, + - {className: org.apache.tinkerpop.gremlin.util.ser.GraphBinaryMessageSerializerV1, config: { serializeResultToString: false, ioRegistries: [org.apache.hugegraph.io.HugeGraphIoRegistry] } } - - {className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, + - {className: org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV1, config: { serializeResultToString: false, ioRegistries: [org.apache.hugegraph.io.HugeGraphIoRegistry] } } - - {className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0, + - {className: org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV2, config: { serializeResultToString: false, ioRegistries: [org.apache.hugegraph.io.HugeGraphIoRegistry] } } - - {className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0, + - {className: org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV3, config: { serializeResultToString: false, ioRegistries: [org.apache.hugegraph.io.HugeGraphIoRegistry] diff --git a/hugegraph-server/hugegraph-dist/src/assembly/travis/conf-raft3/gremlin-server.yaml b/hugegraph-server/hugegraph-dist/src/assembly/travis/conf-raft3/gremlin-server.yaml index 3f50c64778..a7717b4962 100644 --- a/hugegraph-server/hugegraph-dist/src/assembly/travis/conf-raft3/gremlin-server.yaml +++ b/hugegraph-server/hugegraph-dist/src/assembly/travis/conf-raft3/gremlin-server.yaml @@ -74,25 +74,25 @@ scriptEngines: { } } serializers: - - {className: org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1, + - {className: org.apache.tinkerpop.gremlin.util.ser.GraphBinaryMessageSerializerV1, config: { serializeResultToString: false, ioRegistries: [org.apache.hugegraph.io.HugeGraphIoRegistry] } } - - {className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, + - {className: org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV1, config: { serializeResultToString: false, ioRegistries: [org.apache.hugegraph.io.HugeGraphIoRegistry] } } - - {className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0, + - {className: org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV2, config: { serializeResultToString: false, ioRegistries: [org.apache.hugegraph.io.HugeGraphIoRegistry] } } - - {className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0, + - {className: org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV3, config: { serializeResultToString: false, ioRegistries: [org.apache.hugegraph.io.HugeGraphIoRegistry] diff --git a/hugegraph-server/pom.xml b/hugegraph-server/pom.xml index a4dac32ab5..045d88735f 100644 --- a/hugegraph-server/pom.xml +++ b/hugegraph-server/pom.xml @@ -42,7 +42,7 @@ 1.2.17 2.17.1 4.13.1 - 3.5.1 + 3.7.2 2.7 25.1-jre 4.5.13 From edbaa2613b526d92c28eaa156a2936388f7fad2b Mon Sep 17 00:00:00 2001 From: n-WN <30841158+n-WN@users.noreply.github.com> Date: Tue, 30 Sep 2025 18:34:52 +0000 Subject: [PATCH 2/4] chore: complete TinkerPop 3.7.2 upgrade - fix missing updates 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 44a6c3a9) but are now required for complete TinkerPop 3.7.2 compatibility across all deployment scenarios. --- docker/configs/server1-conf/gremlin-driver-settings.yaml | 2 +- docker/configs/server1-conf/gremlin-server.yaml | 8 ++++---- docker/configs/server1-conf/remote-objects.yaml | 2 +- docker/configs/server1-conf/remote.yaml | 2 +- docker/configs/server2-conf/gremlin-driver-settings.yaml | 2 +- docker/configs/server2-conf/gremlin-server.yaml | 8 ++++---- docker/configs/server2-conf/remote-objects.yaml | 2 +- docker/configs/server2-conf/remote.yaml | 2 +- docker/configs/server3-conf/gremlin-driver-settings.yaml | 2 +- docker/configs/server3-conf/gremlin-server.yaml | 8 ++++---- docker/configs/server3-conf/remote-objects.yaml | 2 +- docker/configs/server3-conf/remote.yaml | 2 +- .../java/org/apache/hugegraph/version/CoreVersion.java | 2 +- 13 files changed, 22 insertions(+), 22 deletions(-) diff --git a/docker/configs/server1-conf/gremlin-driver-settings.yaml b/docker/configs/server1-conf/gremlin-driver-settings.yaml index 2f60ff8379..662e38a185 100644 --- a/docker/configs/server1-conf/gremlin-driver-settings.yaml +++ b/docker/configs/server1-conf/gremlin-driver-settings.yaml @@ -17,7 +17,7 @@ hosts: [localhost] port: 8181 serializer: { - className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, + className: org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV1, config: { serializeResultToString: false, ioRegistries: [org.apache.hugegraph.io.HugeGraphIoRegistry] diff --git a/docker/configs/server1-conf/gremlin-server.yaml b/docker/configs/server1-conf/gremlin-server.yaml index df73386b26..bd4c0e6062 100644 --- a/docker/configs/server1-conf/gremlin-server.yaml +++ b/docker/configs/server1-conf/gremlin-server.yaml @@ -82,25 +82,25 @@ scriptEngines: { } } serializers: - - {className: org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1, + - {className: org.apache.tinkerpop.gremlin.util.ser.GraphBinaryMessageSerializerV1, config: { serializeResultToString: false, ioRegistries: [org.apache.hugegraph.io.HugeGraphIoRegistry] } } - - {className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, + - {className: org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV1, config: { serializeResultToString: false, ioRegistries: [org.apache.hugegraph.io.HugeGraphIoRegistry] } } - - {className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0, + - {className: org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV2, config: { serializeResultToString: false, ioRegistries: [org.apache.hugegraph.io.HugeGraphIoRegistry] } } - - {className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0, + - {className: org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV3, config: { serializeResultToString: false, ioRegistries: [org.apache.hugegraph.io.HugeGraphIoRegistry] diff --git a/docker/configs/server1-conf/remote-objects.yaml b/docker/configs/server1-conf/remote-objects.yaml index 94ebc99190..5b4572f68f 100644 --- a/docker/configs/server1-conf/remote-objects.yaml +++ b/docker/configs/server1-conf/remote-objects.yaml @@ -17,7 +17,7 @@ hosts: [localhost] port: 8181 serializer: { - className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, + className: org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV1, config: { serializeResultToString: false, # The duplication of HugeGraphIoRegistry is meant to fix a bug in the diff --git a/docker/configs/server1-conf/remote.yaml b/docker/configs/server1-conf/remote.yaml index 2f60ff8379..662e38a185 100644 --- a/docker/configs/server1-conf/remote.yaml +++ b/docker/configs/server1-conf/remote.yaml @@ -17,7 +17,7 @@ hosts: [localhost] port: 8181 serializer: { - className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, + className: org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV1, config: { serializeResultToString: false, ioRegistries: [org.apache.hugegraph.io.HugeGraphIoRegistry] diff --git a/docker/configs/server2-conf/gremlin-driver-settings.yaml b/docker/configs/server2-conf/gremlin-driver-settings.yaml index 55f38ab97d..bae2c46fb0 100644 --- a/docker/configs/server2-conf/gremlin-driver-settings.yaml +++ b/docker/configs/server2-conf/gremlin-driver-settings.yaml @@ -17,7 +17,7 @@ hosts: [localhost] port: 8182 serializer: { - className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, + className: org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV1, config: { serializeResultToString: false, ioRegistries: [org.apache.hugegraph.io.HugeGraphIoRegistry] diff --git a/docker/configs/server2-conf/gremlin-server.yaml b/docker/configs/server2-conf/gremlin-server.yaml index 048dded559..bc56c35269 100644 --- a/docker/configs/server2-conf/gremlin-server.yaml +++ b/docker/configs/server2-conf/gremlin-server.yaml @@ -82,25 +82,25 @@ scriptEngines: { } } serializers: - - {className: org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1, + - {className: org.apache.tinkerpop.gremlin.util.ser.GraphBinaryMessageSerializerV1, config: { serializeResultToString: false, ioRegistries: [org.apache.hugegraph.io.HugeGraphIoRegistry] } } - - {className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, + - {className: org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV1, config: { serializeResultToString: false, ioRegistries: [org.apache.hugegraph.io.HugeGraphIoRegistry] } } - - {className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0, + - {className: org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV2, config: { serializeResultToString: false, ioRegistries: [org.apache.hugegraph.io.HugeGraphIoRegistry] } } - - {className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0, + - {className: org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV3, config: { serializeResultToString: false, ioRegistries: [org.apache.hugegraph.io.HugeGraphIoRegistry] diff --git a/docker/configs/server2-conf/remote-objects.yaml b/docker/configs/server2-conf/remote-objects.yaml index 39679d8c30..4e24854c3f 100644 --- a/docker/configs/server2-conf/remote-objects.yaml +++ b/docker/configs/server2-conf/remote-objects.yaml @@ -17,7 +17,7 @@ hosts: [localhost] port: 8182 serializer: { - className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, + className: org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV1, config: { serializeResultToString: false, # The duplication of HugeGraphIoRegistry is meant to fix a bug in the diff --git a/docker/configs/server2-conf/remote.yaml b/docker/configs/server2-conf/remote.yaml index 55f38ab97d..bae2c46fb0 100644 --- a/docker/configs/server2-conf/remote.yaml +++ b/docker/configs/server2-conf/remote.yaml @@ -17,7 +17,7 @@ hosts: [localhost] port: 8182 serializer: { - className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, + className: org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV1, config: { serializeResultToString: false, ioRegistries: [org.apache.hugegraph.io.HugeGraphIoRegistry] diff --git a/docker/configs/server3-conf/gremlin-driver-settings.yaml b/docker/configs/server3-conf/gremlin-driver-settings.yaml index 00ef046699..8c385667a7 100644 --- a/docker/configs/server3-conf/gremlin-driver-settings.yaml +++ b/docker/configs/server3-conf/gremlin-driver-settings.yaml @@ -17,7 +17,7 @@ hosts: [localhost] port: 8183 serializer: { - className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, + className: org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV1, config: { serializeResultToString: false, ioRegistries: [org.apache.hugegraph.io.HugeGraphIoRegistry] diff --git a/docker/configs/server3-conf/gremlin-server.yaml b/docker/configs/server3-conf/gremlin-server.yaml index e153926bc9..c945f7f631 100644 --- a/docker/configs/server3-conf/gremlin-server.yaml +++ b/docker/configs/server3-conf/gremlin-server.yaml @@ -82,25 +82,25 @@ scriptEngines: { } } serializers: - - {className: org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1, + - {className: org.apache.tinkerpop.gremlin.util.ser.GraphBinaryMessageSerializerV1, config: { serializeResultToString: false, ioRegistries: [org.apache.hugegraph.io.HugeGraphIoRegistry] } } - - {className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, + - {className: org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV1, config: { serializeResultToString: false, ioRegistries: [org.apache.hugegraph.io.HugeGraphIoRegistry] } } - - {className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0, + - {className: org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV2, config: { serializeResultToString: false, ioRegistries: [org.apache.hugegraph.io.HugeGraphIoRegistry] } } - - {className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0, + - {className: org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV3, config: { serializeResultToString: false, ioRegistries: [org.apache.hugegraph.io.HugeGraphIoRegistry] diff --git a/docker/configs/server3-conf/remote-objects.yaml b/docker/configs/server3-conf/remote-objects.yaml index ce99fcb2f6..b817ebf6af 100644 --- a/docker/configs/server3-conf/remote-objects.yaml +++ b/docker/configs/server3-conf/remote-objects.yaml @@ -17,7 +17,7 @@ hosts: [localhost] port: 8183 serializer: { - className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, + className: org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV1, config: { serializeResultToString: false, # The duplication of HugeGraphIoRegistry is meant to fix a bug in the diff --git a/docker/configs/server3-conf/remote.yaml b/docker/configs/server3-conf/remote.yaml index 00ef046699..8c385667a7 100644 --- a/docker/configs/server3-conf/remote.yaml +++ b/docker/configs/server3-conf/remote.yaml @@ -17,7 +17,7 @@ hosts: [localhost] port: 8183 serializer: { - className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, + className: org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV1, config: { serializeResultToString: false, ioRegistries: [org.apache.hugegraph.io.HugeGraphIoRegistry] diff --git a/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/version/CoreVersion.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/version/CoreVersion.java index 2eff71487a..453cc41329 100644 --- a/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/version/CoreVersion.java +++ b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/version/CoreVersion.java @@ -31,7 +31,7 @@ public class CoreVersion { /** * Update it when the gremlin version changed, search "tinkerpop.version" in pom */ - public static final String GREMLIN_VERSION = "3.5.1"; + public static final String GREMLIN_VERSION = "3.7.2"; static { // Check versions of the dependency packages From 6028ce9e555bf5e3e84dba4e80ce6a82ee6acd42 Mon Sep 17 00:00:00 2001 From: n-WN <30841158+n-WN@users.noreply.github.com> Date: Tue, 30 Sep 2025 19:06:58 +0000 Subject: [PATCH 3/4] chore: remove obsolete gremlin-groovy-test dependency 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 --- hugegraph-server/hugegraph-test/pom.xml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/hugegraph-server/hugegraph-test/pom.xml b/hugegraph-server/hugegraph-test/pom.xml index 1bd869b5ad..11e1c66a65 100644 --- a/hugegraph-server/hugegraph-test/pom.xml +++ b/hugegraph-server/hugegraph-test/pom.xml @@ -86,11 +86,6 @@ gremlin-test ${tinkerpop.version} - - org.apache.tinkerpop - gremlin-groovy-test - 3.2.11 - org.glassfish.jersey.test-framework.providers From 3163e644dc793d76971d77316b016c7d21fd2d4b Mon Sep 17 00:00:00 2001 From: n-WN <30841158+n-WN@users.noreply.github.com> Date: Thu, 2 Oct 2025 16:30:17 +0000 Subject: [PATCH 4/4] fix: add Java 17 module compatibility for unit tests 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 --- hugegraph-server/hugegraph-test/pom.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/hugegraph-server/hugegraph-test/pom.xml b/hugegraph-server/hugegraph-test/pom.xml index 11e1c66a65..44716a51ee 100644 --- a/hugegraph-server/hugegraph-test/pom.xml +++ b/hugegraph-server/hugegraph-test/pom.xml @@ -153,6 +153,12 @@ unit-test + + --add-opens java.base/java.util=ALL-UNNAMED ${basedir}/src/main/java/ ${basedir}/target/classes/