[LOG4J2-1259] Log4j threads are leaking on tomcat shutdown. Simplify
cancelling future task.

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

Branch: refs/heads/LOG4J2-1349-gcfree-threadcontext
Commit: 46d7cb4c497357be0690e2eaf2edb68818fa8a21
Parents: ea302f2
Author: Gary Gregory <ggreg...@apache.org>
Authored: Tue Sep 6 20:09:44 2016 -0400
Committer: Gary Gregory <ggreg...@apache.org>
Committed: Tue Sep 6 20:09:44 2016 -0400

----------------------------------------------------------------------
 .../log4j/core/appender/rolling/CronTriggeringPolicy.java | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/46d7cb4c/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/CronTriggeringPolicy.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/CronTriggeringPolicy.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/CronTriggeringPolicy.java
index 288223c..8d8bba7 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/CronTriggeringPolicy.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/CronTriggeringPolicy.java
@@ -143,15 +143,15 @@ public final class CronTriggeringPolicy extends 
AbstractLifeCycle implements Tri
     @Override
     public boolean stop(long timeout, TimeUnit timeUnit) {
         setStopping();
+        boolean canceled = true;
         if (future != null) {
-            try {
-                future.get(timeout, timeUnit);
-            } catch (InterruptedException | ExecutionException | 
TimeoutException e) {
-                future.cancel(true);
+            if (future.isCancelled() || future.isDone()) {
+                return true;
             }
+            canceled = future.cancel(true);
         }
         setStopped();
-        return true;
+        return canceled;
     }
 
     @Override

Reply via email to