Browse Source

Periodically remove expired PuSH subscribers (#4654)

theme_witches
Eugen Rochko 5 years ago committed by GitHub
parent
commit
f391a4673a
  1. 1
      app/models/subscription.rb
  2. 2
      app/workers/scheduler/feed_cleanup_scheduler.rb
  3. 1
      app/workers/scheduler/media_cleanup_scheduler.rb
  4. 11
      app/workers/scheduler/subscriptions_cleanup_scheduler.rb
  5. 1
      app/workers/scheduler/subscriptions_scheduler.rb
  6. 3
      config/sidekiq.yml

1
app/models/subscription.rb

@ -26,6 +26,7 @@ class Subscription < ApplicationRecord @@ -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)

2
app/workers/scheduler/feed_cleanup_scheduler.rb

@ -5,8 +5,6 @@ class Scheduler::FeedCleanupScheduler @@ -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))

1
app/workers/scheduler/media_cleanup_scheduler.rb

@ -5,7 +5,6 @@ class Scheduler::MediaCleanupScheduler @@ -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

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

1
app/workers/scheduler/subscriptions_scheduler.rb

@ -7,7 +7,6 @@ class Scheduler::SubscriptionsScheduler @@ -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

3
config/sidekiq.yml

@ -21,3 +21,6 @@ @@ -21,3 +21,6 @@
user_cleanup_scheduler:
cron: '4 5 * * *'
class: Scheduler::UserCleanupScheduler
subscriptions_cleanup_scheduler:
cron: '2 2 * * 0'
class: Scheduler::SubscriptionsCleanupScheduler

Loading…
Cancel
Save