Sampath created LOG4J2-2628:
-------------------------------

             Summary: Out of Memory issue log4j2 Async Appender stops
                 Key: LOG4J2-2628
                 URL: https://issues.apache.org/jira/browse/LOG4J2-2628
             Project: Log4j 2
          Issue Type: Bug
          Components: Core
    Affects Versions: 2.11.1
            Reporter: Sampath
             Fix For: 2.11.1


In one of the systems observed below out of memory


```java.lang.OutOfMemoryError: Java heap space
 at java.util.Arrays.copyOf(Arrays.java:3332) ~[?:1.8.0_181]
 at 
java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:124)
 ~[?:1.8.0_181]
 at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:448) 
~[?:1.8.0_181]
 at java.lang.StringBuilder.append(StringBuilder.java:136) ~[?:1.8.0_181]
 at 
org.apache.logging.log4j.core.pattern.LineSeparatorPatternConverter.format(LineSeparatorPatternConverter.java:66)
 ~[log4j-core-2.11.1.jar:2.11.1]
 at 
org.apache.logging.log4j.core.pattern.PatternFormatter.format(PatternFormatter.java:38)
 ~[log4j-core-2.11.1.jar:2.11.1]
 at 
org.apache.logging.log4j.core.layout.PatternLayout$PatternSerializer.toSerializable(PatternLayout.java:334)
 ~[log4j-core-2.11.1.jar:2.11.1]
 at 
org.apache.logging.log4j.core.layout.PatternLayout.toText(PatternLayout.java:233)
 ~[log4j-core-2.11.1.jar:2.11.1]
 at 
org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:218)
 ~[log4j-core-2.11.1.jar:2.11.1]
 at 
org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:58)
 ~[log4j-core-2.11.1.jar:2.11.1]
 at 
org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.directEncodeEvent(AbstractOutputStreamAppender.java:177)
 ~[log4j-core-2.11.1.jar:2.11.1] ```


Here out of memory can be due to application issue, However system didn't 
recover as the consumer thread AsyncAppender$AsyncThread got stopped

Later all log4j producer thread starts waiting below, This results in not 
releasing the heap. the only option to recover it by restart the system.  Is 
there any fix/option available, so that producer thread won't block and Async 
consumer thread recovers.

```
java.lang.Thread.State: WAITING
at sun.misc.Unsafe.park(Native Method)
- waiting on 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@1917df7d
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.ArrayBlockingQueue.put(ArrayBlockingQueue.java:353)
at 
org.apache.logging.log4j.core.appender.AsyncAppender.logMessageInBackgroundThread(AsyncAppender.java:204)
at 
org.apache.logging.log4j.core.async.EventRoute$1.logMessage(EventRoute.java:51)
at 
org.apache.logging.log4j.core.appender.AsyncAppender.append(AsyncAppender.java:170)
at 
org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:156)
at 
org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:129)
at 
org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:120)
at 
org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:84)
at 
org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:464)
at 
org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:448)
at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:431)
at 
org.apache.logging.log4j.core.config.LoggerConfig.logParent(LoggerConfig.java:455)
at 
org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:450)
at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:431)
at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:406)
at 
org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:63)
at org.apache.logging.log4j.core.Logger.logMessage(Logger.java:146)
at 
org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2170)
at 
org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2125)
 ```



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to