Periodically remove expired PuSH subscribers (#4654)
This commit is contained in:
		
							parent
							
								
									143b77e10d
								
							
						
					
					
						commit
						f391a4673a
					
				
					 6 changed files with 15 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -26,6 +26,7 @@ class Subscription < ApplicationRecord
 | 
			
		|||
 | 
			
		||||
  scope :confirmed, -> { where(confirmed: true) }
 | 
			
		||||
  scope :future_expiration, -> { where(arel_table[:expires_at].gt(Time.now.utc)) }
 | 
			
		||||
  scope :expired, -> { where(arel_table[:expires_at].lt(Time.now.utc)) }
 | 
			
		||||
  scope :active, -> { confirmed.future_expiration }
 | 
			
		||||
 | 
			
		||||
  def lease_seconds=(value)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,8 +5,6 @@ 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))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,7 +5,6 @@ class Scheduler::MediaCleanupScheduler
 | 
			
		|||
  include Sidekiq::Worker
 | 
			
		||||
 | 
			
		||||
  def perform
 | 
			
		||||
    logger.info 'Cleaning out unattached media attachments'
 | 
			
		||||
    unattached_media.find_each(&:destroy)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										11
									
								
								app/workers/scheduler/subscriptions_cleanup_scheduler.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								app/workers/scheduler/subscriptions_cleanup_scheduler.rb
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,11 @@
 | 
			
		|||
# frozen_string_literal: true
 | 
			
		||||
 | 
			
		||||
require 'sidekiq-scheduler'
 | 
			
		||||
 | 
			
		||||
class Scheduler::SubscriptionsCleanupScheduler
 | 
			
		||||
  include Sidekiq::Worker
 | 
			
		||||
 | 
			
		||||
  def perform
 | 
			
		||||
    Subscription.expired.in_batches.delete_all
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -7,7 +7,6 @@ class Scheduler::SubscriptionsScheduler
 | 
			
		|||
  include Sidekiq::Worker
 | 
			
		||||
 | 
			
		||||
  def perform
 | 
			
		||||
    logger.info 'Queueing PuSH re-subscriptions'
 | 
			
		||||
    Pubsubhubbub::SubscribeWorker.push_bulk(expiring_accounts.pluck(:id))
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,3 +21,6 @@
 | 
			
		|||
  user_cleanup_scheduler:
 | 
			
		||||
    cron: '4 5 * * *'
 | 
			
		||||
    class: Scheduler::UserCleanupScheduler
 | 
			
		||||
  subscriptions_cleanup_scheduler:
 | 
			
		||||
    cron: '2 2 * * 0'
 | 
			
		||||
    class: Scheduler::SubscriptionsCleanupScheduler
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue