Index: branches/4.0.1-rc/terracotta/bootstrap/src/main/java/org/terracotta/modules/ehcache/async/AsyncCoordinatorImpl.java =================================================================== diff -u -N -r7587 -r7597 --- branches/4.0.1-rc/terracotta/bootstrap/src/main/java/org/terracotta/modules/ehcache/async/AsyncCoordinatorImpl.java (.../AsyncCoordinatorImpl.java) (revision 7587) +++ branches/4.0.1-rc/terracotta/bootstrap/src/main/java/org/terracotta/modules/ehcache/async/AsyncCoordinatorImpl.java (.../AsyncCoordinatorImpl.java) (revision 7597) @@ -160,7 +160,7 @@ try { tmpThread.join(); } catch (InterruptedException e) { - Thread.interrupted(); + Thread.currentThread().interrupt(); debug("Interrupted while waiting to grab node alive lock"); } } @@ -212,6 +212,7 @@ public void callback() { nodeWriteLock.lock(); try { + bucket.destroy(); list.remove(bucket); } finally { nodeWriteLock.unlock(); Index: branches/4.0.1-rc/terracotta/bootstrap/src/main/java/org/terracotta/modules/ehcache/async/ProcessingBucket.java =================================================================== diff -u -N -r7587 -r7597 --- branches/4.0.1-rc/terracotta/bootstrap/src/main/java/org/terracotta/modules/ehcache/async/ProcessingBucket.java (.../ProcessingBucket.java) (revision 7587) +++ branches/4.0.1-rc/terracotta/bootstrap/src/main/java/org/terracotta/modules/ehcache/async/ProcessingBucket.java (.../ProcessingBucket.java) (revision 7597) @@ -170,7 +170,7 @@ } } - private void destroyToolkitList() { + public void destroy() { try { debug("destroying bucket " + toolkitList.getName()); toolkitList.destroy(); @@ -181,9 +181,6 @@ + "This can safely be ignored!", t); } } - if (cleanupCallback != null) { - cleanupCallback.callback(); - } } private String getThreadName() { @@ -539,7 +536,11 @@ if (destroyAfterStop) { // Destroy anyways, either stop happened or other dead-client bucket was finished processing - destroyToolkitList(); + if (workingOnDeadBucket) { + cleanupCallback.callback(); + } else { + destroy(); + } } } }