Robert Joseph Evans created STORM-3148:
------------------------------------------

             Summary: StormServerPipelineFactory can deserialize messages 
incorrectly
                 Key: STORM-3148
                 URL: https://issues.apache.org/jira/browse/STORM-3148
             Project: Apache Storm
          Issue Type: Bug
          Components: storm-client
    Affects Versions: 2.0.0
            Reporter: Robert Joseph Evans
            Assignee: Robert Joseph Evans


We recently ran into an integration test failure. (TestingTest).

It looks like the only way for this error to happen would be if there was an 
internal bug in kryo, or if we were using Output from multiple threads.  It is 
the latter.

 

org.apache.storm.messaging.netty.Server creates a single KryoValuesSerializer 
and KryoValuesDeserializer instance.  These get passed through 
StormServerPipelineFactory and added to each channel (if there are multiple 
channels there are multiple threads) and we can mess up both encoding and 
decoding messages.

 
{code:java}
2018-07-12 17:41:49.408 [Netty-server-localhost-1030-worker-1] ERROR 
org.apache.storm.messaging.netty.StormServerHandler - server errors in handling 
the request
org.apache.storm.shade.io.netty.handler.codec.EncoderException: 
java.lang.ArrayIndexOutOfBoundsException
    at 
org.apache.storm.shade.io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:106)
 ~[shaded-deps-2.0.0.y.jar:2.0.0.y]
    at 
org.apache.storm.shade.io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:738)
 [shaded-deps-2.0.0.y.jar:2.0.0.y]
    at 
org.apache.storm.shade.io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:801)
 [shaded-deps-2.0.0.y.jar:2.0.0.y]
    at 
org.apache.storm.shade.io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:814)
 [shaded-deps-2.0.0.y.jar:2.0.0.y]
    at 
org.apache.storm.shade.io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:794)
 [shaded-deps-2.0.0.y.jar:2.0.0.y]
    at 
org.apache.storm.shade.io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:1066)
 [shaded-deps-2.0.0.y.jar:2.0.0.y]
    at 
org.apache.storm.shade.io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:305)
 [shaded-deps-2.0.0.y.jar:2.0.0.y]
    at org.apache.storm.messaging.netty.Server.channelActive(Server.java:261) 
[storm-client-2.0.0.y.jar:2.0.0.y]
    at 
org.apache.storm.messaging.netty.StormServerHandler.channelActive(StormServerHandler.java:40)
 [storm-client-2.0.0.y.jar:2.0.0.y]
    at 
org.apache.storm.shade.io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:213)
 [shaded-deps-2.0.0.y.jar:2.0.0.y]
    at 
org.apache.storm.shade.io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:199)
 [shaded-deps-2.0.0.y.jar:2.0.0.y]
    at 
org.apache.storm.shade.io.netty.channel.AbstractChannelHandlerContext.fireChannelActive(AbstractChannelHandlerContext.java:192)
 [shaded-deps-2.0.0.y.jar:2.0.0.y]
    at 
org.apache.storm.shade.io.netty.channel.ChannelInboundHandlerAdapter.channelActive(ChannelInboundHandlerAdapter.java:64)
 [shaded-deps-2.0.0.y.jar:2.0.0.y]
    at 
org.apache.storm.shade.io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:213)
 [shaded-deps-2.0.0.y.jar:2.0.0.y]
    at 
org.apache.storm.shade.io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:199)
 [shaded-deps-2.0.0.y.jar:2.0.0.y]
    at 
org.apache.storm.shade.io.netty.channel.AbstractChannelHandlerContext.fireChannelActive(AbstractChannelHandlerContext.java:192)
 [shaded-deps-2.0.0.y.jar:2.0.0.y]
    at 
org.apache.storm.shade.io.netty.channel.DefaultChannelPipeline$HeadContext.channelActive(DefaultChannelPipeline.java:1422)
 [shaded-deps-2.0.0.y.jar:2.0.0.y]
    at 
org.apache.storm.shade.io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:213)
 [shaded-deps-2.0.0.y.jar:2.0.0.y]
    at 
org.apache.storm.shade.io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:199)
 [shaded-deps-2.0.0.y.jar:2.0.0.y]
    at 
org.apache.storm.shade.io.netty.channel.DefaultChannelPipeline.fireChannelActive(DefaultChannelPipeline.java:941)
 [shaded-deps-2.0.0.y.jar:2.0.0.y]
    at 
org.apache.storm.shade.io.netty.channel.AbstractChannel$AbstractUnsafe.register0(AbstractChannel.java:518)
 [shaded-deps-2.0.0.y.jar:2.0.0.y]
    at 
org.apache.storm.shade.io.netty.channel.AbstractChannel$AbstractUnsafe.access$200(AbstractChannel.java:423)
 [shaded-deps-2.0.0.y.jar:2.0.0.y]
    at 
org.apache.storm.shade.io.netty.channel.AbstractChannel$AbstractUnsafe$1.run(AbstractChannel.java:482)
 [shaded-deps-2.0.0.y.jar:2.0.0.y]
    at 
org.apache.storm.shade.io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163)
 [shaded-deps-2.0.0.y.jar:2.0.0.y]
    at 
org.apache.storm.shade.io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:404)
 [shaded-deps-2.0.0.y.jar:2.0.0.y]
    at 
org.apache.storm.shade.io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:465)
 [shaded-deps-2.0.0.y.jar:2.0.0.y]
    at 
org.apache.storm.shade.io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884)
 [shaded-deps-2.0.0.y.jar:2.0.0.y]
    at java.lang.Thread.run(Thread.java:745) [?:1.8.0_60]
Caused by: java.lang.ArrayIndexOutOfBoundsException
    at java.lang.System.arraycopy(Native Method) ~[?:1.8.0_60]
    at com.esotericsoftware.kryo.io.Output.toBytes(Output.java:130) 
~[kryo-3.0.3.jar:?]
    at 
org.apache.storm.serialization.KryoValuesSerializer.serializeObject(KryoValuesSerializer.java:50)
 ~[storm-client-2.0.0.y.jar:2.0.0.y]
    at 
org.apache.storm.messaging.netty.BackPressureStatus.buffer(BackPressureStatus.java:68)
 ~[storm-client-2.0.0.y.jar:2.0.0.y]
    at 
org.apache.storm.messaging.netty.BackPressureStatusEncoder.encode(BackPressureStatusEncoder.java:34)
 ~[storm-client-2.0.0.y.jar:2.0.0.y]
    at 
org.apache.storm.messaging.netty.BackPressureStatusEncoder.encode(BackPressureStatusEncoder.java:24)
 ~[storm-client-2.0.0.y.jar:2.0.0.y]
    at 
org.apache.storm.shade.io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:88)
 ~[shaded-deps-2.0.0.y.jar:2.0.0.y]
    ... 27 more
   {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to