Class: GeneratedPdfCleanupWorker

Inherits:
Object
  • Object
show all
Includes:
Sidekiq::Job
Defined in:
app/workers/generated_pdf_cleanup_worker.rb

Overview

Reaps stale GeneratedPdf records — pending longer than
GeneratedPdf::STALE_AFTER (48 h), meaning the user never acted on the review
page. Destroying the record also removes its staged Dragonfly blob (the
dragonfly_accessor installs the after-destroy cleanup).

Scheduled daily via config/sidekiq_production_schedule.yml, mirroring
+GeneratedImageCleanupWorker+.

Instance Method Summary collapse

Instance Method Details

#performObject



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'app/workers/generated_pdf_cleanup_worker.rb', line 15

def perform
  scope = GeneratedPdf.stale
  unless scope.exists?
    Rails.logger.info '[GeneratedPdfCleanupWorker] No stale records to clean up'
    return
  end

  Rails.logger.info "[GeneratedPdfCleanupWorker] Cleaning #{scope.count} stale record(s)"
  deleted = 0
  errored = 0

  # Batch so a large backlog doesn't load every record into memory at once.
  scope.find_each(batch_size: 200) do |gen|
    gen.destroy!
    deleted += 1
  rescue StandardError => e
    errored += 1
    Rails.logger.error "[GeneratedPdfCleanupWorker] Failed to clean GeneratedPdf #{gen.id}: #{e.message}"
    ErrorReporting.warning(e) if defined?(ErrorReporting)
  end

  Rails.logger.info "[GeneratedPdfCleanupWorker] Done — deleted: #{deleted}, errors: #{errored}"
end