Class: Coil::TransactionalMessagesCleanupJob
- Inherits:
-
ApplicationJob
- Object
- ApplicationJob
- Coil::TransactionalMessagesCleanupJob
- Defined in:
- app/jobs/coil/transactional_messages_cleanup_job.rb
Direct Known Subclasses
Defined Under Namespace
Classes: ExceededDeadline, Finished
Constant Summary collapse
- DuplicateJobError =
Class.new(StandardError)
- MAX_DURATION =
Sidekiq is not designed for long-running jobs, so we place an upper bound on job duration. When a job exceeds this bound, we’ll enqueue a subsequent job to pick up where we left off.
5.minutes
Instance Method Summary collapse
Instance Method Details
#perform(batch_size = 1000) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'app/jobs/coil/transactional_messages_cleanup_job.rb', line 16 def perform(batch_size = 1000) result = (batch_size) total_deletions = result.deletions.values.sum deletions_json = result.deletions.to_json case result when Finished Rails.logger.info(<<~INFO.squish) #{self.class} finished after deleting #{total_deletions} messages (#{deletions_json}). INFO when ExceededDeadline Rails.logger.info(<<~INFO.squish) #{self.class} exceeded deadline after deleting #{total_deletions} messages (#{deletions_json}). Enqueuing subsequent job. INFO self.class.perform_async(batch_size) end rescue DuplicateJobError # A duplicate job is in the midst of its message-deletion loop. We'll call # this job done and allow the other one to continue. end |