You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by "Remko Popma (JIRA)" <ji...@apache.org> on 2014/09/24 11:43:34 UTC

[jira] [Updated] (LOG4J2-702) LoggerConfig#waitForCompletion is not thread safe

     [ https://issues.apache.org/jira/browse/LOG4J2-702?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Remko Popma updated LOG4J2-702:
-------------------------------
    Fix Version/s:     (was: 2.1)
                   2.2
         Assignee:     (was: Matt Sicker)

The Fix Version for this issue was 2.1.  Ralph (I'm assuming you want to take care of this issue), of course it would be great if you want to address this in the next few days, but I'm tentatively changing the Fix Version to 2.2 to give us some more time.

> 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
>            Priority: Critical
>             Fix For: 2.2
>
>
> 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.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org