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