From d8f3316747f13813fc9f689ccf7a5f8e540d82ab Mon Sep 17 00:00:00 2001 From: Athou Date: Fri, 5 Jul 2013 17:00:32 +0200 Subject: [PATCH] faster feed cleanup --- .../java/com/commafeed/backend/DatabaseCleaner.java | 2 +- src/main/java/com/commafeed/backend/dao/FeedDAO.java | 10 +++++++++- src/main/java/com/commafeed/backend/model/Feed.java | 3 +-- src/main/resources/META-INF/orm.xml | 4 ++++ 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/commafeed/backend/DatabaseCleaner.java b/src/main/java/com/commafeed/backend/DatabaseCleaner.java index 3d081282..0f119d7a 100644 --- a/src/main/java/com/commafeed/backend/DatabaseCleaner.java +++ b/src/main/java/com/commafeed/backend/DatabaseCleaner.java @@ -33,7 +33,7 @@ public class DatabaseCleaner { long total = 0; int deleted = -1; do { - deleted = feedDAO.deleteWithoutSubscriptions(1); + deleted = feedDAO.deleteWithoutSubscriptions(10); total += deleted; log.info("removed {} feeds without subscriptions", total); } while (deleted != 0); diff --git a/src/main/java/com/commafeed/backend/dao/FeedDAO.java b/src/main/java/com/commafeed/backend/dao/FeedDAO.java index 805d5e01..58545443 100644 --- a/src/main/java/com/commafeed/backend/dao/FeedDAO.java +++ b/src/main/java/com/commafeed/backend/dao/FeedDAO.java @@ -4,6 +4,7 @@ import java.util.Date; import java.util.List; import javax.ejb.Stateless; +import javax.persistence.Query; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.JoinType; @@ -107,7 +108,14 @@ public class FeedDAO extends GenericDAO { List list = q.getResultList(); int deleted = list.size(); - delete(list); + + for (Feed feed : list) { + Query relationshipDeleteQuery = em + .createNamedQuery("Feed.deleteEntryRelationships"); + relationshipDeleteQuery.setParameter("feedId", feed.getId()); + relationshipDeleteQuery.executeUpdate(); + delete(feed); + } return deleted; } diff --git a/src/main/java/com/commafeed/backend/model/Feed.java b/src/main/java/com/commafeed/backend/model/Feed.java index 5a0fcbd6..f29c3c8d 100644 --- a/src/main/java/com/commafeed/backend/model/Feed.java +++ b/src/main/java/com/commafeed/backend/model/Feed.java @@ -4,7 +4,6 @@ import java.util.Date; import java.util.Set; import javax.persistence.Cacheable; -import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.OneToMany; @@ -108,7 +107,7 @@ public class Feed extends AbstractModel { @Column(length = 40) private String lastContentHash; - @OneToMany(mappedBy = "feed", cascade = CascadeType.REMOVE) + @OneToMany(mappedBy = "feed") private Set entryRelationships; @OneToMany(mappedBy = "feed") diff --git a/src/main/resources/META-INF/orm.xml b/src/main/resources/META-INF/orm.xml index 7a23bbe5..d288233d 100644 --- a/src/main/resources/META-INF/orm.xml +++ b/src/main/resources/META-INF/orm.xml @@ -17,4 +17,8 @@ delete from FeedEntryStatus s where s.id in :ids + + delete from FeedFeedEntry ffe where ffe.feed.id = :feedId + + \ No newline at end of file