Tapestry 5
  1. Tapestry 5
  2. TAP5-1983

PerThreadManager does not cleanup on shutdown, can lead to memory leaks when application redeployed

    Details

      Description

      As reported on the mailing list:

      On Sun, Aug 5, 2012 at 1:25 AM, petr.charvat <petr.charvat@jpower8.cz> wrote:
      > My application uses tapestry 5.3.4 and I deploy it on Tomcat 6.0.35.
      > The internal tomcat listener JreMemoryLeakPreventionListener write to
      > console this message after undeploy/redeploy my application.
      >
      > 5.8.2012 9:23:18 org.apache.catalina.loader.WebappClassLoader
      > clearThreadLocalMap
      > SEVERE: The web application [/FitSoftware] created a ThreadLocal with key of
      > type
      > [org.apache.tapestry5.ioc.internal.services.PerthreadManagerImpl.MapHolder]
      > (value
      > [org.apache.tapestry5.ioc.internal.services.PerthreadManagerImpl$MapHolder@64efc9fb])
      > and a value of type [java.util.HashMap] (value [

      {1=DEFINED, 2=DEFINED, > 3=DEFINED, 4=DEFINED, 5=DEFINED, 6=DEFINED, 7=DEFINED, 8=DEFINED, 9=DEFINED, > 10=DEFINED, 11=DEFINED}

      ]) but failed to remove it when the web application
      > was stopped. This is very likely to create a memory leak.
      >
      > From the memory dump it seems, that GC can't remove previous version of the
      > application and after several redeploys permspace is gone.

      This does look like a bug, with a pretty easy fix.

      >
      > Is the message from tomcat memory leak detector relevant? What does the
      > value 1=DEFINED means?
      > Thanks for answer.

      Tapestry uses this class to manage a per-thread HashMap; the values in
      the HashMap are anything that Tapestry needs to track on a per-thread
      (not global) basis; including the values of page and component fields,
      and lots more besides. The key is an arbitrarily assigned Integer; it
      has no specific meaning.

        Activity

        Hide
        Hudson added a comment -

        Integrated in tapestry-trunk-freestyle #977 (See https://builds.apache.org/job/tapestry-trunk-freestyle/977/)
        TAP5-1983: PerThreadManager does not cleanup on shutdown, can lead to memory leaks when application redeployed (Revision c562186a30ab1bf774033106801edbea09c32c7e)

        Result = FAILURE
        hlship :
        Files :

        • tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PerthreadManagerImpl.java
        • tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/RegistryImpl.java
        Show
        Hudson added a comment - Integrated in tapestry-trunk-freestyle #977 (See https://builds.apache.org/job/tapestry-trunk-freestyle/977/ ) TAP5-1983 : PerThreadManager does not cleanup on shutdown, can lead to memory leaks when application redeployed (Revision c562186a30ab1bf774033106801edbea09c32c7e) Result = FAILURE hlship : Files : tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PerthreadManagerImpl.java tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/RegistryImpl.java

          People

          • Assignee:
            Howard M. Lewis Ship
            Reporter:
            Howard M. Lewis Ship
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development