[logback-dev] [JIRA] (LOGBACK-1382) AsyncAppender#putUninterruptibly looks suspicious
QOS.CH (JIRA)
noreply-jira at qos.ch
Thu Feb 15 09:35:00 CET 2018
Gérald Quintana created LOGBACK-1382:
----------------------------------------
Summary: AsyncAppender#putUninterruptibly looks suspicious
Key: LOGBACK-1382
URL: https://jira.qos.ch/browse/LOGBACK-1382
Project: logback
Issue Type: Task
Components: logback-core
Affects Versions: 1.2.3
Environment: The code in AsyncAppenderBase#putUninterruptibly is suspicious, if InterruptedException is raised in blockingQueue.put(...), the interrupted flag is set to true but as there is a while(true) around the current Thread will not be interrupted and the code in the finally block may never occur.
{code:java}
private void putUninterruptibly(E eventObject) {
boolean interrupted = false;
try {
while (true) {
try {
blockingQueue.put(eventObject);
break;
} catch (InterruptedException e) {
interrupted = true;
}
}
} finally {
if (interrupted) {
Thread.currentThread().interrupt();
}
}
}
{code}
What's the purpose of this infinite loop?
I suspect the intent was to write while(!interrupted&&!pushed) instead of while(true).
To me, the blockingQueue.put is a blocking operation, the current thread will wait until it can push the event in the queue. Attempting multiple retries seems useless and dangerous to me.
Reporter: Gérald Quintana
Assignee: Logback dev list
--
This message was sent by Atlassian JIRA
(v7.3.1#73012)
More information about the logback-dev
mailing list