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 103 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 115 def self.clean_adapter_name(name) name = "ActiveJob::#{$1}" if ADAPTER_REGEX =~ name name end
code_information_for_job(job)
click to toggle source
# File lib/new_relic/agent/instrumentation/active_job.rb, line 87 def self.code_information_for_job(job) NewRelic::Agent::MethodTracerHelpers.code_information(job.class, :perform) end
enqueue(job, block)
click to toggle source
# File lib/new_relic/agent/instrumentation/active_job.rb, line 50 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 54 def self.perform(job, block) state = ::NewRelic::Agent::Tracer.state txn = state.current_transaction # Don't nest transactions if we're already in a web transaction. # Probably inline processing the job if that happens, so just trace. if txn&.recording_web_transaction? run_in_trace(job, block, :Consume) elsif txn && !txn.recording_web_transaction? ::NewRelic::Agent::Transaction.set_default_transaction_name( transaction_name_suffix_for_job(job), transaction_category ) block.call else run_in_transaction(job, block) end end
run_in_trace(job, block, event)
click to toggle source
# File lib/new_relic/agent/instrumentation/active_job.rb, line 73 def self.run_in_trace(job, block, event) trace_execution_scoped("ActiveJob/#{adapter.sub(/^ActiveJob::/, '')}/Queue/#{event}/Named/#{job.queue_name}", code_information: code_information_for_job(job)) do block.call end end
run_in_transaction(job, block)
click to toggle source
# File lib/new_relic/agent/instrumentation/active_job.rb, line 80 def self.run_in_transaction(job, block) options = code_information_for_job(job) options = {} if options.frozen? # the hash will be added to later ::NewRelic::Agent::Tracer.in_transaction(name: transaction_name_for_job(job), category: :other, options: options, &block) end
transaction_category()
click to toggle source
# File lib/new_relic/agent/instrumentation/active_job.rb, line 91 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 99 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 95 def self.transaction_name_suffix_for_job(job) "#{job.class}/execute" end