class ElasticAPM::Spies::SidekiqSpy::Middleware

@api private

Public Instance Methods

call(_worker, job, queue) { || ... } click to toggle source
# File lib/elastic_apm/spies/sidekiq.rb, line 30
def call(_worker, job, queue)
  name = SidekiqSpy.name_for(job)
  transaction = ElasticAPM.start_transaction(name, 'Sidekiq')
  ElasticAPM.set_label(:queue, queue)

  yield

  transaction&.done :success
  transaction&.outcome = Transaction::Outcome::SUCCESS
rescue ::Exception => e
  ElasticAPM.report(e, handled: false)
  transaction&.done :error
  transaction&.outcome = Transaction::Outcome::FAILURE
  raise
ensure
  ElasticAPM.end_transaction
end