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-unsubscr...@logging.apache.org For additional commands, e-mail: log4j-dev-h...@logging.apache.org