Module: SignalFx

Defined in:
lib/signalfx/tracing/tracer.rb,
lib/signalfx/tracing.rb,
lib/signalfx/tracing/span.rb,
lib/signalfx/tracing/tags.rb,
lib/signalfx/tracing/compat.rb,
lib/signalfx/tracing/register.rb,
lib/signalfx/tracing/sfx_logger.rb,
lib/signalfx/tracing/http_sender.rb,
lib/signalfx/tracing/instrumentation/pg.rb,
lib/signalfx/tracing/instrumentation/rack.rb,
lib/signalfx/tracing/instrumentation/grape.rb,
lib/signalfx/tracing/instrumentation/rails.rb,
lib/signalfx/tracing/instrumentation/redis.rb,
lib/signalfx/tracing/instrumentation/mysql2.rb,
lib/signalfx/tracing/instrumentation/sequel.rb,
lib/signalfx/tracing/instrumentation/faraday.rb,
lib/signalfx/tracing/instrumentation/mongodb.rb,
lib/signalfx/tracing/instrumentation/sidekiq.rb,
lib/signalfx/tracing/instrumentation/sinatra.rb,
lib/signalfx/tracing/compat/phusion_passenger.rb,
lib/signalfx/tracing/instrumentation/net_http.rb,
lib/signalfx/tracing/instrumentation/restclient.rb,
lib/signalfx/tracing/instrumentation/active_record.rb,
lib/signalfx/tracing/instrumentation/elasticsearch.rb,
lib/signalfx/tracing/instrumentation/patching-test.rb,
lib/signalfx/tracing/reporter/auto_reviving_async_reporter.rb

Overview

The Jaeger client’s AsyncReporter creates a thread to handle sending spans on a flush interval. However, when a forking web server like Passenger forks a process that includes the tracer, the sender thread is lost.

This checks for the thread’s before pushing in a span to the buffer. If it doesn’t exist, it tells the instrumenter module to crate a new reporter.

If you have control over hooking into fork events, signalfx/tracing/async_reporter and reviving it should be preferred to avoid an unnecessary check with every reported span.

Defined Under Namespace

Modules: Tracing