mirror of
https://github.com/Athou/commafeed.git
synced 2026-03-21 21:37:29 +00:00
delete old read statuses by chunks in order to avoid large transactions
This commit is contained in:
@@ -290,9 +290,10 @@ public class FeedEntryStatusDAO extends GenericDAO<FeedEntryStatus> {
|
|||||||
setTimeout(query, applicationSettingsService.get().getQueryTimeout());
|
setTimeout(query, applicationSettingsService.get().getQueryTimeout());
|
||||||
}
|
}
|
||||||
|
|
||||||
public int deleteOldStatuses(Date olderThan) {
|
public int deleteOldStatuses(Date olderThan, int limit) {
|
||||||
Query query = em.createNamedQuery("Statuses.deleteOld");
|
Query query = em.createNamedQuery("Statuses.deleteOld");
|
||||||
query.setParameter("date", olderThan);
|
query.setParameter("date", olderThan);
|
||||||
|
query.setMaxResults(limit);
|
||||||
return query.executeUpdate();
|
return query.executeUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -98,9 +98,16 @@ public class DatabaseCleaningService {
|
|||||||
feedDAO.saveOrUpdate(into);
|
feedDAO.saveOrUpdate(into);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void cleanStatusesOlderThan(Date olderThan) {
|
public long cleanStatusesOlderThan(Date olderThan) {
|
||||||
log.info("cleaning old read statuses");
|
log.info("cleaning old read statuses");
|
||||||
int deleted = feedEntryStatusDAO.deleteOldStatuses(olderThan);
|
long total = 0;
|
||||||
log.info("cleaned {} read statuses", deleted);
|
int deleted = -1;
|
||||||
|
do {
|
||||||
|
deleted = feedEntryStatusDAO.deleteOldStatuses(olderThan, 100);
|
||||||
|
total += deleted;
|
||||||
|
log.info("cleaned {} old read statuses", total);
|
||||||
|
} while (deleted != 0);
|
||||||
|
log.info("cleanup done: {} old read statuses deleted", total);
|
||||||
|
return total;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user