forked from fedi/mastodon
Fix vacuum scheduler missing lock, locks never expiring (#19458)
Remove vacuuming of orphaned preview cards
This commit is contained in:
parent
1ae508bf2f
commit
bf0ab3e0fa
|
@ -8,8 +8,8 @@ class Vacuum::MediaAttachmentsVacuum
|
||||||
end
|
end
|
||||||
|
|
||||||
def perform
|
def perform
|
||||||
vacuum_cached_files! if retention_period?
|
|
||||||
vacuum_orphaned_records!
|
vacuum_orphaned_records!
|
||||||
|
vacuum_cached_files! if retention_period?
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
|
@ -9,7 +9,6 @@ class Vacuum::PreviewCardsVacuum
|
||||||
|
|
||||||
def perform
|
def perform
|
||||||
vacuum_cached_images! if retention_period?
|
vacuum_cached_images! if retention_period?
|
||||||
vacuum_orphaned_records!
|
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
@ -21,18 +20,10 @@ class Vacuum::PreviewCardsVacuum
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def vacuum_orphaned_records!
|
|
||||||
orphaned_preview_cards.in_batches.destroy_all
|
|
||||||
end
|
|
||||||
|
|
||||||
def preview_cards_past_retention_period
|
def preview_cards_past_retention_period
|
||||||
PreviewCard.cached.where(PreviewCard.arel_table[:updated_at].lt(@retention_period.ago))
|
PreviewCard.cached.where(PreviewCard.arel_table[:updated_at].lt(@retention_period.ago))
|
||||||
end
|
end
|
||||||
|
|
||||||
def orphaned_preview_cards
|
|
||||||
PreviewCard.where('NOT EXISTS (SELECT 1 FROM preview_cards_statuses WHERE preview_cards_statuses.preview_card_id = preview_cards.id)').where(PreviewCard.arel_table[:created_at].lt(TTL.ago))
|
|
||||||
end
|
|
||||||
|
|
||||||
def retention_period?
|
def retention_period?
|
||||||
@retention_period.present?
|
@retention_period.present?
|
||||||
end
|
end
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
class Scheduler::VacuumScheduler
|
class Scheduler::VacuumScheduler
|
||||||
include Sidekiq::Worker
|
include Sidekiq::Worker
|
||||||
|
|
||||||
sidekiq_options retry: 0
|
sidekiq_options retry: 0, lock: :until_executed
|
||||||
|
|
||||||
def perform
|
def perform
|
||||||
vacuum_operations.each do |operation|
|
vacuum_operations.each do |operation|
|
||||||
|
|
|
@ -35,4 +35,5 @@ SidekiqUniqueJobs.configure do |config|
|
||||||
config.reaper_count = 1000
|
config.reaper_count = 1000
|
||||||
config.reaper_interval = 600
|
config.reaper_interval = 600
|
||||||
config.reaper_timeout = 150
|
config.reaper_timeout = 150
|
||||||
|
config.lock_ttl = 50.days.to_i
|
||||||
end
|
end
|
||||||
|
|
|
@ -28,9 +28,5 @@ RSpec.describe Vacuum::PreviewCardsVacuum do
|
||||||
it 'does not delete attached preview cards' do
|
it 'does not delete attached preview cards' do
|
||||||
expect(new_preview_card.reload).to be_persisted
|
expect(new_preview_card.reload).to be_persisted
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'deletes preview cards not attached to any status' do
|
|
||||||
expect { orphaned_preview_card.reload }.to raise_error ActiveRecord::RecordNotFound
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue