diff --git a/src/main/java/com/commafeed/backend/ScheduledTasks.java b/src/main/java/com/commafeed/backend/ScheduledTasks.java index 814bc5ec..072709f1 100644 --- a/src/main/java/com/commafeed/backend/ScheduledTasks.java +++ b/src/main/java/com/commafeed/backend/ScheduledTasks.java @@ -26,13 +26,22 @@ public class ScheduledTasks { DatabaseCleaningService cleaner; /** - * clean old read statuses, runs every day at midnight + * clean old read statuses */ - @Schedule(hour = "0", persistent = false) + @Schedule(hour = "*", persistent = false) private void cleanupOldStatuses() { Date threshold = applicationSettingsService.getUnreadThreshold(); if (threshold != null) { cleaner.cleanStatusesOlderThan(threshold); } } + + /** + * clean feeds without subscriptions, then clean contents without entries + */ + @Schedule(hour = "*", persistent = false) + private void cleanFeedsAndContents() { + cleaner.cleanFeedsWithoutSubscriptions(); + cleaner.cleanContentsWithoutEntries(); + } } diff --git a/src/main/java/com/commafeed/backend/dao/FeedDAO.java b/src/main/java/com/commafeed/backend/dao/FeedDAO.java index e6b55150..7de4312a 100644 --- a/src/main/java/com/commafeed/backend/dao/FeedDAO.java +++ b/src/main/java/com/commafeed/backend/dao/FeedDAO.java @@ -107,7 +107,6 @@ public class FeedDAO extends GenericDAO { List list = q.getResultList(); int deleted = list.size(); - delete(list); return deleted; diff --git a/src/main/java/com/commafeed/backend/dao/FeedEntryContentDAO.java b/src/main/java/com/commafeed/backend/dao/FeedEntryContentDAO.java index ebb25a4e..99f46e60 100644 --- a/src/main/java/com/commafeed/backend/dao/FeedEntryContentDAO.java +++ b/src/main/java/com/commafeed/backend/dao/FeedEntryContentDAO.java @@ -2,6 +2,7 @@ package com.commafeed.backend.dao; import java.util.List; +import javax.ejb.Stateless; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Join; @@ -15,6 +16,7 @@ import com.commafeed.backend.model.FeedEntryContent_; import com.commafeed.backend.model.FeedEntry_; import com.google.common.collect.Iterables; +@Stateless public class FeedEntryContentDAO extends GenericDAO { public Long findExisting(String contentHash, String titleHash) { @@ -44,6 +46,7 @@ public class FeedEntryContentDAO extends GenericDAO { List list = q.getResultList(); int deleted = list.size(); + delete(list); return deleted; } diff --git a/src/main/java/com/commafeed/backend/services/DatabaseCleaningService.java b/src/main/java/com/commafeed/backend/services/DatabaseCleaningService.java index 674df623..135e9b46 100644 --- a/src/main/java/com/commafeed/backend/services/DatabaseCleaningService.java +++ b/src/main/java/com/commafeed/backend/services/DatabaseCleaningService.java @@ -64,9 +64,9 @@ public class DatabaseCleaningService { do { deleted = feedEntryContentDAO.deleteWithoutEntries(10); total += deleted; - log.info("removed {} feeds without subscriptions", total); + log.info("removed {} entries without feeds", total); } while (deleted != 0); - log.info("cleanup done: {} feeds without subscriptions deleted", total); + log.info("cleanup done: {} entries without feeds deleted", total); return total; }