[ https://issues.apache.org/jira/browse/LOG4J2-702?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14059884#comment-14059884 ]
Ralph Goers commented on LOG4J2-702: ------------------------------------ While I agree with you Remko, the problem really is that once you have a reference to the PrivateConfig you might still be incrementing the counter after waitForCompletion has determined the counter is at zero. What I am struggling with is how you can make {code} config.loggerConfig.log(getName(), fqcn, marker, level, msg, t); {code} in the logMessage method signal its intention to log just by accessing the config variable. > LoggerConfig#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 > Assignee: Matt Sicker > Priority: Critical > Fix For: 2.0 > > > This is in trunk, svn commit 1608156 > LoggerConfig#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 > LoggerConfig 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