File tree Expand file tree Collapse file tree 2 files changed +27
-8
lines changed
main/java/org/springframework/web/server/session
test/java/org/springframework/web/server/session Expand file tree Collapse file tree 2 files changed +27
-8
lines changed Original file line number Diff line number Diff line change @@ -283,7 +283,7 @@ public Mono<Void> save() {
283
283
private void checkMaxSessionsLimit () {
284
284
if (sessions .size () >= maxSessions ) {
285
285
expiredSessionChecker .removeExpiredSessions (clock .instant ());
286
- if (sessions .size () >= maxSessions && !sessions .containsKey (this .getId ())) {
286
+ if (sessions .size () >= maxSessions && !sessions .containsKey (this .id . get ())) {
287
287
throw new IllegalStateException ("Max sessions limit reached: " + sessions .size ());
288
288
}
289
289
}
Original file line number Diff line number Diff line change @@ -160,21 +160,40 @@ void maxSessions() {
160
160
161
161
@ Test
162
162
void updateSession () {
163
- WebSession oneWebSession = insertSession ();
163
+ WebSession session = insertSession ();
164
164
165
- StepVerifier .create (oneWebSession .save ())
165
+ StepVerifier .create (session .save ())
166
166
.expectComplete ()
167
167
.verify ();
168
168
}
169
169
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 );
174
191
175
- StepVerifier .create (onceWebSession .save ())
192
+ // Updating an existing session again should still succeed.
193
+ StepVerifier .create (session .save ())
176
194
.expectComplete ()
177
195
.verify ();
196
+ assertNumSessions (10 );
178
197
}
179
198
180
199
You can’t perform that action at this time.
0 commit comments