Atomikos Forum |
|
Does Atomikos support Oracle RAC 11.2 with DTP enabled ?
We are running Atomikos on Oracle 11.2 RAC servers and Atomikos seems to be having trouble. When connecting with load balancing, an error "failed to grow connection pool" caused by "TNS listener cannot find service name" is found (the names are accurate). The setup uses this URL format: jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=on) (ADDRESS=(PROTOCOL=TCP)(HOST=serveraddress)(PORT=port))(ADDRESS=(PROTOCOL=TCP)(HOST=serveraddress)(PORT=port))(CONNECT_DATA=(SERVICE_NAME=servicename)))"); With username and password specified separately. When we attempt to make a new connection, the aforementioned error occurs. When connecting without load balancing (specifying each RAC node as a datasource), the usertransaction.commit() method hangs indefinitely. Note that we have tried scenarios with different nodes as different datasources on Oracle 10 servers and they worked as behaved.
I will work on getting that to you, but for now, the stack trace is
com.atomikos.icatch.HeurHazardException: Heuristic Exception at com.atomikos.datasource.xa.XAResourceTransaction.commit(XAResourceTransaction.java:774) at com.atomikos.icatch.imp.CommitMessage.send(CommitMessage.java:73) at com.atomikos.icatch.imp.PropagationMessage.submit(PropagationMessage.java:111) at com.atomikos.icatch.imp.Propagator$PropagatorThread.run(Propagator.java:87) at com.atomikos.icatch.imp.Propagator.submitPropagationMessage(Propagator.java:66) at com.atomikos.icatch.imp.HeurHazardStateHandler.onTimeout(HeurHazardStateHandler.java:120) at com.atomikos.icatch.imp.CoordinatorImp.alarm(CoordinatorImp.java:1105) at com.atomikos.timing.PooledAlarmTimer.notifyListeners(PooledAlarmTimer.java:112) at com.atomikos.timing.PooledAlarmTimer.run(PooledAlarmTimer.java:99) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:736)
I've uploaded the full tm.out here
http://pastebin.com/mykWJgPu And just to remind, the setup worked in 10g RAC. We'd just like to know what assumption we can make about the 11.2 RAC support.
As far as I can see, it is not the utx.commit that is problematic but recovery (see below).
The resource(s) needed to recover from the RAC seem to be problematic and fail to initialize - this causes heuristic termination of the pending transactions that were recovered by the transaction service. So the next question is: why does the RAC recovery fail in XAResource.recover? that is hard to say from where I am sitting. We can schedule some (paid) remote assistance if you like, to find out more. 11-09-14 14:03:31,114 [Thread-12] Error in recovery javax.transaction.xa.XAException at oracle.jdbc.xa.OracleXAResource.recover(OracleXAResource.java:715) at com.atomikos.datasource.xa.XATransactionalResource.recover(XATransactionalResource.java:587) at com.atomikos.datasource.xa.XATransactionalResource.recover(XATransactionalResource.java:540) at com.atomikos.datasource.xa.XAResourceTransaction.recover(XAResourceTransaction.java:572) at com.atomikos.icatch.imp.CoordinatorImp.recover(CoordinatorImp.java:748) at com.atomikos.icatch.imp.TransactionServiceImp.recover(TransactionServiceImp.java:610) |