[
https://issues.apache.org/jira/browse/ABDERA-46?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12491639
]
Garrett Rooney commented on ABDERA-46:
--------------------------------------
Umm, I'm not sure that's going to work. Unless my java thread safety memory is
failing me, just synchronizing puts without synchronizing reads isn't going to
do a damn thing. You need to synchronize both, or move to a more sophisticated
data structure (like one of the ones in the concurrent package) that can avoid
total synchronization while still retaining safety.
Just think about it. The problem Brian says they saw was an addition going on
at the same time as a read. If you synchronize additions to the map without
synchronizing reads you haven't prevented that case, the only thing the
synchronization will do is prevent concurrent adds, which wasn't the original
problem.
> Memory Leak and Concurency Bug in Factory
> -----------------------------------------
>
> Key: ABDERA-46
> URL: https://issues.apache.org/jira/browse/ABDERA-46
> Project: Abdera
> Issue Type: Bug
> Reporter: Brian McCallister
> Assigned To: James M Snell
>
> Okay, am trying to reconstruct this from memory as I thought we had a filed a
> bug on it months agao when we found it...
> If you use the same Factory from multiple threads it maintains a map of
> extension namespaces. When you create a new element it accesses this map and
> if an addition is going the reader can get caught traversing it forever.
> (HashMap is not thread safe).
> This map also keeps all extensions it ever sees, which can lead to a memory
> leak if you use the default factory a lot -- say, with hundreds of thousands
> of extensions in my case.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.