[
https://issues.apache.org/jira/browse/TINKERPOP-2988?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17783835#comment-17783835
]
ASF GitHub Bot commented on TINKERPOP-2988:
-------------------------------------------
xiazcy commented on code in PR #2329:
URL: https://github.com/apache/tinkerpop/pull/2329#discussion_r1385719950
##########
gremlin-python/src/main/python/gremlin_python/driver/connection.py:
##########
@@ -61,6 +61,7 @@ def write(self, request_message):
request_id = str(uuid.uuid4())
if request_message.args.get("requestId"):
request_id = request_message.args.get("requestId")
+ uuid.UUID(request_id) # The server will return an error if
non-UUID sent.
Review Comment:
```suggestion
uuid.UUID(request_id) # checks UUID is not malformed as the
server will return an error if non-UUID sent.
```
Thought I'd add a bit more clarification that this is doing a check and not
the transformation. I was initially wondering why you didn't assign it back to
request id.
> Serialization error throws an Invalid OpProcessor exception when using
> stream() API
> -----------------------------------------------------------------------------------
>
> Key: TINKERPOP-2988
> URL: https://issues.apache.org/jira/browse/TINKERPOP-2988
> Project: TinkerPop
> Issue Type: Improvement
> Components: server
> Affects Versions: 3.7.0
> Reporter: Taylor Riggan
> Priority: Critical
>
> The following throws an
> {code:java}
> Invalid OpProcessor requested [null] (499){code}
> exception. The cause is due to an invalid RequestId (an non-conformant UUID
> is being used):
> {code:java}
> resp = client.stream ("g.V()", {}, { batchSize: 1, requestId: 'foo',
> userAgent: 'bar', evaluationTimeout: 5000 });{code}
>
> The error was diagnosed using Gremlin Server 3.7.0 and seeing the following
> in the server logs:
>
> {code:java}
> [WARN] o.a.t.g.s.h.WsGremlinBinaryRequestDecoder - Serialization error while
> decoding request
> org.apache.tinkerpop.gremlin.driver.ser.SerializationException:
> org.apache.tinkerpop.shaded.jackson.databind.JsonMappingException: Could not
> deserialize the JSON value as required. Nested exception:
> org.apache.tinkerpop.shaded.jackson.databind.exc.InvalidFormatException:
> Cannot deserialize value of type `java.util.UUID` from String "foo": UUID has
> to be represented by standard 36-char representation
> at [Source: (byte[])"{"requestId":{{{}
> {"@type":"g:UUID","@value":"foo"}
> {}}},"op":"eval","processor":"","args":{"gremlin":"g.V()","aliases":{{{}
> {"g":"g"}
> {}}},"batchSize":1,"userAgent":"bar","evaluationTimeout":5000,"bindings":{},"language":"gremlin-groovy","accept":"application/vnd.gremlin-v3.0+json"";
> line: 1, column: 41]{}}}
> at [Source: (byte[])"{"requestId":{{{}
> {"@type":"g:UUID","@value":"foo"}
> {}}},"op":"eval","processor":"","args":{"gremlin":"g.V()","aliases":{{{}
> {"g":"g"}
> {}}},"batchSize":1,"userAgent":"bar","evaluationTimeout":5000,"bindings":{},"language":"gremlin-groovy","accept":"application/vnd.gremlin-v3.0+json"";
> line: 1, column: 41] (through reference chain:
> java.util.LinkedHashMap["requestId"]){}}}
> at
> org.apache.tinkerpop.gremlin.driver.ser.AbstractGraphSONMessageSerializerV2d0.deserializeRequest(AbstractGraphSONMessageSerializerV2d0.java:124)
> at
> org.apache.tinkerpop.gremlin.server.handler.WsGremlinBinaryRequestDecoder.decode(WsGremlinBinaryRequestDecoder.java:77)
> ....
> {code}
>
> A better client side error message is needed in order to provide the user
> with guidance on how to fix the issue. `Invalid OpProcessor` is too
> ambiguous.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)