module NewRelic::Agent::Instrumentation::ActiveJobHelper

Constants

ADAPTER_REGEX

Public Class Methods

adapter() click to toggle source
# File lib/new_relic/agent/instrumentation/active_job.rb, line 76
def self.adapter
  adapter_class = if ::ActiveJob::Base.queue_adapter.class == Class
    ::ActiveJob::Base.queue_adapter
  else
    ::ActiveJob::Base.queue_adapter.class
  end

  clean_adapter_name(adapter_class.name)
end
clean_adapter_name(name) click to toggle source
# File lib/new_relic/agent/instrumentation/active_job.rb, line 88
def self.clean_adapter_name(name)
  name = "ActiveJob::#{$1}" if ADAPTER_REGEX =~ name
  name
end
enqueue(job, block) click to toggle source
# File lib/new_relic/agent/instrumentation/active_job.rb, line 30
def self.enqueue(job, block)
  run_in_trace(job, block, :Produce)
end
perform(job, block) click to toggle source
# File lib/new_relic/agent/instrumentation/active_job.rb, line 34
def self.perform(job, block)
  state = ::NewRelic::Agent::TransactionState.tl_get

  # Don't nest transactions if we're already in a web transaction.
  # Probably inline processing the job if that happens, so just trace.
  if state.in_web_transaction?
    run_in_trace(job, block, :Consume)
  elsif state.in_background_transaction?
    ::NewRelic::Agent::Transaction.set_default_transaction_name(
      transaction_name_suffix_for_job(job),
      transaction_category)
    block.call
  else
    run_in_transaction(state, job, block)
  end
end
run_in_trace(job, block, event) click to toggle source
# File lib/new_relic/agent/instrumentation/active_job.rb, line 51
def self.run_in_trace(job, block, event)
  trace_execution_scoped("MessageBroker/#{adapter}/Queue/#{event}/Named/#{job.queue_name}") do
    block.call
  end
end
run_in_transaction(state, job, block) click to toggle source
# File lib/new_relic/agent/instrumentation/active_job.rb, line 57
def self.run_in_transaction(state, job, block)
  ::NewRelic::Agent::Transaction.wrap(state,
                                      transaction_name_for_job(job),
                                      :other,
                                      &block)
end
transaction_category() click to toggle source
# File lib/new_relic/agent/instrumentation/active_job.rb, line 64
def self.transaction_category
  "OtherTransaction/#{adapter}"
end
transaction_name_for_job(job) click to toggle source
# File lib/new_relic/agent/instrumentation/active_job.rb, line 72
def self.transaction_name_for_job(job)
  "#{transaction_category}/#{transaction_name_suffix_for_job(job)}"
end
transaction_name_suffix_for_job(job) click to toggle source
# File lib/new_relic/agent/instrumentation/active_job.rb, line 68
def self.transaction_name_suffix_for_job(job)
  "#{job.class}/execute"
end