module OneApm::Agent::Instrumentation::ActiveJobHelper

Constants

ADAPTER_REGEX

Public Class Methods

adapter() click to toggle source
# File lib/one_apm/inst/background_job/active_job.rb, line 75
def self.adapter
  name = if ::ActiveJob::Base.queue_adapter.respond_to?(:name) 
    ::ActiveJob::Base.queue_adapter.name
  else
    ::ActiveJob::Base.queue_adapter.to_s
  end
  clean_adapter_name(name)
end
clean_adapter_name(name) click to toggle source
# File lib/one_apm/inst/background_job/active_job.rb, line 86
def self.clean_adapter_name(name)
  name = "ActiveJob::#{$1}" if ADAPTER_REGEX =~ name
  name
end
enqueue(job, block) click to toggle source
# File lib/one_apm/inst/background_job/active_job.rb, line 29
def self.enqueue(job, block)
  run_in_trace(job, block, :Produce)
end
perform(job, block) click to toggle source
# File lib/one_apm/inst/background_job/active_job.rb, line 33
def self.perform(job, block)
  state = ::OneApm::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?
    ::OneApm::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/one_apm/inst/background_job/active_job.rb, line 50
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/one_apm/inst/background_job/active_job.rb, line 56
def self.run_in_transaction(state, job, block)
  ::OneApm::Transaction.wrap(state,
                                      transaction_name_for_job(job),
                                      :other,
                                      &block)
end
transaction_category() click to toggle source
# File lib/one_apm/inst/background_job/active_job.rb, line 63
def self.transaction_category
  "OtherTransaction/#{adapter}"
end
transaction_name_for_job(job) click to toggle source
# File lib/one_apm/inst/background_job/active_job.rb, line 71
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/one_apm/inst/background_job/active_job.rb, line 67
def self.transaction_name_suffix_for_job(job)
  "#{job.class}/execute"
end