]
RH Bugzilla Integration commented on WFLY-2521:
-----------------------------------------------
mark yarborough <myarboro(a)redhat.com> changed the Status of [bug
EJB backing cache's can generate large retention from cancelled
tasks in its scheduled executor's DelayedWorkQueue
------------------------------------------------------------------------------------------------------------------
Key: WFLY-2521
URL:
https://issues.jboss.org/browse/WFLY-2521
Project: WildFly
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: EJB
Affects Versions: 8.0.0.Beta1
Reporter: Aaron Ogburn
Assignee: Paul Ferraro
Fix For: 8.0.0.CR1
EJB backing cache's frequently cancel remove and passivation tasks with each access
and replace them with new ones. Per
http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ScheduledTh...
cancelled tasks are not removed from queue until their scheduled delay passes.
So due to the java ScheduledThreadPoolExecutor's lazy cancelled task removal, this
scheduled task cancellation and recreation model can potentially churn up quite a number
of queued cancelled tasks sitting in the executor's DelayedWorkQueue. With longer
timeouts and frequent ejb access, this can generate substantial heap overhead.
It should be pretty easy to help limit any such build up by calling purge() [1] on the
scheduled executor. Likely don't want to purge with each cancel, so perhaps a purge()
could be called on a configurable time delay or after a configurable amount of cancels?
[1]
http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ThreadPoolE...