[
https://issues.apache.org/jira/browse/QPID-1144?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Rob Godfrey updated QPID-1144:
------------------------------
Component/s: (was: Java Client)
Java Broker
The issue is with reference counting; and in particular that in the refactored
broker messages are not actually enqueued until a TxCommit has been sent
In processing immediate messages, the enqueue on IncomingMessage decrements due
to the "immediate" failure before it increments due to the creation of the
returned message exception.
Fix by ensuring that there is at least one reference to the message while the
TxCommit processes the publish action
> Test
> org.apache.qpid.test.testcases.ImmediateMessageTest.test_QPID_517_ImmediateFailsConsumerDisconnectedTxPubSub
> intermittently failing
> -----------------------------------------------------------------------------------------------------------------------------------------
>
> Key: QPID-1144
> URL: https://issues.apache.org/jira/browse/QPID-1144
> Project: Qpid
> Issue Type: Bug
> Components: Java Broker
> Affects Versions: M3
> Reporter: Arnaud Simon
> Assignee: Rob Godfrey
> Fix For: M3
>
>
> Description:
> This test is intermittently failing because the excepted exception (no
> consumers) is not thrown. I believe this is because of a threading issue and
> the expected exception is masked with the broker throwing the following
> exception:
> org.apache.qpid.AMQChannelException: Failed to commit: Reference count for
> message id (HC:3808966 ID:1 Ref:-1073741825) has gone below 0.
> at
> org.apache.qpid.framing.AMQMethodBodyImpl.getChannelException(AMQMethodBodyImpl.java:73)
> at
> org.apache.qpid.server.handler.TxCommitHandler.methodReceived(TxCommitHandler.java:75)
> at
> org.apache.qpid.server.handler.ServerMethodDispatcherImpl.dispatchTxCommit(ServerMethodDispatcherImpl.java:547)
> at
> org.apache.qpid.framing.amqp_0_9.TxCommitBodyImpl.execute(TxCommitBodyImpl.java:103)
> at
> org.apache.qpid.server.state.AMQStateManager.methodReceived(AMQStateManager.java:204)
> pool-2-thread-4 2008-06-20 10:04:19,261 DEBUG
> [qpid.client.protocol.AMQProtocolHandler] (18607473)Method frame received:
> [BasicReturnBodyImpl: replyCode=313, replyText=Immediate delivery is not
> possible., exchange=amq.topic, routingKey=sendTo_1]
> pool-2-thread-4 2008-06-20 10:04:19,264 DEBUG
> [qpid.client.handler.BasicReturnMethodHandler] New JmsBounce method received
> at
> org.apache.qpid.server.protocol.AMQMinaProtocolSession.methodFrameReceived(AMQMinaProtocolSession.java:296)
> at
> org.apache.qpid.framing.AMQMethodBodyImpl.handle(AMQMethodBodyImpl.java:93)
> at
> org.apache.qpid.server.protocol.AMQMinaProtocolSession.frameReceived(AMQMinaProtocolSession.java:236)
> at
> org.apache.qpid.server.protocol.AMQMinaProtocolSession.dataBlockReceived(AMQMinaProtocolSession.java:192)
> pool-2-thread-4 2008-06-20 10:04:19,266 DEBUG [apache.qpid.client.AMQSession]
> Message[Channel Id : 1ContentHeader [EMAIL PROTECTED] received in session
> at
> org.apache.qpid.server.protocol.AMQPFastProtocolHandler.messageReceived(AMQPFastProtocolHandler.java:244)
> at
> org.apache.mina.common.support.AbstractIoFilterChain$TailFilter.messageReceived(AbstractIoFilterChain.java:703)
> at
> org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:362)
> at
> org.apache.mina.common.support.AbstractIoFilterChain.access$1200(AbstractIoFilterChain.java:54)
> at
> org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:800)
> at
> org.apache.mina.filter.codec.support.SimpleProtocolDecoderOutput.flush(SimpleProtocolDecoderOutput.java:60)
> at
> org.apache.mina.filter.codec.QpidProtocolCodecFilter.messageReceived(QpidProtocolCodecFilter.java:174)
> at
> org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:362)
> at
> org.apache.mina.common.support.AbstractIoFilterChain.access$1200(AbstractIoFilterChain.java:54)
> pool-1-thread-1 2008-06-20 10:04:19,270 DEBUG
> [qpid.client.message.AbstractJMSMessageFactory] Creating message from buffer
> with position=0 and remaining=1
> at
> org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:800)
> at
> org.apache.qpid.pool.PoolingFilter.messageReceived(PoolingFilter.java:334)
> at
> org.apache.mina.filter.ReferenceCountingIoFilter.messageReceived(ReferenceCountingIoFilter.java:96)
> at
> org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:362)
> main 2008-06-20 10:04:19,272 DEBUG [qpid.client.protocol.AMQProtocolHandler]
> Sent frame Frame channelId: 1, bodyFrame: [TxCommitBodyImpl: ]
> pool-1-thread-1 2008-06-20 10:04:19,274 DEBUG [apache.qpid.client.AMQSession]
> Message returned with error code 313: no consumers (Immediate delivery is not
> possible.)
> at
> org.apache.mina.common.support.AbstractIoFilterChain.access$1200(AbstractIoFilterChain.java:54)
> at
> org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:800)
> at org.apache.qpid.pool.Event$ReceivedEvent.process(Event.java:86)
> at org.apache.qpid.pool.Job.processAll(Job.java:114)
> at org.apache.qpid.pool.Job.run(Job.java:153)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
> at java.lang.Thread.run(Thread.java:619)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.