When using multiple transactional caches, we are seeing that each cache has a dedicated cleanup thread. While this is not an issue for small number of caches, when the number of caches is high as in our case (~100), we see around a 100 threads dedicated for cleanup like the following. "TxCleanupService, {default}_{XXX},user-mac-54275" daemon prio=5 tid=0x00007fa0f50d3800 nid=0x10f03 waiting on condition [0x00000001a5a5d000] "TxCleanupService,{default} _ {XXX},user-mac-54275" daemon prio=5 tid=0x00007fa0f507e800 nid=0x10e03 waiting on condition [0x00000001a595a000] "TxCleanupService,{default}_{XXX} ,user-mac-54275" daemon prio=5 tid=0x00007fa0f507e000 nid=0x10d03 waiting on condition [0x00000001a5857000] "TxCleanupService, {default} _ {XXX} ,user-mac-54275" daemon prio=5 tid=0x00007fa0f5817800 nid=0x10c03 waiting on condition [0x00000001a5754000] ... Looking at the source code for https://github.com/infinispan/infinispan/blob/master/core/src/main/java/org/infinispan/transaction/TransactionTable.java#L126 if (!totalOrder) { // Periodically run a task to cleanup the transaction table from completed transactions. ThreadFactory tf = new ThreadFactory() { @Override public Thread newThread(Runnable r) { String address = rpcManager != null ? rpcManager.getTransport().getAddress().toString() : "local"; Thread th = new Thread(r, "TxCleanupService," + cacheName + "," + address); th.setDaemon(true); return th; } }; executorService = Executors.newSingleThreadScheduledExecutor(tf); This code can benefit from drawing the threads from a dedicated pool which is bounded.
Radoslav Husar <rhusar> updated the status of jira JBEAP-6234 to Resolved
Verified with EAP 6.4.13.CP.CR2
Released with EAP 6.4.13 on Feb 02 2017.