sidekiq-scheduler jobs Resolves #2495master
@@ -0,0 +1,26 @@ | |||||
# frozen_string_literal: true | |||||
require 'sidekiq-scheduler' | |||||
class Scheduler::FeedCleanupScheduler | |||||
include Sidekiq::Worker | |||||
def perform | |||||
logger.info 'Cleaning out home feeds of inactive users' | |||||
redis.pipelined do | |||||
inactive_users.pluck(:account_id).each do |account_id| | |||||
redis.del(FeedManager.instance.key(:home, account_id)) | |||||
end | |||||
end | |||||
end | |||||
private | |||||
def inactive_users | |||||
User.confirmed.where('current_sign_in_at < ?', 14.days.ago) | |||||
end | |||||
def redis | |||||
Redis.current | |||||
end | |||||
end |
@@ -0,0 +1,17 @@ | |||||
# frozen_string_literal: true | |||||
require 'sidekiq-scheduler' | |||||
class Scheduler::MediaCleanupScheduler | |||||
include Sidekiq::Worker | |||||
def perform | |||||
logger.info 'Cleaning out unattached media attachments' | |||||
unattached_media.find_each(&:destroy) | |||||
end | |||||
private | |||||
def unattached_media | |||||
MediaAttachment.reorder(nil).where(status_id: nil).where('created_at < ?', 1.day.ago) | |||||
end | |||||
end |
@@ -9,3 +9,9 @@ | |||||
subscriptions_scheduler: | subscriptions_scheduler: | ||||
cron: '0 5 * * *' | cron: '0 5 * * *' | ||||
class: Scheduler::SubscriptionsScheduler | class: Scheduler::SubscriptionsScheduler | ||||
media_cleanup_scheduler: | |||||
cron: '5 4 * * *' | |||||
class: Scheduler::MediaCleanupScheduler | |||||
feed_cleanup_scheduler: | |||||
cron: '0 0 * * *' | |||||
class: Scheduler::FeedCleanupScheduler |
@@ -45,7 +45,8 @@ namespace :mastodon do | |||||
namespace :media do | namespace :media do | ||||
desc 'Removes media attachments that have not been assigned to any status for longer than a day' | desc 'Removes media attachments that have not been assigned to any status for longer than a day' | ||||
task clear: :environment do | task clear: :environment do | ||||
MediaAttachment.where(status_id: nil).where('created_at < ?', 1.day.ago).find_each(&:destroy) | |||||
# No-op | |||||
# This task is now executed via sidekiq-scheduler | |||||
end | end | ||||
desc 'Remove media attachments attributed to silenced accounts' | desc 'Remove media attachments attributed to silenced accounts' | ||||
@@ -89,9 +90,8 @@ namespace :mastodon do | |||||
namespace :feeds do | namespace :feeds do | ||||
desc 'Clear timelines of inactive users' | desc 'Clear timelines of inactive users' | ||||
task clear: :environment do | task clear: :environment do | ||||
User.confirmed.where('current_sign_in_at < ?', 14.days.ago).find_each do |user| | |||||
Redis.current.del(FeedManager.instance.key(:home, user.account_id)) | |||||
end | |||||
# No-op | |||||
# This task is now executed via sidekiq-scheduler | |||||
end | end | ||||
desc 'Clears all timelines' | desc 'Clears all timelines' | ||||