This seems to be related to: [WFLY-898] SharedLocalYieldingLockManager.LocalLock - JBoss Issue Tracker
Which was made obsolete by: [WFLY-406] Redesign web session clustering - JBoss Issue Tracker
But I don't think the change set that obsoleted the issue is in EAP 6.1.0, 6.1.1, or 6.2.0.
Does anyone know of a valid workaround?
Might this just be a product of the number of sessions in your application?
The SharedLocalYieldingClusterLockManager hold a LocalLock for every session "owned" by the local node.
However, if a session passivates, the local lock for that session stays in memory. Thus is it possible to exhaust the heap via the number of session even when using passivation. It might be a good idea to release/destroy the local lock on passivation too.
The LocalLock is meant to be destroyed when a session invalidates, expires, or when some other node takes the lock. While it's certainly possible that one of these cases is not correctly destroying the LocalLock - I want to rule out the above cause first.
I am using Seam 2.3.1, I have never explicitly released the LocalLocks before and would not expect that it would be necessary. This could be something I need to do, but I suspect it would be a bug in the framework if it was not handled automatically. Would you agree?
Also we have client side code that keeps sessions alive for a very long time, as long as the user is still active. We determine that they are active if they still have their browsers open and are moving a mouse across the document from time to time.
So my first thought too was "I bet sessions are just never dying", but we have metrics that show the number of active sessions over time. This data shows that the number of sessions is not going up and to the right, and rises/falls day to day as I would expect given our normal usage patterns.
OK - this sounds like there is a missing lock release somewhere. There is already a product issue for this:
Add yourself to the CC list for this issue to be notified as soon as a fix is available.