Fix for #229 - EbeanCacheWarmer timer not canceled

This commit is contained in:
rbygrave
2015-01-12 20:59:32 +13:00
parent b1b9f68b7e
commit 676a9c8d6c
2 changed files with 8 additions and 3 deletions
@@ -1721,6 +1721,7 @@ public class ServerConfig {
dbEncrypt = createInstance(p, DbEncrypt.class, "dbEncrypt");
serverCacheFactory = createInstance(p, ServerCacheFactory.class, "serverCacheFactory");
serverCacheManager = createInstance(p, ServerCacheManager.class, "serverCacheManager");
cacheWarmingDelay = p.getInt("cacheWarmingDelay", cacheWarmingDelay);
String jarsProp = p.get("search.jars", p.get("jars", null));
if (jarsProp != null) {
@@ -174,8 +174,8 @@ public class DefaultServerFactory implements BootupEbeanManager {
// warm the cache in 30 seconds
long sleepMillis = 1000 * serverConfig.getCacheWarmingDelay();
if (sleepMillis > 0) {
Timer t = new Timer("EbeanCacheWarmer", true);
t.schedule(new CacheWarmer(server), sleepMillis);
Timer timer = new Timer("EbeanCacheWarmer", true);
timer.schedule(new CacheWarmer(server, timer), sleepMillis);
}
}
@@ -374,12 +374,16 @@ public class DefaultServerFactory implements BootupEbeanManager {
private final EbeanServer server;
CacheWarmer(EbeanServer server) {
private final Timer timer;
CacheWarmer(EbeanServer server, Timer timer) {
this.server = server;
this.timer = timer;
}
public void run() {
server.runCacheWarming();
timer.cancel();
}
}