[ 
https://issues.apache.org/jira/browse/TINKERPOP-3105?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17877459#comment-17877459
 ] 

ASF GitHub Bot commented on TINKERPOP-3105:
-------------------------------------------

Cole-Greer commented on code in PR #2742:
URL: https://github.com/apache/tinkerpop/pull/2742#discussion_r1734955846


##########
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

Review Comment:
   ```suggestion
   *It is not recommended to use 3.6.x or below driver versions with 3.7.x or 
above Gremlin Server*, as some older drivers do not construct
   ```
   This might be a bit more future proof as new releases go out.



##########
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:
   Some of these may still be confusing for some users. It's not clear what the 
result of skipping properties will be. It might be best to focus on what the 
actual de-serialized vertex will look like (when there's no deserialization 
errors). Something like `vertex.properties = []` and `vertex.properties = null`





> 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