You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by "David Minor (JIRA)" <ji...@apache.org> on 2009/09/02 01:09:32 UTC

[jira] Updated: (OPENJPA-1193) Memory leak when using FinalizingBrokerImpl

     [ https://issues.apache.org/jira/browse/OPENJPA-1193?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

David Minor updated OPENJPA-1193:
---------------------------------

    Attachment: fix-finalizing-broker-memory-leak.patch

Attached is the patch that I believe was the original intent of this code, as mentioned in the thread for this issue:
http://n2.nabble.com/Re-FW-Memory-leak-td3300148.html

Since the original checkin cites an improvement for non-finalizing brokers, I believe the concurrent hash map (plus code to remove the brokers from the hash map when being freed) was meant for the non-finalizing broker, but a missing ! reversed the logic.

> Memory leak when using FinalizingBrokerImpl
> -------------------------------------------
>
>                 Key: OPENJPA-1193
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-1193
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: kernel
>    Affects Versions: 1.2.0, 1.2.1
>         Environment: All environments where the finalizing broker is used
>            Reporter: David Minor
>             Fix For: 1.3.0, 2.0.0
>
>         Attachments: fix-finalizing-broker-memory-leak.patch
>
>
> When FinalizingBrokerImpl is used, AbstractBrokerFactory uses a set backed by java's ConcurrentHashMap to keep track of brokers, rather than a weak reference org.apache.openjpa.lib.util.concurrent.ConcurrentReferenceHashSet as it did previously. This can lead to a memory leak if the brokers are never removed from the Set.
> The change was originally checked in by Patrick Linskey in revision 653000 with the comment "Improve concurrency by actively managing AbstractBrokerFactory's broker set when using non-finalizing brokers. Credit goes to Arunabh Hazarika for identifying the bottleneck and prototyping this solution."
> Changing the _brokers Set back to a weak reference ConcurrentReferenceHashSet fixes the memory leak.

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