module ActiveJob::Instrumentation

def _perform_job

def _perform_job
  instrument(:perform_start)
  super
end

def halted_callback_hook(*)

def halted_callback_hook(*)
  super
  @_halted_callback_hook_called = true
end

def instrument(operation, payload = {}, &block)

def instrument(operation, payload = {}, &block)
  enhanced_block = ->(event_payload) do
    value = block.call if block
    if defined?(@_halted_callback_hook_called) && @_halted_callback_hook_called
      event_payload[:aborted] = true
      @_halted_callback_hook_called = nil
    end
    value
  end
  ActiveSupport::Notifications.instrument \
    "#{operation}.active_job", payload.merge(adapter: queue_adapter, job: self), &enhanced_block
end

def perform_now

def perform_now
  instrument(:perform) { super }
end