From 676a9c8d6cc7a6ac5e9d80447a9b44788b706cc5 Mon Sep 17 00:00:00 2001 From: rbygrave Date: Mon, 12 Jan 2015 20:59:32 +1300 Subject: [PATCH] Fix for #229 - EbeanCacheWarmer timer not canceled --- src/main/java/com/avaje/ebean/config/ServerConfig.java | 1 + .../server/core/DefaultServerFactory.java | 10 +++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/avaje/ebean/config/ServerConfig.java b/src/main/java/com/avaje/ebean/config/ServerConfig.java index c57336b07..b1fcfd5ce 100644 --- a/src/main/java/com/avaje/ebean/config/ServerConfig.java +++ b/src/main/java/com/avaje/ebean/config/ServerConfig.java @@ -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) { diff --git a/src/main/java/com/avaje/ebeaninternal/server/core/DefaultServerFactory.java b/src/main/java/com/avaje/ebeaninternal/server/core/DefaultServerFactory.java index c1ef5819d..018424431 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/core/DefaultServerFactory.java +++ b/src/main/java/com/avaje/ebeaninternal/server/core/DefaultServerFactory.java @@ -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(); } }