Affects Version/s: 1.3, 1.3.1
Fix Version/s: 1.3.2
Number of attachments :
If you call:
from within a Synchronization and that Synchronization tries to register another Synchronization with a different position using this:
with X different than 0 (the default position used by Transaction.registerSynchronization()) then the TM will throw a ConcurrentModificationException from BitronixTransaction.fireBeforeCompletionEvent() that will mark the transaction as rollback only.
This is only possible to do by using BTM calls as the standard JTA API calls always work with the default position. This can be triggered by a side-effect of calls BTM does inside Synchronization it registers itself at non-default priority. For instance, getting a connection from the pool from inside a Synchronization makes BTM register a new Synchronization with non-zero priority.