[ 
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.

Reply via email to