12345678910111213141516171819202122232425262728 |
- # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
- class ApplicationJob < ActiveJob::Base
- include ApplicationJob::HasDelayedJobMonitoringCompatibilty
- include ApplicationJob::HasQueuingPriority
- include ApplicationJob::HasCustomLogging
- discard_on HasActiveJobLock::LockKeyNotGeneratable
- # Rails 7.2 changed how background jobs are handled inside ActiveRecord transaction.
- # Turns out some jobs are still enqueued within transaction which is a bad practice.
- # For now, this reverts to pre-7.2 behavior.
- # Jobs enqueued inside transaction should be moved to post-transaction callbacks in the future.
- self.enqueue_after_transaction_commit = :never
- ActiveJob::LogSubscriber.detach_from :active_job
- # See config/initializers/delayed_jobs_timeout_per_job.rb for details.
- def self.max_run_time
- 4.hours
- end
- # Automatically retry jobs that encountered a deadlock
- # retry_on ActiveRecord::Deadlocked
- # Most jobs are safe to ignore if the underlying records are no longer available
- # discard_on ActiveJob::DeserializationError
- end
|