From 1d088c5eae722b004682f0187c38fbc676780883 Mon Sep 17 00:00:00 2001 From: Athou Date: Mon, 23 Feb 2015 15:33:52 +0100 Subject: [PATCH] create transaction only when needed --- .../java/com/commafeed/backend/feed/FeedQueues.java | 8 ++++++-- .../commafeed/backend/feed/FeedRefreshTaskGiver.java | 11 +++-------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/commafeed/backend/feed/FeedQueues.java b/src/main/java/com/commafeed/backend/feed/FeedQueues.java index a310bfc9..cb5f0222 100644 --- a/src/main/java/com/commafeed/backend/feed/FeedQueues.java +++ b/src/main/java/com/commafeed/backend/feed/FeedQueues.java @@ -14,17 +14,20 @@ import javax.inject.Singleton; import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.lang3.time.DateUtils; +import org.hibernate.SessionFactory; import com.codahale.metrics.Gauge; import com.codahale.metrics.Meter; import com.codahale.metrics.MetricRegistry; import com.commafeed.CommaFeedConfiguration; import com.commafeed.backend.dao.FeedDAO; +import com.commafeed.backend.dao.UnitOfWork; import com.commafeed.backend.model.Feed; @Singleton public class FeedQueues { + private SessionFactory sessionFactory; private final FeedDAO feedDAO; private final CommaFeedConfiguration config; @@ -35,7 +38,8 @@ public class FeedQueues { private Meter refill; @Inject - public FeedQueues(FeedDAO feedDAO, CommaFeedConfiguration config, MetricRegistry metrics) { + public FeedQueues(SessionFactory sessionFactory, FeedDAO feedDAO, CommaFeedConfiguration config, MetricRegistry metrics) { + this.sessionFactory = sessionFactory; this.config = config; this.feedDAO = feedDAO; @@ -67,7 +71,7 @@ public class FeedQueues { FeedRefreshContext context = takeQueue.poll(); if (context == null) { - refill(); + UnitOfWork.run(sessionFactory, () -> refill()); context = takeQueue.poll(); } return context; diff --git a/src/main/java/com/commafeed/backend/feed/FeedRefreshTaskGiver.java b/src/main/java/com/commafeed/backend/feed/FeedRefreshTaskGiver.java index 0a5fdd4d..f6235886 100644 --- a/src/main/java/com/commafeed/backend/feed/FeedRefreshTaskGiver.java +++ b/src/main/java/com/commafeed/backend/feed/FeedRefreshTaskGiver.java @@ -10,13 +10,10 @@ import javax.inject.Singleton; import lombok.extern.slf4j.Slf4j; -import org.hibernate.SessionFactory; - import com.codahale.metrics.Meter; import com.codahale.metrics.MetricRegistry; import com.commafeed.CommaFeedConfiguration; import com.commafeed.backend.dao.FeedDAO; -import com.commafeed.backend.dao.UnitOfWork; /** * Infinite loop fetching feeds from @FeedQueues and queuing them to the {@link FeedRefreshWorker} pool. @@ -26,7 +23,6 @@ import com.commafeed.backend.dao.UnitOfWork; @Singleton public class FeedRefreshTaskGiver implements Managed { - private final SessionFactory sessionFactory; private final FeedQueues queues; private final FeedRefreshWorker worker; @@ -36,9 +32,8 @@ public class FeedRefreshTaskGiver implements Managed { private Meter threadWaited; @Inject - public FeedRefreshTaskGiver(SessionFactory sessionFactory, FeedQueues queues, FeedDAO feedDAO, FeedRefreshWorker worker, - CommaFeedConfiguration config, MetricRegistry metrics) { - this.sessionFactory = sessionFactory; + public FeedRefreshTaskGiver(FeedQueues queues, FeedDAO feedDAO, FeedRefreshWorker worker, CommaFeedConfiguration config, + MetricRegistry metrics) { this.queues = queues; this.worker = worker; @@ -68,7 +63,7 @@ public class FeedRefreshTaskGiver implements Managed { public void run() { while (!executor.isShutdown()) { try { - FeedRefreshContext context = UnitOfWork.run(sessionFactory, () -> queues.take()); + FeedRefreshContext context = queues.take(); if (context != null) { feedRefreshed.mark(); worker.updateFeed(context);