[
https://issues.apache.org/jira/browse/TINKERPOP-1875?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16338246#comment-16338246
]
ASF GitHub Bot commented on TINKERPOP-1875:
-------------------------------------------
GitHub user davebshow opened a pull request:
https://github.com/apache/tinkerpop/pull/790
TINKERPOP-1875 Gremlin-Python only aggregates to list when using GraphSON3
https://issues.apache.org/jira/browse/TINKERPOP-1875
This PR fixes server response message deserialization in Gremlin-Python.
Improper deserialization was leading to `aggregate_to` always resulting in a
list as well as API comparability issues between GraphSON2 and GraphSON3
message serializers.
This PR also improves testing--all Gremlin-Python tests using a remote
connection are now run with both GraphSON 2 and 3 serializers.
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/apache/tinkerpop TINKERPOP-1875
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/tinkerpop/pull/790.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #790
----
commit f0bbe7c90f5f66028203f21dcf720bf0948f1950
Author: davebshow <davebshow@...>
Date: 2018-01-24T21:14:03Z
added proper response message serialization, run all remote connection
tests with graphson 2 and 3
----
> Gremlin-Python only aggregates to list when using GraphSON3
> -----------------------------------------------------------
>
> Key: TINKERPOP-1875
> URL: https://issues.apache.org/jira/browse/TINKERPOP-1875
> Project: TinkerPop
> Issue Type: Bug
> Components: python
> Affects Versions: 3.3.1
> Reporter: David M. Brown
> Assignee: David M. Brown
> Priority: Major
> Fix For: 3.3.2
>
>
> Gremlin-Python fails to correctly extract the aggregate_to value from the
> Gremlin Server response when using GraphSON3. I believe this is the source of
> the test failures that were temporarily fixed by using the v2.0 message
> serializer in [this
> commit|https://github.com/apache/tinkerpop/commit/8c299879e777765748c2c2b03a58b6d0c5c401de].
>
> In general, it seems this value is a bit buried in the new response message
> format:
> {code:json}
> {'requestId': 'b2a51ad2-bca6-4493-9115-a57a92e477c7',
> 'result': {'data': {'@type': 'g:List',
> '@value': [{'@type': 'g:Map',
> '@value': ['ripple', {'@type': 'g:Int64', '@value': 1}]},
> {'@type': 'g:Map', '@value': ['lop', {'@type': 'g:Int64', '@value':
> 3}]}]},
> 'meta': {'@type': 'g:Map',
> '@value': ['aggregateTo', 'map', 'sideEffectKey', 'm']}},
> 'status': {'attributes': {'@type': 'g:Map', '@value': []},
> 'code': 200,
> 'message': ''}}
> {code}
> To access it, you have to do something like:
> {code:python}
> message['result']['meta']['@value'][1]
> {code}
> Which throws an error when no metadata is present. This seems a bit clumsy. I
> haven't looked at how the Java driver deals with it, maybe there is a better
> way to parse this.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)