Class: Foam::Otel::Sidekiq::ServerMiddleware
- Inherits:
-
Object
- Object
- Foam::Otel::Sidekiq::ServerMiddleware
- Defined in:
- lib/foam/otel/sidekiq.rb
Instance Method Summary collapse
Instance Method Details
#call(worker, job, queue) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/foam/otel/sidekiq.rb', line 34 def call(worker, job, queue) Foam::Otel.check_fork! begin span, ctx = start_span(job, queue) rescue StandardError return yield # instrumentation must never break job processing end token = OpenTelemetry::Context.attach(ctx) begin yield # Never clobber an ERROR recorded during the job (Rollbar hook, # record_exception): a thrown-then-mapped error stays ERROR # (SPEC section 6/12), matching the Rack adapter. span.status = OpenTelemetry::Trace::Status.ok unless Errors.recorded?(span) rescue Exception => e # rubocop:disable Lint/RescueException Errors.record_once(span, e) raise ensure OpenTelemetry::Context.detach(token) begin span.finish rescue StandardError nil end end end |