mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-08 03:52:18 +00:00
Merge branch 'master' into bug5049
This commit is contained in:
commit
1db9349d61
18 files changed
+273
-89
No files matched your search
@@ -1,7 +1,5 @@
|
||||
package com.sap.sse.security;
|
||||
|
||||
import java.util.WeakHashMap;
|
||||
|
||||
import org.apache.shiro.session.InvalidSessionException;
|
||||
import org.apache.shiro.session.Session;
|
||||
import org.apache.shiro.session.SessionException;
|
||||
@@ -13,6 +11,7 @@ import org.apache.shiro.web.session.mgt.DefaultWebSessionManager;
|
||||
import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.common.impl.MillisecondsDurationImpl;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
import com.sap.sse.concurrent.ConcurrentWeakHashMap;
|
||||
import com.sap.sse.util.TimerWithRunnable;
|
||||
|
||||
/**
|
||||
@@ -39,7 +38,9 @@ public class SecurityWebSessionManager extends DefaultWebSessionManager {
|
||||
*/
|
||||
private static final Duration MAX_DURATION_AFTER_WHICH_TO_PING_SESSION = Duration.ONE_HOUR;
|
||||
|
||||
private static final WeakHashMap<Session, Void> sessionsAlreadyScheduledForOnChange = new WeakHashMap<>();
|
||||
private static final Object DUMMY = new Object(); // for use as dummy value in sessionsAlreadyScheduledForOnChange
|
||||
|
||||
private static final ConcurrentWeakHashMap<Session, Object> sessionsAlreadyScheduledForOnChange = new ConcurrentWeakHashMap<>();
|
||||
|
||||
public SecurityWebSessionManager() {
|
||||
super();
|
||||
@@ -56,7 +57,7 @@ public class SecurityWebSessionManager extends DefaultWebSessionManager {
|
||||
private void triggerOnChangeLatestInHalfTimeoutPeriod(Session s) {
|
||||
Duration sendDurationLatestIn = new MillisecondsDurationImpl(s.getTimeout()).minus(MAX_DURATION_ASSUMED_FOR_MESSAGE_DELIVERY);
|
||||
if (!sessionsAlreadyScheduledForOnChange.containsKey(s)) {
|
||||
sessionsAlreadyScheduledForOnChange.put(s, null);
|
||||
sessionsAlreadyScheduledForOnChange.put(s, DUMMY);
|
||||
timer.schedule(()->{ onChange(s); sessionsAlreadyScheduledForOnChange.remove(s); },
|
||||
MillisecondsTimePoint.now().plus(
|
||||
sendDurationLatestIn.compareTo(MAX_DURATION_AFTER_WHICH_TO_PING_SESSION) > 0 ?
|
||||
|
||||
Reference in new issue
Block a user