Uploaded image for project: 'Log4j 2'
  1. Log4j 2
  2. LOG4J2-222

Async Logger threadpool not shut down by Tomcat shutdown

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 2.0-beta5
    • 2.0-beta6
    • Core
    • None

    Description

      From the user mailing list - conversation with Steven Yang:

      Looks like Tomcat shutdown checks for memory leaks and notices that the Disruptor threadpool used by async loggers has not been shut down.
      Is there any way to pick up a Tomcat shutdown signal and use that to trigger log subsystem shutdown?

      -------------------------
      QUOTING STEVEN:
      Thanks, I tried using asyncRoot and everything seems to log fine and I do see a lot of logs.
      And logs do seem to be flushed immediately so I do not know if the hook on shutdown is been called correctly or not.

      I am using struts and spring so I see a lot of logs (log level at DEBUG) just by starting up tomcat, so I am wondering when I use <root> how come I dont see any log at all? how much log do I have to write before it starts to flush out?

      and one thing I found is that when I use asyncRoot and when I shutdown tomcat I see the following message regarding to clearing references and thread local.
      The last one is related to log4j.
      I am trying this on tomcat 6.0.29.

      四月 28, 2013 8:34:46 上午 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
      SEVERE: The web application [/test] registered the JBDC driver [org.h2.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
      四月 28, 2013 8:34:46 上午 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
      SEVERE: The web application [/test] appears to have started a thread named [pool-2-thread-1] but has failed to stop it. This is very likely to create a memory leak.
      四月 28, 2013 8:34:46 上午 org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap
      SEVERE: The web application [/test] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@454e119d]) and a value of type [com.opensymphony.xwork2.inject.ContainerImpl] (value [com.opensymphony.xwork2.inject.ContainerImpl@8667df7]) but failed to remove it when the web application was stopped. This is very likely to create a memory leak.
      四月 28, 2013 8:34:46 上午 org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap
      SEVERE: The web application [/test] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@d7e770]) and a value of type [org.apache.logging.log4j.core.impl.Log4jLogEvent] (value [Logger=org.springframework.beans.factory.support.DefaultListableBeanFactory Level=INFO Message=Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@61e118f9: defining beans [org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframewo...

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              rpopma Remko Popma
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: