module CanvasSync::JobBatches::ActiveJob
def self.configure
def self.configure ::ActiveJob::Base.include BatchAwareJob begin ActiveSupport::Notifications.subscribe "discard.active_job" do |*args| handle_job_death(args) end ActiveSupport::Notifications.subscribe "retry_stopped.active_job" do |*args| handle_job_death(args) end rescue => err Rails.logger.warn(err) end Batch::Callback.worker_class ||= ActiveJobCallbackWorker end
def self.handle_job_death(job, error = nil)
def self.handle_job_death(job, error = nil) if job.is_a?(Array) event = ActiveSupport::Notifications::Event.new(*job) payload = event.payload job = payload[:job].serialize error = payload[:error] end if job["job_id"].present? && job["batch_id"].present? CanvasSync::JobBatches::Batch.process_dead_job(job['batch_id'], job['job_id']) end end