Race condition in ControlWrapper
--------------------------------
Key: JBTM-2725
URL:
https://issues.jboss.org/browse/JBTM-2725
Project: JBoss Transaction Manager
Issue Type: Bug
Components: JTS
Affects Versions: 5.3.3.Final
Reporter: Tomasz Adamski
Assignee: Tomasz Adamski
Fix For: 5.3.5.Final
I have encountered another problem during timeout induced rollback scenario. When the
thread rolls back the transaction immediately after the reaper they both end in
ControlWrapper#rollback method. This should be synchronized: if it is not both threads may
call TransactionImple#rollback method which is not expected and leads to
IllegalStateException error. In synchronized scenario second thread in
ControlWrapper#rollback method see that the TransactionImple has already been
disassociated with the thread and throws TRANSACTION_ROLLEDBACK exception which is
expected.