[ 
https://issues.apache.org/jira/browse/ACCUMULO-1379?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13763643#comment-13763643
 ] 

Keith Turner commented on ACCUMULO-1379:
----------------------------------------

Reference counting would be the simplest code change.   When all instances are 
closed, then the background threads can be stopped.   However this should not 
preclude instances from being created in the future.

If ref counting is done, calling the instance close() method ZKI.finalize() 
could be tricky. One hypothetical problem is the following situation.

 # create ZookeeperInstance (ZKI)
 # create Connector from ZKI and drops ref to ZKI
 # create Scanner from Connector and drop ref to Connector

Currently this type of code works w/ no problem.  If Scanner does not reference 
ZKI, then ZKI will be garbage collected and possibly close resources the 
scanner needs.  I think the scanner does ref the instance, so it would be ok in 
this case, was using it as an example.





                
>  PermGen leak 
> --------------
>
>                 Key: ACCUMULO-1379
>                 URL: https://issues.apache.org/jira/browse/ACCUMULO-1379
>             Project: Accumulo
>          Issue Type: Bug
>          Components: client
>    Affects Versions: 1.4.3, 1.5.0
>         Environment: Linux/JBoss
>            Reporter: Mike Giordano
>            Assignee: John Vines
>             Fix For: 1.6.0
>
>         Attachments: ACCUMULO-1379.patch, ACCUMULO-1379_v2.patch
>
>
> Under version 1.3.7 we are using the following code to initialize a cloudbase 
> connection during initialization of our web app:
>                         ZooKeeperInstance instance = new 
> ZooKeeperInstance(instanceName, zooKeepers);
>                         connector = instance.getConnector(userId, 
> password.getBytes());
> The problem is that under the hood, this call creates several threads that 
> are not cleaned up when the app is undeployed in JBoss. This is occurring 
> without performing any scans or interacting with cloudbase in any other way. 
> After relatively few redeploys of the app, the PermGen Space is OOM.
> I can't find any reference in the cloudbase API akin to a close() method for 
> the Connector object. This is a classloader leak effecting any webapp that is 
> accessing cloudbase directly. The result of this leak is not simply orphaned 
> threads, but thousands of classes not gc'd because the classloader itself 
> can't be gc'd. This is what is filling up PermGen.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to