This is an automated email from the ASF dual-hosted git repository. lukaszlenart pushed a commit to branch feature/WW-3576-session-map-staleness in repository https://gitbox.apache.org/repos/asf/struts.git
commit 62c8ce3f21ffc8b9348dc183bbc5d88e3d20ec81 Author: Lukasz Lenart <[email protected]> AuthorDate: Sun Oct 18 09:03:29 2026 +0200 WW-3576 docs: a put that finds its session invalidated pins a new one once Co-Authored-By: Claude Opus 5.5 <[email protected]> --- .../specs/2026-10-18-WW-3576-session-map-staleness-design.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/superpowers/specs/2026-10-18-WW-3576-session-map-staleness-design.md b/docs/superpowers/specs/2026-10-18-WW-3576-session-map-staleness-design.md index 87c8ac39f..faa2ff1be 100644 --- a/docs/superpowers/specs/2026-10-18-WW-3576-session-map-staleness-design.md +++ b/docs/superpowers/specs/2026-10-18-WW-3576-session-map-staleness-design.md @@ -43,9 +43,10 @@ when that session dies (request threads), and one map that is stale *by design* ## Anti-goals -- Catching `IllegalStateException` and carrying on as if the session were alive (PR #1577 retried the - write into a new session inside the catch). Catching it to *detect* invalidation and answer - "no session" is the design. +- Catching `IllegalStateException` and carrying on as if the session were alive (PR #1577 swallowed it in + every method and kept the dead reference). Catching it to *detect* invalidation, un-pin, and answer + "no session" is the design — including a `put` that discovers the invalidation, un-pins, and pins a + new session once through the normal `request.getSession(true)` path (no loop). - Any request-thread map that resolves its session through a request after that request has ended. - Any path by which background writes land in a session other than the one the process started in.
