0

I have a number of MDBs in my Glassfish 3.1.2.2 application that consume JMS messages on a regular interval. All will seemingly work flawlessly for a period of time after application startup- anywhere from 12 hours to a couple of days. Then, I will start repeatedly getting an error like the one below. From the error text ("Client's transaction aborted"), it sounds as if the container is attempting to run the MDB in an existing transaction, but that the transaction is somehow aborted, so it can't invoke the MDB. Another piece of information is that redeploying the application does not make the error disappear. Restarting Glassfish does seem to make the error disappear (for a period of time, after which time it will reappear), which makes me wonder if this is some kind of resource exhaustion issue.

[#|2012-09-12T21:42:15.045+0000|WARNING|glassfish3.1.2|javax.resourceadapter.mqjmsra.inbound.message|_ThreadID=74;_ThreadName=Thread-2;|MQJMSRA_MR2001: run:Caught Exception from onMessage():Redelivering:
javax.ejb.EJBException
    at com.sun.ejb.containers.MessageBeanContainer.deliverMessage(MessageBeanContainer.java:1176)
    at com.sun.ejb.containers.MessageBeanListenerImpl.deliverMessage(MessageBeanListenerImpl.java:81)
    at com.sun.enterprise.connectors.inbound.MessageEndpointInvocationHandler.invoke(MessageEndpointInvocationHandler.java:171)
    at $Proxy614.onMessage(Unknown Source)
    at com.sun.messaging.jms.ra.OnMessageRunner.run(OnMessageRunner.java:260)
    at com.sun.enterprise.connectors.work.OneWork.doWork(OneWork.java:114)
    at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.performWork(ThreadPoolImpl.java:497)
    at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:540)
Caused by: javax.ejb.TransactionRolledbackLocalException: Client's transaction aborted
    at com.sun.ejb.containers.BaseContainer.useClientTx(BaseContainer.java:4722)
    at com.sun.ejb.containers.BaseContainer.preInvokeTx(BaseContainer.java:4601)
    at com.sun.ejb.containers.MessageBeanContainer.beforeMessageDelivery(MessageBeanContainer.java:1040)
    at com.sun.ejb.containers.MessageBeanListenerImpl.beforeMessageDelivery(MessageBeanListenerImpl.java:77)
    at com.sun.enterprise.connectors.inbound.MessageEndpointInvocationHandler.invoke(MessageEndpointInvocationHandler.java:139)
    at $Proxy614.beforeDelivery(Unknown Source)
    at com.sun.messaging.jms.ra.OnMessageRunner.run(OnMessageRunner.java:247)
    ... 3 more
|#]
Riduidel
  • 22,052
  • 14
  • 85
  • 185
Jeff
  • 227
  • 4
  • 17

1 Answers1

1

When the error start appearing, does it still happen at same thread? Like _ThreadID=74;_ThreadName=Thread-2 in this case? I reported this bug, where a thread remained associated with rolled back transaction, however there were no reaction on this. But we got rid of it after our database connection became more stable.

I would look for last activity on offending thread before this error starts happening.

pdudits
  • 896
  • 6
  • 9