From 8039915bcfdca9a6c5ecf65642e9a801f89d47d3 Mon Sep 17 00:00:00 2001 From: Athou Date: Fri, 24 May 2013 12:28:48 +0200 Subject: [PATCH] shutdown pool when application stops --- src/main/java/com/commafeed/backend/StartupBean.java | 5 +++++ .../commafeed/backend/feeds/FeedRefreshUpdater.java | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/main/java/com/commafeed/backend/StartupBean.java b/src/main/java/com/commafeed/backend/StartupBean.java index 68f2556d..b45b6626 100644 --- a/src/main/java/com/commafeed/backend/StartupBean.java +++ b/src/main/java/com/commafeed/backend/StartupBean.java @@ -27,6 +27,7 @@ import com.commafeed.backend.dao.FeedCategoryDAO; import com.commafeed.backend.dao.FeedDAO; import com.commafeed.backend.dao.FeedSubscriptionDAO; import com.commafeed.backend.dao.UserDAO; +import com.commafeed.backend.feeds.FeedRefreshUpdater; import com.commafeed.backend.feeds.FeedRefreshWorker; import com.commafeed.backend.model.ApplicationSettings; import com.commafeed.backend.model.UserRole.Role; @@ -61,6 +62,9 @@ public class StartupBean { @Inject ApplicationSettingsService applicationSettingsService; + @Inject + FeedRefreshUpdater feedRefreshUpdater; + @Inject Instance workers; @@ -145,6 +149,7 @@ public class StartupBean { log.error("interrupted while waiting for threads to finish."); } } + feedRefreshUpdater.shutdown(); } } diff --git a/src/main/java/com/commafeed/backend/feeds/FeedRefreshUpdater.java b/src/main/java/com/commafeed/backend/feeds/FeedRefreshUpdater.java index 7054e52e..0549a323 100644 --- a/src/main/java/com/commafeed/backend/feeds/FeedRefreshUpdater.java +++ b/src/main/java/com/commafeed/backend/feeds/FeedRefreshUpdater.java @@ -78,6 +78,17 @@ public class FeedRefreshUpdater { }); } + public void shutdown() { + pool.shutdownNow(); + while (!pool.isTerminated()) { + try { + Thread.sleep(100); + } catch (InterruptedException e) { + log.error("interrupted while waiting for threads to finish."); + } + } + } + public void updateFeed(Feed feed, Collection entries) { pool.execute(new Task(feed, entries)); }