It has always been a design decision that only throwing DeliberateTransactionRollbackException from beforeCommit() of a module actually rolls the transaction back. This should be reconsidered, because (perhaps due to programming error), partial transaction updates may occur.
Possible solution: Let all RuntimeExceptions rollback the entire transaction, but not checked exceptions.
It has always been a design decision that only throwing
DeliberateTransactionRollbackException
frombeforeCommit()
of a module actually rolls the transaction back. This should be reconsidered, because (perhaps due to programming error), partial transaction updates may occur.Possible solution: Let all RuntimeExceptions rollback the entire transaction, but not checked exceptions.