[
https://issues.apache.org/jira/browse/DIRMINA-497?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
David M. Lloyd updated DIRMINA-497:
-----------------------------------
Attachment: DIRMINA-497-1.patch
A patch that uses regular synchronization instead of
Collections.synchronizedMap().
> 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
> Attachments: DIRMINA-497-1.patch
>
>
> 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.