From 85efd40adfd7572894c186c3e3c0ae541bd58631 Mon Sep 17 00:00:00 2001 From: Michael Bayne Date: Fri, 17 Jun 2011 12:23:09 -0700 Subject: [PATCH] Better interval behavior. If no runqueue is supplied on which to prune sessions, we don't schedule a session pruner, rather than scheduling a long running database action on the Interval timer thread, thereby booching all other Intervals. --- .../samskivert/servlet/user/UserManager.java | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/samskivert/servlet/user/UserManager.java b/src/main/java/com/samskivert/servlet/user/UserManager.java index b4a1fd2f..2e419eeb 100644 --- a/src/main/java/com/samskivert/servlet/user/UserManager.java +++ b/src/main/java/com/samskivert/servlet/user/UserManager.java @@ -124,25 +124,26 @@ public class UserManager } // register a cron job to prune the session table every hour - _pruner = new Interval() { - @Override public void expired () { - try { - _repository.pruneSessions(); - } catch (PersistenceException pe) { - log.warning("Error pruning session table.", pe); - } - } - }; if (pruneQueue != null) { - _pruner.setRunQueue(pruneQueue); + _pruner = new Interval(pruneQueue) { + @Override public void expired () { + try { + _repository.pruneSessions(); + } catch (PersistenceException pe) { + log.warning("Error pruning session table.", pe); + } + } + }; + _pruner.schedule(SESSION_PRUNE_INTERVAL, true); } - _pruner.schedule(SESSION_PRUNE_INTERVAL, true); } public void shutdown () { // cancel our session table pruning thread - _pruner.cancel(); + if (_pruner != null) { + _pruner.cancel(); + } } /**