lib/ddtrace/contrib/resque/resque_job.rb in ddtrace-0.9.0 vs lib/ddtrace/contrib/resque/resque_job.rb in ddtrace-0.9.1

- old
+ new

@@ -6,26 +6,37 @@ module Resque # Uses Resque job hooks to create traces module ResqueJob def around_perform(*args) pin = Pin.get_from(::Resque) + return yield unless pin && pin.tracer pin.tracer.trace('resque.job', service: pin.service) do |span| span.resource = name span.span_type = pin.app_type yield span.service = pin.service end end def after_perform(*args) pin = Pin.get_from(::Resque) - pin.tracer.shutdown! + pin.tracer.shutdown! if pin && pin.tracer end end end end end Resque.before_first_fork do pin = Datadog::Pin.get_from(Resque) + next unless pin && pin.tracer pin.tracer.set_service_info(pin.service, 'resque', Datadog::Ext::AppTypes::WORKER) +end + +Resque.after_fork do + # get the current tracer + pin = Datadog::Pin.get_from(Resque) + next unless pin && pin.tracer + # clean the state so no CoW happens + pin.tracer.provider.context = nil + pin.tracer.writer.start end