[ https://issues.apache.org/jira/browse/LOG4J2-702?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Matt Sicker updated LOG4J2-702: ------------------------------- Priority: Critical (was: Major) > LoggerContext#waitForCompletion is not thread safe > -------------------------------------------------- > > Key: LOG4J2-702 > URL: https://issues.apache.org/jira/browse/LOG4J2-702 > Project: Log4j 2 > Issue Type: Bug > Components: Core > Affects Versions: 2.0-rc2 > Reporter: Sean Bridges > Priority: Critical > > This is in trunk, svn commit 1608156 > LoggerContext#waitForCompletion uses an AtomicInteger counter to try to > detect if there are any calls currently executing the log(Event) method, but > it does not do so in a thread safe manner. Consider two threads A and B, > where Thread A is calling clearAppenders(), and Thread B is calling > log(Event), > {code} > Thread A loggerConfig.clearAppenders() > Thread A loggerConfig.waitForCompletion() > Thread A counter.get() //returns 0 > Thread A //loggerConfig.waitForCompletion() returns > Thread B loggerConfig.log(Event) > Thread B counter.increment() > Thread A proceeds assuming no log calls are onging, but thread B is in the > log method > {code} > I'm not sure what the requirements are, but if the requirement is to not lose > logging events, I think you need some sort of synchronization outside of the > LoggerContext object. -- This message was sent by Atlassian JIRA (v6.2#6252) --------------------------------------------------------------------- To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org For additional commands, e-mail: log4j-dev-h...@logging.apache.org