Skip to content

Commit 4d2cc4a

Browse files
committed
Polish contribution
See gh-35013
1 parent c04902f commit 4d2cc4a

File tree

2 files changed

+27
-8
lines changed

2 files changed

+27
-8
lines changed

spring-web/src/main/java/org/springframework/web/server/session/InMemoryWebSessionStore.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ public Mono<Void> save() {
283283
private void checkMaxSessionsLimit() {
284284
if (sessions.size() >= maxSessions) {
285285
expiredSessionChecker.removeExpiredSessions(clock.instant());
286-
if (sessions.size() >= maxSessions && !sessions.containsKey(this.getId())) {
286+
if (sessions.size() >= maxSessions && !sessions.containsKey(this.id.get())) {
287287
throw new IllegalStateException("Max sessions limit reached: " + sessions.size());
288288
}
289289
}

spring-web/src/test/java/org/springframework/web/server/session/InMemoryWebSessionStoreTests.java

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -160,21 +160,40 @@ void maxSessions() {
160160

161161
@Test
162162
void updateSession() {
163-
WebSession oneWebSession = insertSession();
163+
WebSession session = insertSession();
164164

165-
StepVerifier.create(oneWebSession.save())
165+
StepVerifier.create(session.save())
166166
.expectComplete()
167167
.verify();
168168
}
169169

170-
@Test
171-
void updateSession_whenMaxSessionsReached() {
172-
WebSession onceWebSession = insertSession();
173-
IntStream.range(1, 10000).forEach(i -> insertSession());
170+
@Test // gh-35013
171+
void updateSessionAfterMaxSessionLimitIsExceeded() {
172+
this.store.setMaxSessions(10);
173+
174+
WebSession session = insertSession();
175+
assertNumSessions(1);
176+
177+
IntStream.rangeClosed(1, 9).forEach(i -> insertSession());
178+
assertNumSessions(10);
179+
180+
// Updating an existing session should succeed.
181+
StepVerifier.create(session.save())
182+
.expectComplete()
183+
.verify();
184+
assertNumSessions(10);
185+
186+
// Saving an additional new session should fail.
187+
assertThatIllegalStateException()
188+
.isThrownBy(this::insertSession)
189+
.withMessage("Max sessions limit reached: 10");
190+
assertNumSessions(10);
174191

175-
StepVerifier.create(onceWebSession.save())
192+
// Updating an existing session again should still succeed.
193+
StepVerifier.create(session.save())
176194
.expectComplete()
177195
.verify();
196+
assertNumSessions(10);
178197
}
179198

180199

0 commit comments

Comments
 (0)