You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by "Remko Popma (JIRA)" <ji...@apache.org> on 2013/03/15 11:22:12 UTC

[jira] [Created] (LOG4J2-176) IllegalArgumentException during AsyncAppender shutdown

Remko Popma created LOG4J2-176:
----------------------------------

             Summary: IllegalArgumentException during AsyncAppender shutdown
                 Key: LOG4J2-176
                 URL: https://issues.apache.org/jira/browse/LOG4J2-176
             Project: Log4j 2
          Issue Type: Bug
          Components: Core
    Affects Versions: 2.0-beta4
         Environment: Windows 2000, JDK1.6.0_031, single-cpu machine, multiple threads calling Logger.log
            Reporter: Remko Popma
            Priority: Minor


I am seeing the following exception:
Exception in thread "Thread-7" java.lang.IllegalArgumentException: Event is not a serialized LogEvent: Shutdown
        at org.apache.logging.log4j.core.impl.Log4jLogEvent.deserialize(Log4jLogEvent.java:303)
        at org.apache.logging.log4j.core.appender.AsynchAppender$AsynchThread.run(AsynchAppender.java:229)

(I cannot reproduce this on other platforms)

I think this is what is happening:
[AppThread] calls ((LifeCycle) LogManager.getContext()).stop();
[AppThread] sets AsyncAppender.shutdown field to true (line 240)
[AsyncThread] breaks out of while(!shutdown) loop (line 196)
[AppThread] adds String "Shutdown" to queue
[AsyncThread] processes remaining items in the queue, tries to deserialize String "Shutdown" -> Error

Solution:
replace AsyncAppender line 229:
    final Log4jLogEvent event = Log4jLogEvent.deserialize(queue.take());
with
    Serializable s = queue.take();
    if (SHUTDOWN.equals(s)) { continue; } // or break?
    final Log4jLogEvent event = Log4jLogEvent.deserialize(s);
    ....

I don't think this is a major issue as the AsyncThread will exit its run() method (so JVM can exit), it just looks a bit sloppy.

--
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

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org