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 Mon, 18 Mar 2013 16:34:16 GMT

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

Ralph Goers commented on LOG4J2-176:
------------------------------------

I'm a bit torn on where the asynchronous appender belongs. On one hand, having all the async
stuff in one sub-project makes sense.  However, it is in a sub-project only because it has
dependencies that the core doesn't. Since AsynchAppender doesn't have any dependencies it
might make more sense to just leave it where it is.

                
> 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


Mime
View raw message