[
https://issues.jboss.org/browse/ISPN-1388?page=com.atlassian.jira.plugin....
]
Galder Zamarreño updated ISPN-1388:
-----------------------------------
Description:
At the end of the testsuite, there're about ~900 scheduled eviction threads lying
around. Is the scheduled eviction executor thread service at all???
What's not very clear here is whose responsibility is to shutdown executor services.
For example, take @ComponentName(ASYNC_TRANSPORT_EXECUTOR), this is injected into:
CacheImpl, RpcManagerImpl, QueryInterceptor and JGroupsTransport. Who's supposed to
shut it down? Right now, it's RpcManagerImpl doing it, which is a named cache
component.
This opens another interesting question: Are ExecutorService components global, or per
cache? Or both? For example, take ASYNC_TRANSPORT_EXECUTOR, it's injected to
Transport, so must be global. But then you see RpcManagerImpl, which is a named cache
component shutting it down? Surely that cannot be right.
Going back to the original concern, take KnownComponentNames.EVICTION_SCHEDULED_EXECUTOR
which is used by EvictionManagerImpl, this is never shutdown by anyone, which matches
what's seen in the thread dump.
was:
At the end of the testsuite, there're about ~900 scheduled eviction threads lying
around. Is the scheduled eviction executor thread shutdown at all???
What's not very clear here is whose responsibility is to shutdown executor services.
For example, take @ComponentName(ASYNC_TRANSPORT_EXECUTOR), this is injected into:
CacheImpl, RpcManagerImpl, QueryInterceptor and JGroupsTransport. Who's supposed to
shut it down? Right now, it's RpcManagerImpl doing it, which is a named cache
component.
This opens another interesting question: Are ExecutorService components global, or per
cache? Or both? For example, take ASYNC_TRANSPORT_EXECUTOR, it's injected to
Transport, so must be global. But then you see RpcManagerImpl, which is a named cache
component shutting it down? Surely that cannot be right.
Going back to the original concern, take KnownComponentNames.EVICTION_SCHEDULED_EXECUTOR
which is used by EvictionManagerImpl, this is never shutdown by anyone, which matches
what's seen in the thread dump.
Eviction scheduled executor never shutdown
------------------------------------------
Key: ISPN-1388
URL:
https://issues.jboss.org/browse/ISPN-1388
Project: Infinispan
Issue Type: Bug
Components: Eviction
Affects Versions: 5.0.1.FINAL
Reporter: Galder Zamarreño
Assignee: Galder Zamarreño
Priority: Critical
Fix For: 5.1.0.ALPHA2 , 5.1.0.FINAL
Attachments: threaddump.txt
At the end of the testsuite, there're about ~900 scheduled eviction threads lying
around. Is the scheduled eviction executor thread service at all???
What's not very clear here is whose responsibility is to shutdown executor services.
For example, take @ComponentName(ASYNC_TRANSPORT_EXECUTOR), this is injected into:
CacheImpl, RpcManagerImpl, QueryInterceptor and JGroupsTransport. Who's supposed to
shut it down? Right now, it's RpcManagerImpl doing it, which is a named cache
component.
This opens another interesting question: Are ExecutorService components global, or per
cache? Or both? For example, take ASYNC_TRANSPORT_EXECUTOR, it's injected to
Transport, so must be global. But then you see RpcManagerImpl, which is a named cache
component shutting it down? Surely that cannot be right.
Going back to the original concern, take KnownComponentNames.EVICTION_SCHEDULED_EXECUTOR
which is used by EvictionManagerImpl, this is never shutdown by anyone, which matches
what's seen in the thread dump.
--
This message is automatically generated by JIRA.
For more information on JIRA, see:
http://www.atlassian.com/software/jira