We found out that when the transaction manager "reaper" thread rolls back a transaction, it doesn't remove the transaction from a static collection. tx.suspend, which disassociates the transaction from the application thread, also doesn't remove the transaction from the static collection. As a result, the transaction leaks and all of the objects references by it (including all resources that are put there like JPA persistence contexts).
To address this, we should change org.jboss.as.ejb3.tx.CMTTxInterceptor.endTransaction (STATUS_ROLLEDBACK case in switch statement) to call tm.rollback() instead of tm.suspend().
- is caused by
-
WFLY-1346 avoid "transaction is not active" error by having CMTTxInterceptor.endTransaction check transaction status
- Closed
- is related to
-
ENTESB-4836 SwitchYard on EAP allows "transaction is not active" error
- Closed
- links to