]
Michael Musgrove updated JBTM-2888:
-----------------------------------
Attachment: NestedTopLevel2UnitTest.java
NestedTopLevel transactions do not rollback state on exception
--------------------------------------------------------------
Key: JBTM-2888
URL:
https://issues.jboss.org/browse/JBTM-2888
Project: JBoss Transaction Manager
Issue Type: Bug
Components: STM
Affects Versions: 5.5.24.Final
Reporter: Michael Musgrove
Assignee: Mark Little
Attachments: NestedTopLevel2UnitTest.java
The attached file is a reproducer. Drop it into the STM tests directory and run to see
the failure.
It creates two transactional objects A and B. B is further annotated with
@NestedTopLevel. The test:
- starts a transaction A;
- calls a write method on A;
- then calls a write method on B which throws an exception;
- aborts or commits A (either outcome produces the error)
Since the container starts a top-level transaction for the call to the method on B I
would expect it to abort it if the B method throws an exception. What I find is that it
will always call commit.
This behaviour limits the usefulness of @NestedTopLevel when such methods are called
inside an existing transaction since there is no mechanism for rolling back changes.