From 8997024eb7066debc95755a6d537748be9e75f0c Mon Sep 17 00:00:00 2001 From: Athou Date: Mon, 1 Jul 2013 21:15:32 +0200 Subject: [PATCH] set a timeout on more queries --- src/main/java/com/commafeed/backend/dao/FeedEntryDAO.java | 6 ++++++ .../java/com/commafeed/backend/dao/FeedEntryStatusDAO.java | 7 ++----- src/main/java/com/commafeed/backend/dao/GenericDAO.java | 6 ++++++ 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/commafeed/backend/dao/FeedEntryDAO.java b/src/main/java/com/commafeed/backend/dao/FeedEntryDAO.java index a81016da..eda72784 100644 --- a/src/main/java/com/commafeed/backend/dao/FeedEntryDAO.java +++ b/src/main/java/com/commafeed/backend/dao/FeedEntryDAO.java @@ -4,6 +4,7 @@ import java.util.Date; import java.util.List; import javax.ejb.Stateless; +import javax.inject.Inject; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Root; @@ -17,11 +18,15 @@ import com.commafeed.backend.model.Feed; import com.commafeed.backend.model.FeedEntry; import com.commafeed.backend.model.FeedEntry_; import com.commafeed.backend.model.Feed_; +import com.commafeed.backend.services.ApplicationSettingsService; import com.google.common.collect.Iterables; @Stateless public class FeedEntryDAO extends GenericDAO { + @Inject + ApplicationSettingsService applicationSettingsService; + protected static final Logger log = LoggerFactory .getLogger(FeedEntryDAO.class); @@ -66,6 +71,7 @@ public class FeedEntryDAO extends GenericDAO { query.orderBy(builder.desc(root.get(FeedEntry_.updated))); TypedQuery q = em.createQuery(query); limit(q, offset, limit); + setTimeout(q, applicationSettingsService.get().getQueryTimeout()); return q.getResultList(); } diff --git a/src/main/java/com/commafeed/backend/dao/FeedEntryStatusDAO.java b/src/main/java/com/commafeed/backend/dao/FeedEntryStatusDAO.java index e8c91fa9..953f30b7 100644 --- a/src/main/java/com/commafeed/backend/dao/FeedEntryStatusDAO.java +++ b/src/main/java/com/commafeed/backend/dao/FeedEntryStatusDAO.java @@ -526,11 +526,8 @@ public class FeedEntryStatusDAO extends GenericDAO { } } - private void setTimeout(Query query) { - int queryTimeout = applicationSettingsService.get().getQueryTimeout(); - if (queryTimeout > 0) { - query.setHint("javax.persistence.query.timeout", queryTimeout); - } + protected void setTimeout(Query query) { + setTimeout(query, applicationSettingsService.get().getQueryTimeout()); } public void markSubscriptionEntries(FeedSubscription subscription, diff --git a/src/main/java/com/commafeed/backend/dao/GenericDAO.java b/src/main/java/com/commafeed/backend/dao/GenericDAO.java index 8bece550..28b3504d 100644 --- a/src/main/java/com/commafeed/backend/dao/GenericDAO.java +++ b/src/main/java/com/commafeed/backend/dao/GenericDAO.java @@ -152,6 +152,12 @@ public abstract class GenericDAO { query.unwrap(Query.class).setCacheable(true); return query; } + + protected void setTimeout(javax.persistence.Query query, int queryTimeout) { + if (queryTimeout > 0) { + query.setHint("javax.persistence.query.timeout", queryTimeout); + } + } @SuppressWarnings("unchecked") protected Class getType() {