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: Jerru Shea
            Priority: Blocker


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.

Reply via email to