Repository: tomee
Updated Branches:
  refs/heads/master f9959484a -> 4cf313cf4


ensure to remove the task with cancel call


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

Branch: refs/heads/master
Commit: ac0c779d1cacd16b7ec43cd83a20b16013407019
Parents: f995948
Author: Romain Manni-Bucau <[email protected]>
Authored: Wed Jun 17 01:57:22 2015 +0200
Committer: Romain Manni-Bucau <[email protected]>
Committed: Wed Jun 17 01:57:22 2015 +0200

----------------------------------------------------------------------
 .../openejb/core/stateless/StatelessInstanceManager.java       | 4 ++++
 .../src/main/java/org/apache/openejb/util/Pool.java            | 6 +++++-
 2 files changed, 9 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/ac0c779d/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java
----------------------------------------------------------------------
diff --git 
a/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java
 
b/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java
index 82cb094..aa6617c 100644
--- 
a/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java
+++ 
b/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java
@@ -65,6 +65,7 @@ import java.util.concurrent.Executors;
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.RejectedExecutionHandler;
 import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledThreadPoolExecutor;
 import java.util.concurrent.ThreadFactory;
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
@@ -100,6 +101,9 @@ public class StatelessInstanceManager {
         this.closeTimeout = closeTimeout;
         this.poolBuilder = poolBuilder;
         this.scheduledExecutor = ses;
+        if (ScheduledThreadPoolExecutor.class.isInstance(ses)) {
+            
ScheduledThreadPoolExecutor.class.cast(ses).setRemoveOnCancelPolicy(true);
+        }
 
         if (accessTimeout.getUnit() == null) {
             accessTimeout.setUnit(TimeUnit.MILLISECONDS);

http://git-wip-us.apache.org/repos/asf/tomee/blob/ac0c779d/container/openejb-core/src/main/java/org/apache/openejb/util/Pool.java
----------------------------------------------------------------------
diff --git 
a/container/openejb-core/src/main/java/org/apache/openejb/util/Pool.java 
b/container/openejb-core/src/main/java/org/apache/openejb/util/Pool.java
index 73f5bbc..cdb966f 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/util/Pool.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/util/Pool.java
@@ -140,7 +140,11 @@ public class Pool<T> {
                 createdSES = false;
             }
         }
-        if (this.future.compareAndSet(null, 
scheduledExecutorService.scheduleAtFixedRate(sweeper, 0, this.sweepInterval, 
MILLISECONDS)) && !createdSES) {
+        final ScheduledFuture<?> scheduledFuture = 
scheduledExecutorService.scheduleAtFixedRate(sweeper, 0, this.sweepInterval, 
MILLISECONDS);
+        if (!this.future.compareAndSet(null, scheduledFuture)) {
+            scheduledFuture.cancel(true);
+        }
+        if (!createdSES) {
             // we don't want to shutdown it, we'll just stop the task
             this.scheduler.set(null);
         }

Reply via email to