This commit removes the session threshold check added recently which
is not effective since maxIdleTime is usually much longer than the
frequency of checks. The lazy triggering of expiration checks during
create or retreive are simple and the most effective
This commit also adds a maxSessions limit on the total number of
sessions that can be created at any one time, a getSessions method
for management purposes, and a removeExpiredSessions public API
for manual triggering of expiration checks.
Issue: SPR-17020, SPR-16713
@ -47,13 +47,35 @@ public class InMemoryWebSessionStore implements WebSessionStore {
@@ -47,13 +47,35 @@ public class InMemoryWebSessionStore implements WebSessionStore {
@ -66,7 +88,7 @@ public class InMemoryWebSessionStore implements WebSessionStore {
@@ -66,7 +88,7 @@ public class InMemoryWebSessionStore implements WebSessionStore {
@ -76,6 +98,16 @@ public class InMemoryWebSessionStore implements WebSessionStore {
@@ -76,6 +98,16 @@ public class InMemoryWebSessionStore implements WebSessionStore {
@ -108,15 +140,25 @@ public class InMemoryWebSessionStore implements WebSessionStore {
@@ -108,15 +140,25 @@ public class InMemoryWebSessionStore implements WebSessionStore {
@ -198,6 +240,12 @@ public class InMemoryWebSessionStore implements WebSessionStore {
@@ -198,6 +240,12 @@ public class InMemoryWebSessionStore implements WebSessionStore {
@ -207,14 +255,14 @@ public class InMemoryWebSessionStore implements WebSessionStore {
@@ -207,14 +255,14 @@ public class InMemoryWebSessionStore implements WebSessionStore {
@Override
publicbooleanisExpired(){
returnisExpired(Instant.now(getClock()));
returnisExpired(clock.instant());
}
privatebooleanisExpired(InstantcurrentTime){
privatebooleanisExpired(Instantnow){
if(this.state.get().equals(State.EXPIRED)){
returntrue;
}
if(checkExpired(currentTime)){
if(checkExpired(now)){
this.state.set(State.EXPIRED);
returntrue;
}
@ -234,30 +282,21 @@ public class InMemoryWebSessionStore implements WebSessionStore {
@@ -234,30 +282,21 @@ public class InMemoryWebSessionStore implements WebSessionStore {
privateclassExpiredSessionChecker{
/** Max time before next expiration checks. */
privatestaticfinalintCHECK_PERIOD=60;
/** Max sessions that can be created before next expiration checks. */
@ -274,8 +313,7 @@ public class InMemoryWebSessionStore implements WebSessionStore {
@@ -274,8 +313,7 @@ public class InMemoryWebSessionStore implements WebSessionStore {