John Stoneham created ACCUMULO-1697:
---------------------------------------

             Summary: Thread leaks in Tomcat on hot-redeploy
                 Key: ACCUMULO-1697
                 URL: https://issues.apache.org/jira/browse/ACCUMULO-1697
             Project: Accumulo
          Issue Type: Bug
    Affects Versions: 1.4.0
            Reporter: John Stoneham
            Priority: Minor


Testing on 1.3.7 cluster with Tomcat and redeploying my web app by 'touch'ing 
the .war file.

In catalina.out:
Sep 06, 2013 4:46:38 PM org.apache.catalina.startup.HostConfig 
deleteRedeployResources
INFO: Undeploying context [/myapp]
Sep 06, 2013 4:46:48 PM org.jboss.modcluster.ModClusterService drainSessions
WARN: Failed to drain pending requests from context [/myapp] within specified 
timeout: 10 seconds
Sep 06, 2013 4:46:48 PM org.apache.catalina.loader.WebappClassLoader 
clearReferencesThreads
SEVERE: The web application [/myapp] appears to have started a thread named 
[localhost-startStop-6-SendThread(r03sv04:2181)] but has failed to stop it. 
This is very likely to create a memory leak.
Sep 06, 2013 4:46:48 PM org.apache.catalina.loader.WebappClassLoader 
clearReferencesThreads
SEVERE: The web application [/myapp] appears to have started a thread named 
[localhost-startStop-6-EventThread] but has failed to stop it. This is very 
likely to create a memory leak.
Sep 06, 2013 4:46:48 PM org.apache.catalina.loader.WebappClassLoader 
clearReferencesThreads
SEVERE: The web application [/myapp] appears to have started a thread named 
[Thrift Connection Pool Checker] but has failed to stop it. This is very likely 
to create a memory leak.

I can't easily re-test this on a 1.4 or 1.5 cluster at this time, but I 
examined the current code in ThriftTransportPool regarding the third message. 
No reference is kept to the Daemon instance, so it's never stopped. This is 
normally not a problem in JVMs because daemon threads are interrupted 
automatically at JVM shutdown, but this is a problem for hot-redeploys in 
Tomcat.

It would be nice to have a call to shut down the Thrift checker thread. For the 
ZooKeeper threads, we should be able to call ClientCnxn.close() by calling 
ZooKeeper.close(), but the ZooKeepers are locked up in ZooSession.sessions and 
can't be closed directly.

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