]
Tom Jenkinson resolved JBTM-2614.
---------------------------------
Resolution: Done
JCA TransactionImporter should be thread safe
---------------------------------------------
Key: JBTM-2614
URL:
https://issues.jboss.org/browse/JBTM-2614
Project: JBoss Transaction Manager
Issue Type: Bug
Components: JCA
Affects Versions: 5.2.12.Final
Reporter: Michael Musgrove
Assignee: Michael Musgrove
Fix For: 4.17.35, 5.2.13.Final
I have a unit test that shows there's a race condition (first observed by [~dmlloyd])
in
com.arjuna.ats.internal.jta.transaction.arjunacore.jca.TransactionImporterImple#importTransaction(javax.transaction.xa.Xid,
int).
If two threads call this method at the same time, two separate transaction objects may be
created. Here's the sequence of events:
T1: call importTransaction for XID1
T2: call importTransaction for XID1
T1: getImportedTransaction returns null
T2: getImportedTransaction returns null
T1: create new transaction, add to map
T2: create new transaction, add to map (overwriting T1's)
There is nothing in the documentation to indicate that this is not a valid situation or
that access to the TransactionImporter has to be single-threaded in any way.