[
http://jira.jboss.com/jira/browse/JBAS-4675?page=comments#action_12375643 ]
Jonathan Halliday commented on JBAS-4675:
-----------------------------------------
Thanks, I'll have a look at the test case.
The underlying tx engine does not allow Synchronizations to be registered on completed
transactions. Thus simply removing the status check from the TransactionLocalDelegate will
only cause the exception to be thrown from a different point in the code. I need to rip
out the Synchronizations we use to store lock state and use the more general Object
storage mechanism added to the TransactionImple for JTA 1.1 instead. It should still not
take long though.
TransactionLocal cannot be locked when transaction is marked rollback
only
--------------------------------------------------------------------------
Key: JBAS-4675
URL:
http://jira.jboss.com/jira/browse/JBAS-4675
Project: JBoss Application Server
Issue Type: Sub-task
Security Level: Public(Everyone can see)
Components: Transaction Manager
Affects Versions: JBossAS-4.2.1.GA
Reporter: Adrian Brock
Assigned To: Jonathan Halliday
Priority: Critical
Fix For: JBossAS-5.0.0.Beta3, JBossAS-4.2.2.GA
Related to the parent issue, the proposed fix does not work in jboss-4.2.x because
the transaction local cannot be locked when the status is ABORT.
Here's the stacktrace of the error:
2007-09-05 17:50:44,899 DEBUG
[org.jboss.resource.connectionmanager.CachedConnectionManager] Unable to synchronize with
transaction
java.lang.IllegalStateException: Transaction not active
at
com.arjuna.ats.jbossatx.TransactionLocalDelegateImpl.lock(TransactionLocalDelegateImpl.java:119)
at
com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.lock(BaseTransactionManagerDelegate.java:200)
at org.jboss.tm.TransactionLocal.lock(TransactionLocal.java:120)
at
org.jboss.resource.connectionmanager.TransactionSynchronizer.lock(TransactionSynchronizer.java:223)
at
org.jboss.resource.connectionmanager.CachedConnectionManager.getCloseConnectionSynchronization(CachedConnectionManager.java:550)
at
org.jboss.resource.connectionmanager.CachedConnectionManager.unregisterConnection(CachedConnectionManager.java:315)
at
org.jboss.resource.connectionmanager.TxConnectionManager$TxConnectionEventListener.connectionClosed(TxConnectionManager.java:622)
at
org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.closeHandle(BaseWrapperManagedConnection.java:266)
at
org.jboss.resource.adapter.jdbc.WrappedConnection.close(WrappedConnection.java:129)
You shouldn't be able to create a new delegate if the transaction is not active,
but you should be able to retrieve existing ones.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira