discourse/app/jobs/scheduled/weekly.rb
Sam Saffron 372f6f4f22
FEATURE: limit number of notifications per user to 10,000
Introduces a new site setting `max_notifications_per_user`.

Out-of-the-box this is set to 10,000. If a user exceeds this number of
notifications, we will delete the oldest notifications keeping only 10,000.

To disable this safeguard set the setting to 0.

Enforcement happens weekly.

This is in place to protect the system from pathological states where a
single user has enormous amounts of notifications causing various queries
to time out. In practice nobody looks back more than a few hundred notifications.
2020-02-24 11:42:50 +11:00

21 lines
512 B
Ruby

# frozen_string_literal: true
module Jobs
# This job will run on a regular basis to update statistics and denormalized data.
# If it does not run, the site will not function properly.
class Weekly < ::Jobs::Scheduled
every 1.week
def execute(args)
ScoreCalculator.new.calculate
MiniScheduler::Stat.purge_old
Draft.cleanup!
UserAuthToken.cleanup!
Upload.reset_unknown_extensions!
Email::Cleaner.delete_rejected!
Notification.purge_old!
end
end
end