Michael Kloster (JIRA)
2013-07-28 16:47:48 UTC
Michael Kloster created LOG4J2-323:
--------------------------------------
Summary: ThreadLocal-leak on tomcat shutdown when using async logging
Key: LOG4J2-323
URL: https://issues.apache.org/jira/browse/LOG4J2-323
Project: Log4j 2
Issue Type: Bug
Affects Versions: 2.0-beta9
Environment: Mac OS X 10.8.4, Tomcat 7.0.42, java version 1.6.0_51
Reporter: Michael Kloster
Priority: Minor
When shutting down Tomcat 7.0.42, catalina.out displays the following warning indicating a memory leak:
{code}
Jul 28, 2013 9:55:59 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Jul 28, 2013 9:55:59 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Jul 28, 2013 9:55:59 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 841 ms
Jul 28, 2013 9:56:09 AM org.apache.catalina.core.StandardServer await
INFO: A valid shutdown command was received via the shutdown port. Stopping the Server instance.
Jul 28, 2013 9:56:09 AM org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["http-bio-8080"]
Jul 28, 2013 9:56:09 AM org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["ajp-bio-8009"]
Jul 28, 2013 9:56:09 AM org.apache.catalina.core.StandardService stopInternal
INFO: Stopping service Catalina
Jul 28, 2013 9:56:09 AM org.apache.catalina.loader.WebappClassLoader checkThreadLocalMapForLeaks
SEVERE: The web application [/asynclog] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [***@648bfdea]) and a value of type [org.apache.logging.log4j.core.async.AsyncLogger.Info] (value [org.apache.logging.log4j.core.async.AsyncLogger$***@4e26d560]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
Jul 28, 2013 9:56:09 AM org.apache.coyote.AbstractProtocol stop
INFO: Stopping ProtocolHandler ["http-bio-8080"]
Jul 28, 2013 9:56:09 AM org.apache.coyote.AbstractProtocol stop
INFO: Stopping ProtocolHandler ["ajp-bio-8009"]
Jul 28, 2013 9:56:09 AM org.apache.coyote.AbstractProtocol destroy
INFO: Destroying ProtocolHandler ["http-bio-8080"]
Jul 28, 2013 9:56:09 AM org.apache.coyote.AbstractProtocol destroy
INFO: Destroying ProtocolHandler ["ajp-bio-8009"]
{code}
{code:xml|title=log4j2.xml|borderStyle=solid}
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="WARN">
<appenders>
<FastRollingFile name="MyFileLog" filename="logs/my.log"
filePattern="logs/my-%d{COMPACT}.log">
<PatternLayout pattern="%d %p %c{1.} [%t] %m%n" />
<Policies>
<SizeBasedTriggeringPolicy size="5MB" />
</Policies>
</FastRollingFile>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d %p %c{1.} [%t] %m%n" />
</Console>
</appenders>
<loggers>
<logger name="mylogger" level="INFO" additivity="false">
<appender-ref ref="MyFileLog" />
</logger>
<root level="TRACE">
<appender-ref ref="Console" />
</root>
</loggers>
</configuration>
{code}
{code:title=log4j2.xml|borderStyle=solid}
#!/bin/bash
CATALINA_OPTS=-DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector
{code}
--
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
--------------------------------------
Summary: ThreadLocal-leak on tomcat shutdown when using async logging
Key: LOG4J2-323
URL: https://issues.apache.org/jira/browse/LOG4J2-323
Project: Log4j 2
Issue Type: Bug
Affects Versions: 2.0-beta9
Environment: Mac OS X 10.8.4, Tomcat 7.0.42, java version 1.6.0_51
Reporter: Michael Kloster
Priority: Minor
When shutting down Tomcat 7.0.42, catalina.out displays the following warning indicating a memory leak:
{code}
Jul 28, 2013 9:55:59 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Jul 28, 2013 9:55:59 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Jul 28, 2013 9:55:59 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 841 ms
Jul 28, 2013 9:56:09 AM org.apache.catalina.core.StandardServer await
INFO: A valid shutdown command was received via the shutdown port. Stopping the Server instance.
Jul 28, 2013 9:56:09 AM org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["http-bio-8080"]
Jul 28, 2013 9:56:09 AM org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["ajp-bio-8009"]
Jul 28, 2013 9:56:09 AM org.apache.catalina.core.StandardService stopInternal
INFO: Stopping service Catalina
Jul 28, 2013 9:56:09 AM org.apache.catalina.loader.WebappClassLoader checkThreadLocalMapForLeaks
SEVERE: The web application [/asynclog] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [***@648bfdea]) and a value of type [org.apache.logging.log4j.core.async.AsyncLogger.Info] (value [org.apache.logging.log4j.core.async.AsyncLogger$***@4e26d560]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
Jul 28, 2013 9:56:09 AM org.apache.coyote.AbstractProtocol stop
INFO: Stopping ProtocolHandler ["http-bio-8080"]
Jul 28, 2013 9:56:09 AM org.apache.coyote.AbstractProtocol stop
INFO: Stopping ProtocolHandler ["ajp-bio-8009"]
Jul 28, 2013 9:56:09 AM org.apache.coyote.AbstractProtocol destroy
INFO: Destroying ProtocolHandler ["http-bio-8080"]
Jul 28, 2013 9:56:09 AM org.apache.coyote.AbstractProtocol destroy
INFO: Destroying ProtocolHandler ["ajp-bio-8009"]
{code}
{code:xml|title=log4j2.xml|borderStyle=solid}
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="WARN">
<appenders>
<FastRollingFile name="MyFileLog" filename="logs/my.log"
filePattern="logs/my-%d{COMPACT}.log">
<PatternLayout pattern="%d %p %c{1.} [%t] %m%n" />
<Policies>
<SizeBasedTriggeringPolicy size="5MB" />
</Policies>
</FastRollingFile>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d %p %c{1.} [%t] %m%n" />
</Console>
</appenders>
<loggers>
<logger name="mylogger" level="INFO" additivity="false">
<appender-ref ref="MyFileLog" />
</logger>
<root level="TRACE">
<appender-ref ref="Console" />
</root>
</loggers>
</configuration>
{code}
{code:title=log4j2.xml|borderStyle=solid}
#!/bin/bash
CATALINA_OPTS=-DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector
{code}
--
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