Browse Source

Move clean up of unconfirmed users to sidekiq-scheduler (#4336)

* Move clean up of unconfirmed users to sidekiq-scheduler

* mastodon:daily is now deprecated
theme_witches
Eugen Rochko 5 years ago committed by GitHub
parent
commit
467456f7a1
  1. 13
      app/workers/scheduler/user_cleanup_scheduler.rb
  2. 3
      config/sidekiq.yml
  3. 24
      lib/tasks/mastodon.rake

13
app/workers/scheduler/user_cleanup_scheduler.rb

@ -0,0 +1,13 @@ @@ -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

3
config/sidekiq.yml

@ -18,3 +18,6 @@ @@ -18,3 +18,6 @@
doorkeeper_cleanup_scheduler:
cron: '1 1 * * 0'
class: Scheduler::DoorkeeperCleanupScheduler
user_cleanup_scheduler:
cron: '4 5 * * *'
class: Scheduler::UserCleanupScheduler

24
lib/tasks/mastodon.rake

@ -1,18 +1,10 @@ @@ -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 @@ -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'

Loading…
Cancel
Save