diff --git a/lib/new_relic/agent/instrumentation/active_job.rb b/lib/new_relic/agent/instrumentation/active_job.rb index 0f8cd60f34..35ddeb7ee1 100644 --- a/lib/new_relic/agent/instrumentation/active_job.rb +++ b/lib/new_relic/agent/instrumentation/active_job.rb @@ -71,7 +71,7 @@ def self.perform(job, block) end def self.run_in_trace(job, block, event) - trace_execution_scoped("ActiveJob/#{adapter.sub(/^ActiveJob::/, '')}/Queue/#{event}/Named/#{job.queue_name}", + trace_execution_scoped("ActiveJob/#{adapter.sub(/^ActiveJob::/, '')}/#{job.class}/Queue/#{event}/Named/#{job.queue_name}", code_information: code_information_for_job(job)) do block.call end diff --git a/lib/new_relic/agent/instrumentation/sidekiq/server.rb b/lib/new_relic/agent/instrumentation/sidekiq/server.rb index b1ea4ccc06..0f3e62b3ea 100644 --- a/lib/new_relic/agent/instrumentation/sidekiq/server.rb +++ b/lib/new_relic/agent/instrumentation/sidekiq/server.rb @@ -24,7 +24,7 @@ def call(worker, msg, queue, *_) end trace_headers = msg.delete(NewRelic::NEWRELIC_KEY) - perform_action_with_newrelic_trace(trace_args) do + NewRelic::Agent::Tracer.start_and_end_txn_experiment(name: trace_args[:name], category: trace_args[:category], options: trace_args) do NewRelic::Agent::Transaction.merge_untrusted_agent_attributes( NewRelic::Agent::AttributePreFiltering.pre_filter(msg['args'], self.class.nr_attribute_options), ATTRIBUTE_JOB_NAMESPACE, diff --git a/lib/new_relic/agent/tracer.rb b/lib/new_relic/agent/tracer.rb index bb6eb01619..c07fe85765 100644 --- a/lib/new_relic/agent/tracer.rb +++ b/lib/new_relic/agent/tracer.rb @@ -112,6 +112,25 @@ def in_transaction(name: nil, end end + def start_and_end_txn_experiment(name: nil, partial_name: nil, category:, options: {}) + current_transaction&.finish + + if name + options[:transaction_name] = name + else + options[:transaction_name] = Transaction.name_from_partial( + partial_name, + category + ) + end + + txn = NewRelic::Agent::Transaction.start_new_transaction(Tracer.state, category, options) + + yield + + txn.finish + end + # Starts a segment on the current transaction (if one exists) # or starts a new transaction otherwise. #