]
RH Bugzilla Integration commented on ISPN-4027:
-----------------------------------------------
Dave Stahl <dstahl(a)redhat.com> changed the Status of [bug
TransactionTable.start() initialize the TxCleanupService thread pool
even when the cache is NON_TRANSACTIONAL
-------------------------------------------------------------------------------------------------------------
Key: ISPN-4027
URL:
https://issues.jboss.org/browse/ISPN-4027
Project: Infinispan
Issue Type: Bug
Affects Versions: 6.0.1.Final
Reporter: Guillermo GARCIA OCHOA
Assignee: Takayoshi Kimura
Labels: 630
Fix For: 7.0.0.CR2
In the {{TransactionTable.start()}} each cache creates a thread pool and a job is
scheduled to clean up completed transactions.
{code:java}
private void start() {
...
totalOrder = configuration.transaction().transactionProtocol().isTotalOrder();
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);
long interval = configuration.transaction().reaperWakeUpInterval();
executorService.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
cleanupCompletedTransactions();
}
}, interval, interval, TimeUnit.MILLISECONDS);
}
}
{code}
As you can see in the code, even is the cache is {{NON_TRANSACTIONAL}} the job is
scheduled, consuming resources to do nothing (the {{completedTransactions}} map is always
empty)
Maybe I'm missing something, but our application profiling is showing us that these
threads do nothing but they are consuming precious resources because we have more than
1000 {{NON_TRANSACTIONAL}} caches.
(i) This can be considered when solving ISPN-3702 too.