commit: 467456f7a19371fe4d50f25751a1d32a63e9f75c
parent: 2374d63536fd9459243a235763c87f8e9fdfc581
Author: Eugen Rochko <eugen@zeonfederated.com>
Date: Mon, 24 Jul 2017 16:17:55 +0200
Move clean up of unconfirmed users to sidekiq-scheduler (#4336)
* Move clean up of unconfirmed users to sidekiq-scheduler
* mastodon:daily is now deprecated
Diffstat:
3 files changed, 22 insertions(+), 18 deletions(-)
diff --git a/app/workers/scheduler/user_cleanup_scheduler.rb b/app/workers/scheduler/user_cleanup_scheduler.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+require 'sidekiq-scheduler'
+
+class Scheduler::UserCleanupScheduler
+ include Sidekiq::Worker
+
+ def perform
+ User.where('confirmed_at is NULL AND confirmation_sent_at <= ?', 2.days.ago).find_in_batches do |batch|
+ Account.where(id: batch.map(&:account_id)).delete_all
+ User.where(id: batch.map(&:id)).delete_all
+ end
+ end
+end
diff --git a/config/sidekiq.yml b/config/sidekiq.yml
@@ -18,3 +18,6 @@
doorkeeper_cleanup_scheduler:
cron: '1 1 * * 0'
class: Scheduler::DoorkeeperCleanupScheduler
+ user_cleanup_scheduler:
+ cron: '4 5 * * *'
+ class: Scheduler::UserCleanupScheduler
diff --git a/lib/tasks/mastodon.rake b/lib/tasks/mastodon.rake
@@ -1,18 +1,10 @@
# frozen_string_literal: true
namespace :mastodon do
- desc 'Execute daily tasks'
+ desc 'Execute daily tasks (deprecated)'
task :daily do
- %w(
- mastodon:feeds:clear
- mastodon:media:clear
- mastodon:users:clear
- mastodon:push:refresh
- ).each do |task|
- puts "Starting #{task} at #{Time.now.utc}"
- Rake::Task[task].invoke
- end
- puts "Completed daily tasks at #{Time.now.utc}"
+ # No-op
+ # All of these tasks are now executed via sidekiq-scheduler
end
desc 'Turn a user into an admin, identified by the USERNAME environment variable'
@@ -162,14 +154,10 @@ namespace :mastodon do
end
namespace :users do
- desc 'Clear out unconfirmed users'
+ desc 'Clear out unconfirmed users (deprecated)'
task clear: :environment do
- # Users that never confirmed e-mail never signed in, means they
- # only have a user record and an avatar record, with no files uploaded
- User.where('confirmed_at is NULL AND confirmation_sent_at <= ?', 2.days.ago).find_in_batches do |batch|
- Account.where(id: batch.map(&:account_id)).delete_all
- User.where(id: batch.map(&:id)).delete_all
- end
+ # No-op
+ # This task is now executed via sidekiq-scheduler
end
desc 'List e-mails of all admin users'