Uploaded image for project: 'Accumulo'
  1. Accumulo
  2. ACCUMULO-1697

Thread leaks in Tomcat on hot-redeploy

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Minor
    • Resolution: Duplicate
    • 1.4.0
    • None
    • None
    • None

    Description

      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.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              jstoneham John Stoneham
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: