diff --git a/changelog.d/20068.misc b/changelog.d/20068.misc new file mode 100644 index 0000000000..cb2766e80a --- /dev/null +++ b/changelog.d/20068.misc @@ -0,0 +1 @@ +Routinely purge old cancelled tasks from the database. diff --git a/synapse/util/task_scheduler.py b/synapse/util/task_scheduler.py index c1790fd3ae..c01ddf7339 100644 --- a/synapse/util/task_scheduler.py +++ b/synapse/util/task_scheduler.py @@ -400,10 +400,10 @@ class TaskScheduler: """Clean old complete or failed jobs to avoid clutter the DB.""" now = self._clock.time_msec() for task in await self._store.get_scheduled_tasks( - statuses=[TaskStatus.FAILED, TaskStatus.COMPLETE], + statuses=[TaskStatus.FAILED, TaskStatus.CANCELLED, TaskStatus.COMPLETE], max_timestamp=now - TaskScheduler.KEEP_TASKS_FOR_MS, ): - # FAILED and COMPLETE tasks should never be running + # FAILED, CANCELLED and COMPLETE tasks should never be running assert task.id not in self._running_tasks await self._store.delete_scheduled_task(task.id)