On topology change, changes to primary session ownership determine when a given member should schedule expiration of a given session, or cancel a scheduled expiration of a previously owned session. Primary ownership is determined by 2 components: the key partitioner and a consistent hash. The key partitioner determines which the segment to which a given key is assigned. A consistent hash determines which member is the primary owner of a given segment.
Rescheduling of session expiration is triggered from a data rehash event. However, when the second to last member leaves the cluster, there is no data rehash event, thus expired session owned by the leaving member are never removed. To fix this, we must also trigger rescheduling of expiration in the event of a topology change where no rehashing occurs.
This results in expired web sessions/SFSBs remaining in memory, potentially indefinitely.