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

Petr Langr commented on TINKERPOP-3221:
---------------------------------------

Thanks Stephen for quick reply. I went through release notes and thought to 
give it a try as it seemed that with current usage I might be able to smoothly 
upgrade it. Understand thought that this is intentional.

Anyhow, I'm looking forward to see 4.0.0 coming out, I'll probably upgrade all 
stack then.

> Strategy serialization breaking change in 3.8.0
> -----------------------------------------------
>
>                 Key: TINKERPOP-3221
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-3221
>             Project: TinkerPop
>          Issue Type: Bug
>    Affects Versions: 3.8.0
>            Reporter: Petr Langr
>            Priority: Major
>
> Trying to connect to 3.8.0 tinkerpop server from older java client version 
> fails when using traversal strategies.
>  
> {code:java}
> NPE in java.util.Map.entrySet()" because "mapConf{code}
>  
> Example query using java-client 3.7.4
>  
> {code:java}
> g
> .with("Authorization", "Bearer xyz")
> .withStrategies(
>     PartitionStrategy.build()
>         .partitionKey("orgId")
>         .readPartitions(orgId)
>         .create()
> )
> .V()
> .count()
> .next() {code}
>  
>  
> Seems like TINKERPOP-3055 introduced unnecessary breaking change in 
> deserialization. I could not find anything related to that in [release 
> notes|https://github.com/apache/tinkerpop/blob/master/docs/src/upgrade/release-3.8.0.asciidoc].
>  
> Below is an exception generated.
>  
> {code:java}
> Could not deserialize the JSON value as required. Nested exception:
>   org.apache.tinkerpop.shaded.jackson.databind.JsonMappingException:
>     Could not deserialize the JSON value as required. Nested exception: 
>       org.apache.tinkerpop.shaded.jackson.databind.JsonMappingException:
>         Could not deserialize the JSON value as required. Nested exception:
>           java.lang.NullPointerException: Cannot invoke 
> "java.util.Map.entrySet()" because "mapConf" is null
>  at [Source: 
> (byte[])"{"requestId":"85c62759-77ae-4abe-baf9-e734f38c68b8","op":"bytecode","processor":"traversal","args":{"@type":"g:Map","@value":["gremlin",{"@type":"g:Bytecode","@value":{"source":[["withStrategies",{"@type":"g:OptionsStrategy","@value":{"Authorization":"bearer
>  xyz"[truncated 720 bytes]; line: 1, column: 1013]
>  at [Source: 
> (byte[])"{"requestId":"85c62759-77ae-4abe-baf9-e734f38c68b8","op":"bytecode","processor":"traversal","args":{"@type":"g:Map","@value":["gremlin",{"@type":"g:Bytecode","@value":{"source":[["withStrategies",{"@type":"g:OptionsStrategy","@value":{"Authorization":"bearer
>  xyz"[truncated 720 bytes]; line: 1, column: 1013]
>  at [Source: 
> (byte[])"{"requestId":"85c62759-77ae-4abe-baf9-e734f38c68b8","op":"bytecode","processor":"traversal","args":{"@type":"g:Map","@value":["gremlin",{"@type":"g:Bytecode","@value":{"source":[["withStrategies",{"@type":"g:OptionsStrategy","@value":{"Authorization":"bearer
>  xyz"[truncated 720 bytes]; line: 1, column: 1013]
>    (through reference chain: java.util.LinkedHashMap["args"])
>  at 
> org.apache.tinkerpop.shaded.jackson.databind.JsonMappingException.from(JsonMappingException.java:269)
>  at 
> org.apache.tinkerpop.shaded.jackson.databind.DeserializationContext.mappingException(DeserializationContext.java:2167)
>  at 
> org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONTypeDeserializer.deserialize(GraphSONTypeDeserializer.java:199)
>  at 
> org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONTypeDeserializer.deserializeTypedFromAny(GraphSONTypeDeserializer.java:103)
>  at 
> org.apache.tinkerpop.shaded.jackson.databind.deser.std.UntypedObjectDeserializer.deserializeWithType(UntypedObjectDeserializer.java:313)
>  at 
> org.apache.tinkerpop.shaded.jackson.databind.deser.std.MapDeserializer._readAndBindStringKeyMap(MapDeserializer.java:625)
>  at 
> org.apache.tinkerpop.shaded.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:449)
>  at 
> org.apache.tinkerpop.shaded.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:32)
>  at 
> org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONTypeDeserializer.deserialize(GraphSONTypeDeserializer.java:217)
>  at 
> org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONTypeDeserializer.deserializeTypedFromObject(GraphSONTypeDeserializer.java:88)
>  at 
> org.apache.tinkerpop.shaded.jackson.databind.deser.std.MapDeserializer.deserializeWithType(MapDeserializer.java:492)
>  at 
> org.apache.tinkerpop.shaded.jackson.databind.deser.impl.TypeWrappedDeserializer.deserialize(TypeWrappedDeserializer.java:74)
>  at 
> org.apache.tinkerpop.shaded.jackson.databind.DeserializationContext.readValue(DeserializationContext.java:977)
>  at 
> org.apache.tinkerpop.shaded.jackson.databind.DeserializationContext.readValue(DeserializationContext.java:964)
>  at 
> org.apache.tinkerpop.gremlin.structure.io.graphson.AbstractObjectDeserializer.deserialize(AbstractObjectDeserializer.java:48)
>  at 
> org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONTypeDeserializer.deserialize(GraphSONTypeDeserializer.java:217)
>  at 
> org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONTypeDeserializer.deserializeTypedFromAny(GraphSONTypeDeserializer.java:103)
>  at 
> org.apache.tinkerpop.shaded.jackson.databind.deser.std.StdDeserializer.deserializeWithType(StdDeserializer.java:172)
>  at 
> org.apache.tinkerpop.shaded.jackson.databind.deser.impl.TypeWrappedDeserializer.deserialize(TypeWrappedDeserializer.java:74)
>  at 
> org.apache.tinkerpop.shaded.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:323)
>  at 
> org.apache.tinkerpop.shaded.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4825)
>  at 
> org.apache.tinkerpop.shaded.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3833)
>  at 
> org.apache.tinkerpop.gremlin.util.ser.AbstractGraphSONMessageSerializerV2.deserializeRequest(AbstractGraphSONMessageSerializerV2.java:122)
>  at 
> org.apache.tinkerpop.gremlin.server.handler.WsGremlinBinaryRequestDecoder.decode(WsGremlinBinaryRequestDecoder.java:77)
>  at 
> org.apache.tinkerpop.gremlin.server.handler.WsGremlinBinaryRequestDecoder.decode(WsGremlinBinaryRequestDecoder.java:43)
>  at 
> io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:91)
>  at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:356)
>  at 
> io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:107)
>  at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:356)
>  at 
> io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:107)
>  at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:356)
>  at 
> io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:93)
>  at 
> io.netty.handler.codec.http.websocketx.Utf8FrameValidator.channelRead(Utf8FrameValidator.java:98)
>  at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:356)
>  at 
> io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:107)
>  at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:356)
>  at 
> org.apache.tinkerpop.gremlin.server.handler.WsAndHttpChannelizerHandler.channelRead(WsAndHttpChannelizerHandler.java:103)
>  at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:356)
>  at 
> io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)
>  at 
> io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318)
>  at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:356)
>  at 
> io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:293)
>  at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:354)
>  at 
> io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1429)
>  at 
> io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:918)
>  at 
> io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:168)
>  at 
> io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.handle(AbstractNioChannel.java:445)
>  at 
> io.netty.channel.nio.NioIoHandler$DefaultNioRegistration.handle(NioIoHandler.java:388)
>  at 
> io.netty.channel.nio.NioIoHandler.processSelectedKey(NioIoHandler.java:596)
>  at 
> io.netty.channel.nio.NioIoHandler.processSelectedKeysOptimized(NioIoHandler.java:571)
>  at 
> io.netty.channel.nio.NioIoHandler.processSelectedKeys(NioIoHandler.java:512)
>  at io.netty.channel.nio.NioIoHandler.run(NioIoHandler.java:484)
>  at 
> io.netty.channel.SingleThreadIoEventLoop.runIo(SingleThreadIoEventLoop.java:225)
>  at 
> io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:196)
>  at 
> io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1193)
>  at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
>  at java.base/java.lang.Thread.run(Thread.java:1583) {code}
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to