From 56f4f33707c39a72892a6d6cfd8cf6e05b33739c Mon Sep 17 00:00:00 2001 From: Athou Date: Sun, 16 Jun 2013 15:40:33 +0200 Subject: [PATCH] cleanup by batch of 1000 --- .../com/commafeed/backend/DatabaseCleaner.java | 18 +++++++++++++----- .../commafeed/backend/dao/FeedEntryDAO.java | 6 ++++-- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/commafeed/backend/DatabaseCleaner.java b/src/main/java/com/commafeed/backend/DatabaseCleaner.java index ff0a905d..04123daa 100644 --- a/src/main/java/com/commafeed/backend/DatabaseCleaner.java +++ b/src/main/java/com/commafeed/backend/DatabaseCleaner.java @@ -20,10 +20,18 @@ public class DatabaseCleaner { Calendar cal = Calendar.getInstance(); cal.add(Calendar.MINUTE, -1 * (int) unit.toMinutes(value)); - List entries = feedEntryDAO.findByInserted(cal.getTime()); - for (FeedEntry entry : entries) { - feedEntryDAO.delete(entry.getStatuses()); - } - feedEntryDAO.delete(entries); + int deleted = -1; + do { + List entries = feedEntryDAO.findByInserted( + cal.getTime(), 1000); + deleted = entries.size(); + + for (FeedEntry entry : entries) { + feedEntryDAO.delete(entry.getStatuses()); + } + feedEntryDAO.delete(entries); + + } while (deleted != 0); + } } diff --git a/src/main/java/com/commafeed/backend/dao/FeedEntryDAO.java b/src/main/java/com/commafeed/backend/dao/FeedEntryDAO.java index d50ce1af..239029cf 100644 --- a/src/main/java/com/commafeed/backend/dao/FeedEntryDAO.java +++ b/src/main/java/com/commafeed/backend/dao/FeedEntryDAO.java @@ -56,12 +56,14 @@ public class FeedEntryDAO extends GenericDAO { return list; } - public List findByInserted(Date olderThan) { + public List findByInserted(Date olderThan, int max) { CriteriaQuery query = builder.createQuery(getType()); Root root = query.from(getType()); query.where(builder.lessThan(root.get(FeedEntry_.inserted), olderThan)); - return em.createQuery(query).getResultList(); + TypedQuery q = em.createQuery(query); + q.setMaxResults(max); + return q.getResultList(); } public List findByFeed(Feed feed, int offset, int limit) {