Skip to content

Commit 7087ab2

Browse files
committed
Fix: UndertowSessionService::reActivateSession ensure updas lastAccesstime
The call to requestDone only bumps the timeout
1 parent c027e67 commit 7087ab2

1 file changed

Lines changed: 11 additions & 3 deletions

File tree

src/main/java/eu/openanalytics/containerproxy/service/session/undertow/UndertowSessionService.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import io.undertow.server.session.InMemorySessionManager;
2626
import io.undertow.server.session.Session;
2727
import io.undertow.servlet.handlers.ServletRequestContext;
28+
import org.apache.commons.lang.reflect.FieldUtils;
2829
import org.apache.commons.logging.Log;
2930
import org.apache.commons.logging.LogFactory;
3031
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
@@ -36,11 +37,9 @@
3637
import javax.inject.Inject;
3738
import java.time.Instant;
3839
import java.util.HashSet;
39-
import java.util.Objects;
4040
import java.util.Set;
4141
import java.util.Timer;
4242
import java.util.TimerTask;
43-
import java.util.stream.Collectors;
4443

4544
@Component
4645
@ConditionalOnProperty(name = "spring.session.store-type", havingValue = "none")
@@ -80,7 +79,16 @@ public Integer getActiveUsersCount() {
8079

8180
@Override
8281
public void reActivateSession(String sessionId) {
83-
customInMemorySessionManagerFactory.getInstance().getSession(sessionId).requestDone(new HttpServerExchange(null));
82+
Session session = customInMemorySessionManagerFactory.getInstance().getSession(sessionId);
83+
try {
84+
// TODO: this is hack we would prefer not to use, let's discuss with Undertow developers to provide
85+
// a method similar to Spring's session setLastAccessedTime() method
86+
FieldUtils.writeField(session, "lastAccessed", System.currentTimeMillis(), true);
87+
} catch (IllegalAccessException e) {
88+
e.printStackTrace();
89+
}
90+
// called for the SessionImpl.bumpTimeout() method
91+
session.requestDone(new HttpServerExchange(null));
8492
}
8593

8694
@Override

0 commit comments

Comments
 (0)