logging-log4j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ralph Goers (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (LOG4J2-176) IllegalArgumentException during AsyncAppender shutdown
Date Fri, 15 Mar 2013 16:48:12 GMT

    [ https://issues.apache.org/jira/browse/LOG4J2-176?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13603499#comment-13603499

Ralph Goers commented on LOG4J2-176:

Thanks for the report. I wish we could create a unit test to reproduce it but that would probably
be difficult.

I have been meaning to ask you if this appender should move to the async project you created
and could it leverage the technologies you are leveraing there?  This may be naive since I
haven't had a chance to review that code yet.
> 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

View raw message