[
https://issues.apache.org/jira/browse/LOG4J2-738?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14072226#comment-14072226
]
Gary Gregory commented on LOG4J2-738:
-------------------------------------
Can you test this on your set up:
{code:java}
if (thread == null || !thread.isAlive()) {
semaphore.release();
}
{code}
> RollingFileManager deadlock if async action thread fails to start
> -----------------------------------------------------------------
>
> Key: LOG4J2-738
> URL: https://issues.apache.org/jira/browse/LOG4J2-738
> Project: Log4j 2
> Issue Type: Bug
> Components: Appenders
> Affects Versions: 2.0-rc1
> Environment: amazon linux
> Reporter: Timothy Stack
>
> The symptom we're seeing is a thread stuck trying to acquire the semaphore in
> RollingFileManager.rollover(). It looks like the RollingFileManager can fail
> to release the semaphore if there is an exception during thread start for the
> async path in the rollover() method.
> I think this is the relevant chunk of code:
> {code:java}
> if (success && descriptor.getAsynchronous() != null) {
> LOGGER.debug("RollingFileManager executing async {}",
> descriptor.getAsynchronous());
> thread = new Thread(new
> AsyncAction(descriptor.getAsynchronous(), this));
> thread.start();
> }
> return true;
> }
> return false;
> } finally {
> if (thread == null) {
> semaphore.release();
> }
> }
> {code}
> So, if thread start fails (because of OOM), the 'thread' variable will be !=
> null and so the semaphore won't be released.
--
This message was sent by Atlassian JIRA
(v6.2#6252)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]