Ari Tilli created ARTEMIS-427:
---------------------------------
Summary: Large messages cause underflow in proton.
Key: ARTEMIS-427
URL: https://issues.apache.org/jira/browse/ARTEMIS-427
Project: ActiveMQ Artemis
Issue Type: Bug
Components: AMQP
Affects Versions: 1.3.0
Environment: RHEL7.2 + openJDK
Reporter: Ari Tilli
Moved away from STOMP to AMQP since sending 100k messages caused connection to
break.
Now when server side is updated to use qpid-c++ messages are still not routed
to clients (Clients still use STOMP.)
When sending messages of for example 77746 bytes, message is
not received by client, and reason is that some buffer "underflows".
After reading some messages from qpid proton list (they send big
messages) , this seems to be Artemis issue.
java.nio.BufferUnderflowException
at java.nio.HeapByteBuffer.get(HeapByteBuffer.java:151)
at
org.apache.qpid.proton.codec.DecoderImpl.readRaw(DecoderImpl.java:939)
at
org.apache.qpid.proton.codec.BinaryType$LongBinaryEncoding.readValue(BinaryType.java:110)
at
org.apache.qpid.proton.codec.BinaryType$LongBinaryEncoding.readValue(BinaryType.java:67)
at
org.apache.qpid.proton.codec.DynamicTypeConstructor.readValue(DynamicTypeConstructor.java:39)
at
org.apache.qpid.proton.codec.DecoderImpl.readObject(DecoderImpl.java:887)
at
org.apache.qpid.proton.message.impl.MessageImpl.decode(MessageImpl.java:658)
at
org.apache.qpid.proton.message.impl.MessageImpl.decode(MessageImpl.java:574)
at
org.apache.qpid.proton.jms.EncodedMessage.decode(EncodedMessage.java:46)
at
org.apache.qpid.proton.jms.JMSMappingInboundTransformer.transform(JMSMappingInboundTransformer.java:40)
at
org.apache.activemq.artemis.core.protocol.proton.converter.ProtonMessageConverter.inboundJMSType(ProtonMessageConverter.java:57)
at
org.apache.activemq.artemis.core.protocol.proton.converter.ProtonMessageConverter.inbound(ProtonMessageConverter.java:43)
at
org.apache.activemq.artemis.core.protocol.proton.plug.ProtonSessionIntegrationCallback.serverSend(ProtonSessionIntegrationCallback.java:264)
at
org.proton.plug.context.server.ProtonServerReceiverContext.onMessage(ProtonServerReceiverContext.java:116)
at
org.proton.plug.context.AbstractConnectionContext$LocalListener.onDelivery(AbstractConnectionContext.java:273)
at org.proton.plug.handler.Events.dispatch(Events.java:100)
at
org.proton.plug.handler.impl.ProtonHandlerImpl.dispatch(ProtonHandlerImpl.java:363)
at
org.proton.plug.handler.impl.ProtonHandlerImpl.flush(ProtonHandlerImpl.java:283)
at
org.proton.plug.handler.impl.ProtonHandlerImpl.inputBuffer(ProtonHandlerImpl.java:183)
at
org.proton.plug.context.AbstractConnectionContext.inputBuffer(AbstractConnectionContext.java:89)
at
org.apache.activemq.artemis.core.protocol.proton.ActiveMQProtonRemotingConnection.bufferReceived(ActiveMQProtonRemotingConnection.java:128)
at
org.apache.activemq.artemis.core.remoting.server.impl.RemotingServiceImpl$DelegatingBufferHandler.bufferReceived(RemotingServiceImpl.java:627)
at
org.apache.activemq.artemis.core.remoting.impl.netty.ActiveMQChannelHandler.channelRead(ActiveMQChannelHandler.java:68)
at
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308)
at
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294)
at
io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:846)
at
io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:131)
at
io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511)
at
io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468)
at
io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354)
at
io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:112)
at java.lang.Thread.run(Thread.java:745)
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)