GH-3471: Remove old session id from expiration store on change - #3887
Open
kalayciburak wants to merge 1 commit into
Open
Conversation
…n change When ReactiveRedisIndexedSessionRepository renames a session after changeSessionId, remove the original id from the expiration sorted set so stale entries cannot accumulate. Mirrors RedisIndexedSessionRepository. Signed-off-by: Burak Kalaycı <kalayciburak1996@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
When
ReactiveRedisIndexedSessionRepositorysaves a session afterchangeSessionId(), session and expires keys are renamed and indexes are updated, but the original session id is left in the expiration sorted set. Over time those stale members accumulate and interfere with cleanup (see #3471).This change removes the original session id from the expiration store during
saveChangeSessionId(), matching the non-reactiveRedisIndexedSessionRepositorybehavior. The subsequentexpirationStore.add(...)on save still registers the new session id.Test plan
./gradlew :spring-session-data-redis:test --tests org.springframework.session.data.redis.ReactiveRedisIndexedSessionRepositoryTests(RED before fix:WantedButNotInvokedonexpirationStore.remove; GREEN after)./gradlew :spring-session-data-redis:test(module unit suite GREEN)./gradlew :spring-session-data-redis:formatFixes #3471