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