mirror of
https://github.com/Athou/commafeed.git
synced 2026-03-21 21:37:29 +00:00
set a timeout on more queries
This commit is contained in:
@@ -4,6 +4,7 @@ import java.util.Date;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.ejb.Stateless;
|
import javax.ejb.Stateless;
|
||||||
|
import javax.inject.Inject;
|
||||||
import javax.persistence.TypedQuery;
|
import javax.persistence.TypedQuery;
|
||||||
import javax.persistence.criteria.CriteriaQuery;
|
import javax.persistence.criteria.CriteriaQuery;
|
||||||
import javax.persistence.criteria.Root;
|
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.FeedEntry_;
|
import com.commafeed.backend.model.FeedEntry_;
|
||||||
import com.commafeed.backend.model.Feed_;
|
import com.commafeed.backend.model.Feed_;
|
||||||
|
import com.commafeed.backend.services.ApplicationSettingsService;
|
||||||
import com.google.common.collect.Iterables;
|
import com.google.common.collect.Iterables;
|
||||||
|
|
||||||
@Stateless
|
@Stateless
|
||||||
public class FeedEntryDAO extends GenericDAO<FeedEntry> {
|
public class FeedEntryDAO extends GenericDAO<FeedEntry> {
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
ApplicationSettingsService applicationSettingsService;
|
||||||
|
|
||||||
protected static final Logger log = LoggerFactory
|
protected static final Logger log = LoggerFactory
|
||||||
.getLogger(FeedEntryDAO.class);
|
.getLogger(FeedEntryDAO.class);
|
||||||
|
|
||||||
@@ -66,6 +71,7 @@ public class FeedEntryDAO extends GenericDAO<FeedEntry> {
|
|||||||
query.orderBy(builder.desc(root.get(FeedEntry_.updated)));
|
query.orderBy(builder.desc(root.get(FeedEntry_.updated)));
|
||||||
TypedQuery<FeedEntry> q = em.createQuery(query);
|
TypedQuery<FeedEntry> q = em.createQuery(query);
|
||||||
limit(q, offset, limit);
|
limit(q, offset, limit);
|
||||||
|
setTimeout(q, applicationSettingsService.get().getQueryTimeout());
|
||||||
return q.getResultList();
|
return q.getResultList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -526,11 +526,8 @@ public class FeedEntryStatusDAO extends GenericDAO<FeedEntryStatus> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setTimeout(Query query) {
|
protected void setTimeout(Query query) {
|
||||||
int queryTimeout = applicationSettingsService.get().getQueryTimeout();
|
setTimeout(query, applicationSettingsService.get().getQueryTimeout());
|
||||||
if (queryTimeout > 0) {
|
|
||||||
query.setHint("javax.persistence.query.timeout", queryTimeout);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void markSubscriptionEntries(FeedSubscription subscription,
|
public void markSubscriptionEntries(FeedSubscription subscription,
|
||||||
|
|||||||
@@ -152,6 +152,12 @@ public abstract class GenericDAO<T extends AbstractModel> {
|
|||||||
query.unwrap(Query.class).setCacheable(true);
|
query.unwrap(Query.class).setCacheable(true);
|
||||||
return query;
|
return query;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void setTimeout(javax.persistence.Query query, int queryTimeout) {
|
||||||
|
if (queryTimeout > 0) {
|
||||||
|
query.setHint("javax.persistence.query.timeout", queryTimeout);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
protected Class<T> getType() {
|
protected Class<T> getType() {
|
||||||
|
|||||||
Reference in New Issue
Block a user