faster feed cleanup

This commit is contained in:
Athou
2013-07-05 17:00:32 +02:00
parent 1e36564ff8
commit d8f3316747
4 changed files with 15 additions and 4 deletions

View File

@@ -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);

View File

@@ -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<Feed> {
List<Feed> 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;
}

View File

@@ -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<FeedFeedEntry> entryRelationships;
@OneToMany(mappedBy = "feed")