Atomikos Forum |
|
Hi
I'm having an issue using Atomikos 3.9.3 with Spring 4.0.6 and JMS. The application starts a JMS connection to listen for messages. On receiving a message, it will process it and then post it on another JMS destination. When the process is started, and only if it has processed at least one message, it will throw a warning on closing the ConnectionPool for the publishing connection, like this: WARN [shutdown] [ConnectionPool] atomikos connection pool 'jms-Publisher': connection is still in use on pool destroy: atomikos pooled connection for resource jms-TradeAllocationsEventP - please check your shutdown sequence to avoid heuristic termination of ongoing transactions! It will be forcibly closed, but the transaction log is then left in a bad state. The next time the application is started, we get these messages continuously every ten seconds: [2014-08-06 16:09:30.150] WARN [Atomikos:7] [XAResourceTransaction] XAResourceTransaction app-localhost0002000005app-localhost17: no XAResource to commit - the required resource is probably not yet intialized? [2014-08-06 16:09:30.150] WARN [Atomikos:7] [CommitMessage] Unexpected error in commit com.atomikos.icatch.HeurHazardException: Heuristic Exception at com.atomikos.datasource.xa.XAResourceTransaction.commit(XAResourceTransaction.java:707) at com.atomikos.icatch.imp.CommitMessage.send(CommitMessage.java:72) at com.atomikos.icatch.imp.PropagationMessage.submit(PropagationMessage.java:83) at com.atomikos.icatch.imp.Propagator$PropagatorThread.run(Propagator.java:79) at com.atomikos.icatch.imp.Propagator.submitPropagationMessage(Propagator.java:58) at com.atomikos.icatch.imp.HeurHazardStateHandler.onTimeout(HeurHazardStateHandler.java:131) at com.atomikos.icatch.imp.CoordinatorImp.alarm(CoordinatorImp.java:933) at com.atomikos.timing.PooledAlarmTimer.notifyListeners(PooledAlarmTimer.java:112) at com.atomikos.timing.PooledAlarmTimer.run(PooledAlarmTimer.java:99) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:722) The only way to avoid these messages is to delete the transaction log file before restarting the app. I have verified that the UserTransactionManager is stopped prior to trying to close the connection pools. The UserTransactionServiceImp is also closed prior to closing the connection pools, and I have tried both, shutdownWait and shutdownForce destroy methods to no avail. After much hair pulling, we have run out of ideas. Is there a known bug we should be aware of? can anyone offer pointers? Please let me know if you require more specific details Thanks in advance |