-
Bug
-
Resolution: Done
-
Major
-
5.3.0.Final
-
None
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,
_
{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)
};
executorService = Executors.newSingleThreadScheduledExecutor(tf);
This code can benefit from drawing the threads from a dedicated pool which is bounded.
- is cloned by
-
JBEAP-6234 [GSS] (7.1.0) Too many threads for cleaning up infinispan transactions
- Closed
- relates to
-
JDG-304 Too many threads for cleaning up infinispan transactions
- Closed