mirror of
https://github.com/discourse/discourse.git
synced 2024-12-15 03:33:43 +08:00
372f6f4f22
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.
21 lines
512 B
Ruby
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
|