Periodically remove expired PuSH subscribers (#4654)
parent
143b77e10d
commit
f391a4673a
|
@ -26,6 +26,7 @@ class Subscription < ApplicationRecord
|
||||||
|
|
||||||
scope :confirmed, -> { where(confirmed: true) }
|
scope :confirmed, -> { where(confirmed: true) }
|
||||||
scope :future_expiration, -> { where(arel_table[:expires_at].gt(Time.now.utc)) }
|
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 }
|
scope :active, -> { confirmed.future_expiration }
|
||||||
|
|
||||||
def lease_seconds=(value)
|
def lease_seconds=(value)
|
||||||
|
|
|
@ -5,8 +5,6 @@ class Scheduler::FeedCleanupScheduler
|
||||||
include Sidekiq::Worker
|
include Sidekiq::Worker
|
||||||
|
|
||||||
def perform
|
def perform
|
||||||
logger.info 'Cleaning out home feeds of inactive users'
|
|
||||||
|
|
||||||
redis.pipelined do
|
redis.pipelined do
|
||||||
inactive_users.pluck(:account_id).each do |account_id|
|
inactive_users.pluck(:account_id).each do |account_id|
|
||||||
redis.del(FeedManager.instance.key(:home, account_id))
|
redis.del(FeedManager.instance.key(:home, account_id))
|
||||||
|
|
|
@ -5,7 +5,6 @@ class Scheduler::MediaCleanupScheduler
|
||||||
include Sidekiq::Worker
|
include Sidekiq::Worker
|
||||||
|
|
||||||
def perform
|
def perform
|
||||||
logger.info 'Cleaning out unattached media attachments'
|
|
||||||
unattached_media.find_each(&:destroy)
|
unattached_media.find_each(&:destroy)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -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
|
include Sidekiq::Worker
|
||||||
|
|
||||||
def perform
|
def perform
|
||||||
logger.info 'Queueing PuSH re-subscriptions'
|
|
||||||
Pubsubhubbub::SubscribeWorker.push_bulk(expiring_accounts.pluck(:id))
|
Pubsubhubbub::SubscribeWorker.push_bulk(expiring_accounts.pluck(:id))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -21,3 +21,6 @@
|
||||||
user_cleanup_scheduler:
|
user_cleanup_scheduler:
|
||||||
cron: '4 5 * * *'
|
cron: '4 5 * * *'
|
||||||
class: Scheduler::UserCleanupScheduler
|
class: Scheduler::UserCleanupScheduler
|
||||||
|
subscriptions_cleanup_scheduler:
|
||||||
|
cron: '2 2 * * 0'
|
||||||
|
class: Scheduler::SubscriptionsCleanupScheduler
|
||||||
|
|
Reference in New Issue