[ https://issues.apache.org/jira/browse/TINKERPOP-3105?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17877535#comment-17877535 ]
ASF GitHub Bot commented on TINKERPOP-3105: ------------------------------------------- xiazcy commented on code in PR #2742: URL: https://github.com/apache/tinkerpop/pull/2742#discussion_r1735218349 ########## docs/src/reference/gremlin-applications.asciidoc: ########## @@ -2336,6 +2336,44 @@ List<Vertex> results = g.V().hasLabel("person").elementMap('name').toList(); Both of the above requests return a list of `Map` instances that contain the `id`, `label` and the "name" property. +*Compatibility* + +*It is not recommended to use older driver versions with 3.7.x Gremlin Server*, as some older drivers do not construct +graph elements with properties and thus are not designed to handle the returned properties by default; however, compatibility +can be achieved by configuring `ReferenceElementStrategy` in the server such that properties are not returned. +Per-request configuration option `materializeProperties` is not supported older driver versions. + +Also note that older drivers of different language variants will handle incoming properties differently with different +serializers used. Drivers using `GraphSON` serializers will remain compatible, but may encounter deserialization errors +with `GraphBinary`. Below is a table documenting GLV behaviors using `GraphBinary` when properties are returned by the +default 3.7.x server, as well as if `ReferenceElementStrategy` is configured on the server (i.e. the expected behavior +from a 3.6.x server). This behavior can be observed with the results of `g.V().next()`. + +[cols="1,1,1"] +|=== +|3.6.x drivers with `GraphBinary` |Behavior with default 3.7.x Server | Behavior with `ReferenceElementStrategy` + +|`gremlin-driver` +|Returns empty iterator +|Returns empty iterator + +|`gremlin-dotnet` +|Skips properties in Elements +|Skips properties in Elements + +|`gremlin-javascript` +|Deserialization error +|Returns null + +|`gremlin-python` +|Deserialization error +|Skips properties in Elements + +|`gremlin-go` +|Deserialization error +|Skips properties in Elements Review Comment: By skip, I mean those GLVs don't have `properties` in their `Vertex` object, so actually the `vertex.properties` are non-existent keys/attributes. I can make that part more clear. > Running 3.6.x python-driver with 3.7.x server leads to deserialization errors > ----------------------------------------------------------------------------- > > Key: TINKERPOP-3105 > URL: https://issues.apache.org/jira/browse/TINKERPOP-3105 > Project: TinkerPop > Issue Type: Bug > Components: io, python, server > Affects Versions: 3.7.2 > Reporter: Yang Xia > Priority: Blocker > > Running 3.6.x {{gremlin-python}} with 3.7.x {{gremlin-server}} leads to > serialization errors: > {code:java} > return self.deserializers[DataType(bt)].objectify(buff, self, nullable) > KeyError: <DataType.custom: 0>{code} > with or without using {{ReferenceElementStrategy}} set on the server, > possibly due to a bug in how properties are being serialized and returned > from Java that is not inline with the specification. -- This message was sent by Atlassian Jira (v8.20.10#820010)