The current web session replication code has been around for ages and suffers from a number of issues:
- By maintaining a separate local map of sessions in conjunction with the session data stored in the distributed cache, stale data is inevitable - a number of issues have cropped up in EAP testing.
- Extra concurrency measures are required to ensure synchronicity of the local session map with the distributed cache.
- Extra logic/locking is required to invalidate the local session map is required per request
- AtomicMaps, on which the current implementation relies, have proven buggy
- Session access outside of the scope of the replication valve is possible and problematic
- Maintaining sessions locally means that the clustering code needs to implement passivation and expiration manually - instead of leveraging Infinispan full capabilities.
- The current code base is tightly coupled to JBoss Web. Migrating the code to support Undertow will inevitably introduce issues and code duplication.
The new design will incorporate a proper SPI for the servlet container. Thus the logic to integrate with Undertow vs JBoss Web will be relatively thin.