Some cleanup work, plus made session sleep interval settable so that there
is a simple way to run schedulers more frequently than once per minute.
This commit is contained in:
parent
4596141f73
commit
8b1fed03d3
1 changed files with 23 additions and 19 deletions
|
@ -1298,10 +1298,9 @@ public final class Application implements IPathElement, Runnable {
|
||||||
* kicking out expired user sessions.
|
* kicking out expired user sessions.
|
||||||
*/
|
*/
|
||||||
public void run() {
|
public void run() {
|
||||||
long cleanupSleep = 60000; // thread sleep interval (fixed)
|
// interval between session cleanups
|
||||||
long scheduleSleep = 60000; // interval for scheduler invocation
|
long sessionCleanupInterval = 60000;
|
||||||
long lastScheduler = 0; // run scheduler immediately
|
long lastSessionCleanup = System.currentTimeMillis();
|
||||||
long lastCleanup = System.currentTimeMillis();
|
|
||||||
|
|
||||||
// logEvent ("Starting scheduler for "+name);
|
// logEvent ("Starting scheduler for "+name);
|
||||||
|
|
||||||
|
@ -1322,23 +1321,24 @@ public final class Application implements IPathElement, Runnable {
|
||||||
}
|
}
|
||||||
|
|
||||||
while (Thread.currentThread() == worker) {
|
while (Thread.currentThread() == worker) {
|
||||||
// get session timeout
|
|
||||||
int sessionTimeout = 30;
|
|
||||||
|
|
||||||
try {
|
|
||||||
sessionTimeout = Math.max(0,
|
|
||||||
Integer.parseInt(props.getProperty("sessionTimeout",
|
|
||||||
"30")));
|
|
||||||
} catch (Exception ignore) {
|
|
||||||
System.out.println(ignore.toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
long now = System.currentTimeMillis();
|
long now = System.currentTimeMillis();
|
||||||
|
|
||||||
// check if we should clean up user sessions
|
// check if we should clean up user sessions
|
||||||
if ((now - lastCleanup) > cleanupSleep) {
|
if ((now - lastSessionCleanup) > sessionCleanupInterval) {
|
||||||
|
|
||||||
|
lastSessionCleanup = now;
|
||||||
|
|
||||||
|
// get session timeout
|
||||||
|
int sessionTimeout = 30;
|
||||||
|
|
||||||
|
try {
|
||||||
|
sessionTimeout = Math.max(0,
|
||||||
|
Integer.parseInt(props.getProperty("sessionTimeout",
|
||||||
|
"30")));
|
||||||
|
} catch (Exception ignore) {}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
lastCleanup = now;
|
|
||||||
|
|
||||||
Hashtable cloned = (Hashtable) sessions.clone();
|
Hashtable cloned = (Hashtable) sessions.clone();
|
||||||
|
|
||||||
|
@ -1423,14 +1423,18 @@ public final class Application implements IPathElement, Runnable {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
thisEvaluator = null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
long sleepInterval = CronJob.millisToNextFullMinute();
|
||||||
|
try {
|
||||||
|
sleepInterval = Integer.parseInt(props.getProperty("schedulerInterval"))*1000;
|
||||||
|
} catch (Exception ignore) {}
|
||||||
|
|
||||||
// sleep until the next full minute
|
// sleep until the next full minute
|
||||||
try {
|
try {
|
||||||
worker.sleep(CronJob.millisToNextFullMinute());
|
worker.sleep(sleepInterval);
|
||||||
} catch (InterruptedException x) {
|
} catch (InterruptedException x) {
|
||||||
logEvent("Scheduler for " + name + " interrupted");
|
logEvent("Scheduler for " + name + " interrupted");
|
||||||
worker = null;
|
worker = null;
|
||||||
|
|
Loading…
Add table
Reference in a new issue