LOG4J2-1422 AsyncAppender$AsyncThread.shutdown() now verifies if the underlying 
appender is sleeping/waiting/joining/parked, and if so, interrupt()s the thread


Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/f783408e
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/f783408e
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/f783408e

Branch: refs/heads/master
Commit: f783408eb32d374a90ac828a25537687b4a696b3
Parents: 4f57c7e
Author: rpopma <[email protected]>
Authored: Sat Jun 11 02:35:58 2016 +0900
Committer: rpopma <[email protected]>
Committed: Sat Jun 11 02:35:58 2016 +0900

----------------------------------------------------------------------
 .../org/apache/logging/log4j/core/appender/AsyncAppender.java     | 3 +++
 1 file changed, 3 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/f783408e/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AsyncAppender.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AsyncAppender.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AsyncAppender.java
index 0abb07e..7a449d2 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AsyncAppender.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AsyncAppender.java
@@ -349,6 +349,9 @@ public final class AsyncAppender extends AbstractAppender {
             if (queue.isEmpty()) {
                 queue.offer(SHUTDOWN);
             }
+            if (getState() == State.TIMED_WAITING || getState() == 
State.WAITING) {
+                this.interrupt(); // LOG4J2-1422: if underlying appender is 
stuck in wait/sleep/join/park call
+            }
         }
     }
 

Reply via email to