Calling rollback_only via OTS is throwing the wrong exception
-------------------------------------------------------------
Key: JBTM-748
URL:
https://issues.jboss.org/browse/JBTM-748
Project: JBoss Transaction Manager
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: JTS
Affects Versions: 4.11.0
Reporter: Michael Musgrove
Assignee: Michael Musgrove
Fix For: 4.15.0
Occasionally our BlackTie CI test run is failing when marking a transaction rollback only
because it is getting the wrong exception back from the transaction manager
16:11:10,296 WARN [arjLoggerI18N]
[com.arjuna.ats.arjuna.coordinator.TransactionReaper_18] - TransactionReaper::check
timeout for TX -53ee7cfb:10e2:4c0fa834:22ec in state RUN
[exec] 2010-06-09 16:11:10,296 [0x0000123c] WARN (TxLogControl :153 )
- rollback_only: INVALID_TRANSACTION minor: 20001
16:11:10,328 WARN [arjLoggerI18N]
[com.arjuna.ats.arjuna.coordinator.TransactionReaper_7] -
TransactionReaper::doCancellations worker Thread[Thread-18,5,jboss] successfully canceled
TX -53ee7cfb:10e2:4c0fa834:22ec
The second log message comes from the C client (the other two from the reaper). The CORBA
System exception major/minor code represents INVALID_TRANSACTION/INACTIVE_TRANSACTION
which according to the OTS spec is incorrect.
A look at the code shows a race condition between a BlackTie C client marking a
transaction abort only and the Transaction Reaper cancelling it (due to a timeout being
reached). The reaper eventually winds up in ControlImple.destroy() where the CORBA object
representing the transaction is destroyed. There is a window where the C client request
reaches JacORB just before the reaper has had a chance to destroy the CORBA object
resulting in the wrong exception being returned.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: