diff --git a/core/src/main/java/org/infinispan/transaction/xa/TransactionTable.java b/core/src/main/java/org/infinispan/transaction/xa/TransactionTable.java index 4661d54..5b5480c 100644 --- core/src/main/java/org/infinispan/transaction/xa/TransactionTable.java +++ core/src/main/java/org/infinispan/transaction/xa/TransactionTable.java @@ -59,9 +59,10 @@ public class TransactionTable { private CacheNotifier notifier; private RpcManager rpcManager; private GlobalTransactionFactory gtf; - private ExecutorService lockBreakingService = Executors.newFixedThreadPool(1); + private ExecutorService lockBreakingService; private EmbeddedCacheManager cm; - + private final Object cleanup = new StaleTransactionCleanup(); + @Inject public void initialize(CommandsFactory commandsFactory, RpcManager rpcManager, Configuration configuration, InvocationContextContainer icc, InterceptorChain invoker, CacheNotifier notifier, @@ -78,11 +79,13 @@ public class TransactionTable { @Start private void start() { - cm.addListener(new StaleTransactionCleanup()); + lockBreakingService = Executors.newFixedThreadPool(1); + cm.addListener(this.cleanup); } @Stop private void stop() { + cm.removeListener(this.cleanup); lockBreakingService.shutdownNow(); }