From e6697eb9c2c83a2cae9234083f52ab4154742362 Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Fri, 20 Nov 2015 19:58:46 +0100 Subject: [PATCH] [Fix] Fixing startup race condition on timeout of old sessions --- .../runtime/privilege/DefaultStrolchPrivilegeHandler.java | 4 ++-- .../java/li/strolch/rest/DefaultStrolchSessionHandler.java | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/li.strolch.agent/src/main/java/li/strolch/runtime/privilege/DefaultStrolchPrivilegeHandler.java b/li.strolch.agent/src/main/java/li/strolch/runtime/privilege/DefaultStrolchPrivilegeHandler.java index d2ba5f057..e479dcccd 100644 --- a/li.strolch.agent/src/main/java/li/strolch/runtime/privilege/DefaultStrolchPrivilegeHandler.java +++ b/li.strolch.agent/src/main/java/li/strolch/runtime/privilege/DefaultStrolchPrivilegeHandler.java @@ -137,7 +137,7 @@ public class DefaultStrolchPrivilegeHandler extends StrolchComponent implements @Override public void isCertificateValid(Certificate certificate) throws PrivilegeException { - assertContainerStarted(); + assertStarted(); this.privilegeHandler.isCertificateValid(certificate); } @@ -163,7 +163,7 @@ public class DefaultStrolchPrivilegeHandler extends StrolchComponent implements @Override public boolean sessionTimeout(Certificate certificate) { - assertContainerStarted(); + assertStarted(); boolean invalidateSession = this.privilegeHandler.invalidateSession(certificate); StrolchRealm realm = getContainer().getRealm(certificate); try (StrolchTransaction tx = realm.openTx(certificate, StrolchPrivilegeConstants.SESSION_TIME_OUT)) { diff --git a/li.strolch.rest/src/main/java/li/strolch/rest/DefaultStrolchSessionHandler.java b/li.strolch.rest/src/main/java/li/strolch/rest/DefaultStrolchSessionHandler.java index 2c807f1a5..54650d10b 100644 --- a/li.strolch.rest/src/main/java/li/strolch/rest/DefaultStrolchSessionHandler.java +++ b/li.strolch.rest/src/main/java/li/strolch/rest/DefaultStrolchSessionHandler.java @@ -98,8 +98,9 @@ public class DefaultStrolchSessionHandler extends StrolchComponent implements St } this.sessionTimeoutTimer = new Timer("SessionTimeoutTimer", true); //$NON-NLS-1$ + long delay = TimeUnit.MINUTES.toMillis(5); long checkInterval = TimeUnit.MINUTES.toMillis(1); - this.sessionTimeoutTimer.schedule(new SessionTimeoutTask(), checkInterval, checkInterval); + this.sessionTimeoutTimer.schedule(new SessionTimeoutTask(), delay, checkInterval); super.start(); } @@ -194,6 +195,7 @@ public class DefaultStrolchSessionHandler extends StrolchComponent implements St synchronized (this.certificateMap) { removedCert = this.certificateMap.remove(certificate.getAuthToken()); } + if (removedCert == null) logger.error(MessageFormat.format("No session was registered with token {0}", certificate.getAuthToken())); //$NON-NLS-1$