we are using JBoss 7.1.1 and UserTransactions
after a TX timeout of an UserTransaction, TX is in Status STATUS_ROLLEDBACK and TX keeps bound to the current thread even after the thread is returned to the pool.
subsequent requests that get this thread will end with errors, cause they can not start a new TX:
Caused by: javax.resource.ResourceException: IJ000460: Error checking for a transaction
at org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.getManagedConnection(TxConnectionManagerImpl.java:362)
at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:464)
at org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:129)
... 114 more
Caused by: javax.resource.ResourceException: IJ000459: Transaction is not active: tx=TransactionImple < ac, BasicAction: 0:ffffac100d40:1e9980e9:50ed52b2:541f status: ActionStatus.ABORTED >
at org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.getManagedConnection(TxConnectionManagerImpl.java:352)
... 116 more
I searched around the web and found: https://issues.jboss.org/browse/JBAS-4481
maybe an old issue found it's way back to the current AS version?!
as a workaround we call userTx.rollback() even if the userTX is in ROLLEDBACK state. this removes the TX from the thread and fixes the problem but gives warning message:
WARN [com.arjuna.ats.arjuna] (http-localhost-127.0.0.1-8080-1) ARJUNA012077: Abort called on already aborted atomic action 0:ffff0a010169:-268a285c:50f036de:3b
is this the way to handle the situation - application code should call rollback even if state is already ROLLEDBACK, or are we doing something wrong?
anyone else had this problem?
thanks for any hints