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