[
https://issues.apache.org/activemq/browse/AMQ-1824?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=44975#action_44975
]
Filip Hanik commented on AMQ-1824:
----------------------------------
The fact that consumer stopped receiving messages was caused by the
"transaction has not been started error"
this was caused by the default JMS template in Spring would open and close the
connection for each message.
Switching to the single connection factory where a single connection is reused
works around this,
it is possible that using
TransactionAwareConnectionFactoryProxy will help out with this as well, when
using Spring managed transactions
Filip
> Single producer and multiple consumer processes, some consumers stop getting
> messages.
> --------------------------------------------------------------------------------------
>
> Key: AMQ-1824
> URL: https://issues.apache.org/activemq/browse/AMQ-1824
> Project: ActiveMQ
> Issue Type: Bug
> Affects Versions: 5.1.0
> Environment: Windows XP SP2, Sun JDK 1.6.03 and RHEL 64 bit Sun 1.6.05
> Reporter: Jerry Shea
> Priority: Blocker
> Attachments: repro_AMQ.zip
>
>
> With a single producer and multiple consumer processes using the
> ActiveMQResourceAdapter (inside Jencks), some consumers stop getting
> messages. If you look at the JMX counters inside jconsole you can see the
> stuck subscription's pending queue size increasing. Nearly every time this
> exception is thrown by one of the failing consumers:
> {noformat}
> 2008-06-25 12:07:29,297 [pool-1-thread-7] WARN Transaction - Error ending
> association for XAResource [EMAIL PROTECTED]; transaction will roll back. XA
> error code: -7
> javax.transaction.xa.XAException: The connection is already closed
> at
> org.apache.activemq.TransactionContext.toXAException(TransactionContext.java:624)
> at
> org.apache.activemq.TransactionContext.setXid(TransactionContext.java:559)
> at
> org.apache.activemq.TransactionContext.end(TransactionContext.java:339)
> at
> org.apache.activemq.ra.LocalAndXATransaction.end(LocalAndXATransaction.java:90)
> at
> org.apache.geronimo.transaction.manager.WrapperNamedXAResource.end(WrapperNamedXAResource.java:51)
> at
> org.apache.geronimo.transaction.manager.TransactionImpl.endResources(TransactionImpl.java:563)
> at
> org.apache.geronimo.transaction.manager.TransactionImpl.endResources(TransactionImpl.java:542)
> at
> org.apache.geronimo.transaction.manager.TransactionImpl.beforePrepare(TransactionImpl.java:401)
> at
> org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:257)
> at
> org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:238)
> at org.jencks.XAEndpoint.afterDelivery(XAEndpoint.java:105)
> at
> org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.afterDelivery(MessageEndpointProxy.java:121)
> at
> org.apache.activemq.ra.MessageEndpointProxy.afterDelivery(MessageEndpointProxy.java:63)
> at
> org.apache.activemq.ra.ServerSessionImpl.afterDelivery(ServerSessionImpl.java:217)
> at org.apache.activemq.ActiveMQSession.run(ActiveMQSession.java:785)
> at
> org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:165)
> at
> org.apache.geronimo.connector.work.WorkerContext.run(WorkerContext.java:290)
> at
> org.apache.geronimo.connector.work.pool.NamedRunnable.run(NamedRunnable.java:32)
> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown
> Source)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> at java.lang.Thread.run(Unknown Source)
> Caused by: org.apache.activemq.ConnectionClosedException: The connection is
> already closed
> at
> org.apache.activemq.ActiveMQConnection.checkClosed(ActiveMQConnection.java:1271)
> at
> org.apache.activemq.ActiveMQConnection.checkClosedOrFailed(ActiveMQConnection.java:1258)
> at
> org.apache.activemq.TransactionContext.setXid(TransactionContext.java:556)
> ... 19 more
> 2008-06-25 12:07:29,297 [pool-1-thread-7] ERROR Transaction - Unexpected
> exception rolling back [EMAIL PROTECTED]; continuing with rollback
> javax.transaction.xa.XAException: The connection is already closed
> at
> org.apache.activemq.TransactionContext.toXAException(TransactionContext.java:624)
> at
> org.apache.activemq.TransactionContext.rollback(TransactionContext.java:423)
> at
> org.apache.activemq.ra.LocalAndXATransaction.rollback(LocalAndXATransaction.java:128)
> at
> org.apache.geronimo.transaction.manager.WrapperNamedXAResource.rollback(WrapperNamedXAResource.java:78)
> at
> org.apache.geronimo.transaction.manager.TransactionImpl.rollbackResources(TransactionImpl.java:581)
> at
> org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:267)
> at
> org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:238)
> at org.jencks.XAEndpoint.afterDelivery(XAEndpoint.java:105)
> at
> org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.afterDelivery(MessageEndpointProxy.java:121)
> at
> org.apache.activemq.ra.MessageEndpointProxy.afterDelivery(MessageEndpointProxy.java:63)
> at
> org.apache.activemq.ra.ServerSessionImpl.afterDelivery(ServerSessionImpl.java:217)
> at org.apache.activemq.ActiveMQSession.run(ActiveMQSession.java:785)
> at
> org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:165)
> at
> org.apache.geronimo.connector.work.WorkerContext.run(WorkerContext.java:290)
> at
> org.apache.geronimo.connector.work.pool.NamedRunnable.run(NamedRunnable.java:32)
> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown
> Source)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> at java.lang.Thread.run(Unknown Source)
> Caused by: org.apache.activemq.ConnectionClosedException: The connection is
> already closed
> at
> org.apache.activemq.ActiveMQConnection.checkClosed(ActiveMQConnection.java:1271)
> at
> org.apache.activemq.ActiveMQConnection.checkClosedOrFailed(ActiveMQConnection.java:1258)
> at
> org.apache.activemq.TransactionContext.rollback(TransactionContext.java:407)
> ... 16 more
> 2008-06-25 12:07:29,297 [pool-1-thread-7] INFO
> org.apache.activemq.ra.ServerSessionImpl:0 - Endpoint failed to process
> message. Reason: java.lang.RuntimeException: Endpoint after delivery
> notification failure
> {noformat}
> I've written some code to reproduce this problem. Instructions:
> 1. unpack the attached source
> 2. build with 'mvn compile package'
> 3. start with ./startAll.sh (I used cygwin) - this will start 1 producer and
> 3 consumer processes. These programs are pointing to tcp://localhost:62616
> (you can change this in spring config file)
> Look in jconsole under subscriptions and you will probably see within 1 or 2
> runs, only 2 consumers being created, or possibly 3 consumers but 1 of them
> with an increasing pending queue size.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.