[Fix] Fixing startup race condition on timeout of old sessions

This commit is contained in:
Robert von Burg 2015-11-20 19:58:46 +01:00
parent cbee61577f
commit e6697eb9c2
2 changed files with 5 additions and 3 deletions

View File

@ -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)) {

View File

@ -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$