[
https://issues.jboss.org/browse/WFLY-5480?page=com.atlassian.jira.plugin....
]
Flavia Rainone commented on WFLY-5480:
--------------------------------------
The wrong size number appears at position 13 of the buffer after the buffer is copied, at
MessageImpl.getEncodedBuffer. This wrong size is sent to the client and causes the
Exception seen in the description above.
This method, MessageImpl.getEncodedBuffer, is invoked concurrently by two separate
threads, both are sending a SessionReceiveMessage to the client
(SessionReceiveMessage.encode).
In one of the threads, the buffer is sent and usedBuffer is set to true. In the other
thread, after checking that usedBuffer is true, a new copy of the buffer is taken. The
problem is in the copied buffer. While the original buffer, right after the copy, still
contains the correct size at position 13, the new buffer, the copy, contains a garbage int
at position 13.
I am trying to find whereas the problem is in netty, responsible for doing the copy, or is
a race condition involving another thread changing the buffer contents, even if
temporarily, and causing the copy to go bad.
Too bad I haven't found yet where is the native implementation of Unsafe at netty, the
class responsible for performing the copy.
Maybe the messaging guys have a more specific opinion on what is causing this, let me know
if that's the case.
SPEC JMS 2007 benchmark fails with AMQ214013: Failed to decode
packet
---------------------------------------------------------------------
Key: WFLY-5480
URL:
https://issues.jboss.org/browse/WFLY-5480
Project: WildFly
Issue Type: Bug
Components: JMS
Reporter: Ondřej Kalman
Assignee: Flavia Rainone
Priority: Blocker
But I have another problem, when I removed trace logs from config I'm not able to run
benchmark on localhost to the end, because clients starts getting :
AMQ214013: Failed to decode packet
java.lang.IndexOutOfBoundsException: readerIndex: 2130706436 (expected: 0 <=
readerIndex <= writerIndex(2943))
at io.netty.buffer.AbstractByteBuf.readerIndex(AbstractByteBuf.java:73)
at io.netty.buffer.WrappedByteBuf.readerIndex(WrappedByteBuf.java:99)
at
org.apache.activemq.artemis.core.buffers.impl.ChannelBufferWrapper.readerIndex(ChannelBufferWrapper.java:405)
at
org.apache.activemq.artemis.core.message.impl.MessageImpl.decode(MessageImpl.java:1052)
at
org.apache.activemq.artemis.core.message.impl.MessageImpl.decodeFromBuffer(MessageImpl.java:459)
at
org.apache.activemq.artemis.core.protocol.core.impl.wireformat.SessionReceiveMessage.decode(SessionReceiveMessage.java:94)
at
org.apache.activemq.artemis.core.protocol.ClientPacketDecoder.decode(ClientPacketDecoder.java:42)
at
org.apache.activemq.artemis.core.protocol.core.impl.RemotingConnectionImpl.bufferReceived(RemotingConnectionImpl.java:371)
at
org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl$DelegatingBufferHandler.bufferReceived(ClientSessionFactoryImpl.java:1374)
at
org.apache.activemq.artemis.core.remoting.impl.netty.ActiveMQChannelHandler.channelRead(ActiveMQChannelHandler.java:73)
at
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:339)
at
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:324)
at
io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:242)
at
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:339)
at
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:324)
at
io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:847)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteCha
nnel.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:111)
at java.lang.Thread.run(Thread.java:745)
and
Thread-9 (ActiveMQ-client-global-threads-1266561810): Uncaught exception.
java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Integer.java:542)
at java.lang.Integer.valueOf(Integer.java:766)
at
org.apache.activemq.artemis.utils.TypedProperties.getIntProperty(TypedProperties.java:280)
at
org.apache.activemq.artemis.core.message.impl.MessageImpl.getIntProperty(MessageImpl.java:811)
at
org.apache.activemq.artemis.jms.client.ActiveMQMessage.getIntProperty(ActiveMQMessage.java:578)
at org.spec.jms.agents.SPECWorkerThread.receivedMessage(SPECWorkerThread.java:849)
at org.spec.jms.agents.SPECWorkerThread.onMessage(SPECWorkerThread.java:820)
at
org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMessage(JMSMessageListenerWrapper.java:100)
at
org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOnMessage(ClientConsumerImpl.java:1089)
at
org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.access$400(ClientConsumerImpl.java:47)
at
org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl$Runner.run(ClientConsumerImpl.java:1224)
at
org.apache.activemq.artemis.utils.OrderedExecutorFactory$OrderedExecutor$1.run(OrderedExecutorFactory.java:105)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Thread-3 (ActiveMQ-client-global-threads-1266561810): Uncaught exception.
javax.jms.IllegalStateException: AMQ119027: Could not find reference on consumer ID=0,
messageId = 104,833 queue = 127\.0\.0\.1_VM1_SPAgent7_0.SP_CallForOffersEH_7_EHID_1PF0
at
org.apache.activemq.artemis.core.protocol.core.impl.ChannelImpl.sendBlocking(ChannelImpl.java:410)
at
org.apache.activemq.artemis.core.protocol.core.impl.ActiveMQSessionContext.sendACK(ActiveMQSessionContext.java:461)
at
org.apache.activemq.artemis.core.client.impl.ClientSessionImpl.acknowledge(ClientSessionImpl.java:765)
at
org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.doAck(ClientConsumerImpl.java:1212)
at
org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.flushAcks(ClientConsumerImpl.java:830)
at
org.apache.activemq.artemis.core.client.impl.ClientSessionImpl.flushAcks(ClientSessionImpl.java:1852)
at
org.apache.activemq.artemis.core.client.impl.ClientSessionImpl.commit(ClientSessionImpl.java:501)
at
org.apache.activemq.artemis.core.client.impl.DelegatingSession.commit(DelegatingSession.java:159)
at
org.apache.activemq.artemis.jms.client.ActiveMQSession.commit(ActiveMQSession.java:218)
at
org.spec.jms.eventhandler.sp.SP_CallForOffersEH.handleMessage(SP_CallForOffersEH.java:306)
at org.spec.jms.agents.SPECWorkerThread.onMessage(SPECWorkerThread.java:821)
at
org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMessage(JMSMessageListenerWrapper.java:100)
at
org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOnMessage(ClientConsumerImpl.java:1089)
at
org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.access$400(ClientConsumerImpl.java:47)
at
org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl$Runner.run(ClientConsumerImpl.java:1224)
at
org.apache.activemq.artemis.utils.OrderedExecutorFactory$OrderedExecutor$1.run(OrderedExecutorFactory.java:105)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecut
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)