-
Bug
-
Resolution: Unresolved
-
Critical
-
None
-
8.0.z.GA
-
None
The hotrod-based session manager relies on a single mortal cache entry per session, and uses a client listener to react to expiration events in order to send session destroy events to the application, and to remove the dependent immortal cache entries from RHDG.
However, if all EAP servers are shut down, no EAP server will receive expiration events, and thus the dependent immortal cache entries are never removed. Additionally, no session destroy events will be triggered for these sessions.
To fix this, we will need to add logic during session manager startup:
- Detect the above condition
- Because hotrod clients have no knowledge of each other, I can think of no other way to do this apart from using JGroups
- If the server determines that there are no other EAP servers servicing the application (i.e. cluster size is 1), iterate over all immortal metadata entries in cache that lack a mortal metadata entry equivalent, and, for each, trigger a manual (client-side) expiration event. This must be done after registering the normal expiration client listener.
- clones
-
JBEAP-25526 [GSS](7.4.z) Sessions that expire while no EAP servers are active leave orphan entries in RHDG
- New
-
WFLY-18424 HotRod-based session manager can leave entry orphans in remote cache if no WF clients are active at the time of expiration
- Open