[
http://jira.jboss.com/jira/browse/JBTM-182?page=all ]
Jonathan Halliday resolved JBTM-182.
------------------------------------
Resolution: Done
Quite right. I changed the created datatype without paying enough attention to the overall
structure of the method. Fixed in svn revision 8603, 2007-01-02.
Missing synchronization?
------------------------
Key: JBTM-182
URL:
http://jira.jboss.com/jira/browse/JBTM-182
Project: JBoss Transaction Manager
Issue Type: Task
Security Level: Public(Everyone can see)
Components: JTA Implementation
Affects Versions: 4.2.3
Reporter: Mark Little
Assigned To: Jonathan Halliday
Fix For: 4.2.3
In addSynchronization for TwoPhaseCoordinator, the synchronization object is created if
it isn't already set:
if (_synchs == null)
{
// Synchronizations should be stored (or at least iterated) in their natural order
_synchs = new TreeSet();
}
if (_synchs.add(sr))
{
result = AddOutcome.AR_ADDED;
}
However, because multiple threads could be calling the same transaction instance
concurrently, shouldn't there be a synchronization around this block? It's
possible that two threads could test and try to set the _synchs and because of
interleaving one thread creates _synchs after the other thread already has and added
it's resource (which would then become garbage).
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira