Thread safety issue: incorrect usage of Collections.synchronizedMap in 
DefaultIoSessionDataStructureFactory.DefaultIoSessionAttributeMap
----------------------------------------------------------------------------------------------------------------------------------------

                 Key: DIRMINA-497
                 URL: https://issues.apache.org/jira/browse/DIRMINA-497
             Project: MINA
          Issue Type: Bug
          Components: Core
            Reporter: David M. Lloyd


In trunk, the DefaultIoSessionAttributeMap.setAttributeIfAbsent() synchronizes 
on the attributes map in order to synchronize access with the other 
get/setAttribute methods. However, Collections.synchronizedMap does NOT 
synchronize on the map itself, but rather an internal object!  So, 
setAttributeIfAbsent() still contains a race condition.

A good solution for 2.x would be to simply use a ConcurrentMap, which has 
putIfAbsent().  For 1.0.x, which has to run on JDK 1.4 (correct?), I'd 
recommend to just drop Collections.synchronizedMap() and synchronize directly 
on the Map reference itself.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to