[ 
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)

Reply via email to