signalfx-tracing 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/README.md +29 -0
 - data/lib/signalfx/tracing.rb +34 -8
 - data/lib/signalfx/tracing/compat.rb +16 -0
 - data/lib/signalfx/tracing/compat/phusion_passenger.rb +20 -0
 - data/lib/signalfx/tracing/reporter/auto_reviving_async_reporter.rb +35 -0
 - data/lib/signalfx/tracing/tracer.rb +15 -0
 - data/lib/signalfx/tracing/version.rb +1 -1
 - metadata +6 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 3ccd213e2f5bb365118397b466f3ac34e660ab5e
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 8b64213ad7583469a8e7c4aea8de6b7b3a6c12ea
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: d6c606ea3b6832d534d50c5ea50e9012e6a6d665300c2a7b40a657e241cc675f2548a7387c602dd60f6a39c3586061f412fe25880376dd21ee00be2b70ce7f8c
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 5695eef0830c459b516d8d143a1e0e4e0a032a7120229141cb40a1dc9e1f012632c7a7795468f00120e2ae33fd34f223ac4f00339eb6ec7f5beed29fdd8c05e2
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -50,6 +50,9 @@ Valid lib names are listed below with the instrumentation documentation. 
     | 
|
| 
       50 
50 
     | 
    
         
             
              - Default: `signalfx-ruby-tracing`
         
     | 
| 
       51 
51 
     | 
    
         
             
            - `access_token`: SignalFx access token for authentication.
         
     | 
| 
       52 
52 
     | 
    
         
             
              - Default: `''`
         
     | 
| 
      
 53 
     | 
    
         
            +
            - `fork_safe`: If `true`, makes the tracer safe to fork if events cannot
         
     | 
| 
      
 54 
     | 
    
         
            +
              be controlled
         
     | 
| 
      
 55 
     | 
    
         
            +
              - Default: `false`
         
     | 
| 
       53 
56 
     | 
    
         | 
| 
       54 
57 
     | 
    
         
             
            Environment variables can be used to configure `service_name` and `access_token`
         
     | 
| 
       55 
58 
     | 
    
         
             
            if not given to the `configure` method.
         
     | 
| 
         @@ -78,6 +81,15 @@ This section contains details and configuration for specific frameworks. 
     | 
|
| 
       78 
81 
     | 
    
         
             
            ### Web servers
         
     | 
| 
       79 
82 
     | 
    
         | 
| 
       80 
83 
     | 
    
         
             
            - Puma >= 3.0.0
         
     | 
| 
      
 84 
     | 
    
         
            +
            - Passenger >= 5.0.25
         
     | 
| 
      
 85 
     | 
    
         
            +
             
     | 
| 
      
 86 
     | 
    
         
            +
            Instrumentation for routes using these web servers is provided through Rack.
         
     | 
| 
      
 87 
     | 
    
         
            +
            If using a framework that builds on top of Rack, such as Rails or Sinatra, our
         
     | 
| 
      
 88 
     | 
    
         
            +
            instrumentation includes Rack instrumentation. In these cases, the routes
         
     | 
| 
      
 89 
     | 
    
         
            +
            through the web server will be automatically traced.
         
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
      
 91 
     | 
    
         
            +
            When interfacing with these web servers as a Rack application, please configure
         
     | 
| 
      
 92 
     | 
    
         
            +
            [Rack instrumentation](#rack) and insert it as middleware.
         
     | 
| 
       81 
93 
     | 
    
         | 
| 
       82 
94 
     | 
    
         
             
            ### Libraries/Frameworks
         
     | 
| 
       83 
95 
     | 
    
         | 
| 
         @@ -225,6 +237,8 @@ The source for this instrumentation is located [here](https://github.com/opentra 
     | 
|
| 
       225 
237 
     | 
    
         
             
            SignalFx::Tracing::Instrumenter.configure do |p|
         
     | 
| 
       226 
238 
     | 
    
         
             
                p.instrument(:Rack)
         
     | 
| 
       227 
239 
     | 
    
         
             
            end
         
     | 
| 
      
 240 
     | 
    
         
            +
             
     | 
| 
      
 241 
     | 
    
         
            +
            use Rack::Tracer
         
     | 
| 
       228 
242 
     | 
    
         
             
            ```
         
     | 
| 
       229 
243 
     | 
    
         | 
| 
       230 
244 
     | 
    
         
             
            ## Rails
         
     | 
| 
         @@ -292,3 +306,18 @@ SignalFx::Tracing::Instrumenter.configure do |p| 
     | 
|
| 
       292 
306 
     | 
    
         
             
                p.instrument(:Sinatra)
         
     | 
| 
       293 
307 
     | 
    
         
             
            end
         
     | 
| 
       294 
308 
     | 
    
         
             
            ```
         
     | 
| 
      
 309 
     | 
    
         
            +
             
     | 
| 
      
 310 
     | 
    
         
            +
            ## Troubleshooting
         
     | 
| 
      
 311 
     | 
    
         
            +
             
     | 
| 
      
 312 
     | 
    
         
            +
            ### Forking
         
     | 
| 
      
 313 
     | 
    
         
            +
             
     | 
| 
      
 314 
     | 
    
         
            +
            If spans are no longer sent after forking a process, the span reporter thread
         
     | 
| 
      
 315 
     | 
    
         
            +
            has been lost while copying to the process.
         
     | 
| 
      
 316 
     | 
    
         
            +
             
     | 
| 
      
 317 
     | 
    
         
            +
            The reporter can be revived by calling `SignalFx::Tracing::Instrumenter.revive`
         
     | 
| 
      
 318 
     | 
    
         
            +
            in the newly created process.
         
     | 
| 
      
 319 
     | 
    
         
            +
             
     | 
| 
      
 320 
     | 
    
         
            +
            When the new process can't be handled directly, setting `fork_safe: true`
         
     | 
| 
      
 321 
     | 
    
         
            +
            when configuring the instrumentation will use a reporter that checks and revives
         
     | 
| 
      
 322 
     | 
    
         
            +
            itself every time a span is reported.
         
     | 
| 
      
 323 
     | 
    
         
            +
             
     | 
    
        data/lib/signalfx/tracing.rb
    CHANGED
    
    | 
         @@ -1,8 +1,11 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'jaeger/client'
         
     | 
| 
       2 
2 
     | 
    
         
             
            require 'jaeger/client/injectors'
         
     | 
| 
       3 
3 
     | 
    
         
             
            require 'jaeger/client/extractors'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'signalfx/tracing/reporter/auto_reviving_async_reporter'
         
     | 
| 
       4 
5 
     | 
    
         
             
            require 'signalfx/tracing/http_sender'
         
     | 
| 
      
 6 
     | 
    
         
            +
            require 'signalfx/tracing/tracer'
         
     | 
| 
       5 
7 
     | 
    
         
             
            require 'signalfx/tracing/register'
         
     | 
| 
      
 8 
     | 
    
         
            +
            require 'signalfx/tracing/compat'
         
     | 
| 
       6 
9 
     | 
    
         
             
            require 'thread'
         
     | 
| 
       7 
10 
     | 
    
         | 
| 
       8 
11 
     | 
    
         
             
            module SignalFx
         
     | 
| 
         @@ -11,16 +14,21 @@ module SignalFx 
     | 
|
| 
       11 
14 
     | 
    
         | 
| 
       12 
15 
     | 
    
         
             
                  class << self
         
     | 
| 
       13 
16 
     | 
    
         | 
| 
       14 
     | 
    
         
            -
                    attr_reader :ingest_url
         
     | 
| 
      
 17 
     | 
    
         
            +
                    attr_reader :ingest_url, :service_name, :access_token
         
     | 
| 
       15 
18 
     | 
    
         
             
                    attr_accessor :tracer
         
     | 
| 
       16 
19 
     | 
    
         | 
| 
       17 
20 
     | 
    
         
             
                    def configure(tracer: nil,
         
     | 
| 
       18 
21 
     | 
    
         
             
                                  ingest_url: ENV['SIGNALFX_INGEST_URL'] || 'https://ingest.signalfx.com/v1/trace',
         
     | 
| 
       19 
22 
     | 
    
         
             
                                  service_name: ENV['SIGNALFX_SERVICE_NAME'] || "signalfx-ruby-tracing",
         
     | 
| 
       20 
23 
     | 
    
         
             
                                  access_token: ENV['SIGNALFX_ACCESS_TOKEN'],
         
     | 
| 
       21 
     | 
    
         
            -
                                  auto_instrument: false 
     | 
| 
      
 24 
     | 
    
         
            +
                                  auto_instrument: false,
         
     | 
| 
      
 25 
     | 
    
         
            +
                                  fork_safe: false)
         
     | 
| 
       22 
26 
     | 
    
         
             
                      @ingest_url = ingest_url
         
     | 
| 
      
 27 
     | 
    
         
            +
                      @service_name = service_name
         
     | 
| 
      
 28 
     | 
    
         
            +
                      @access_token = access_token
         
     | 
| 
      
 29 
     | 
    
         
            +
                      @fork_safe = fork_safe
         
     | 
| 
       23 
30 
     | 
    
         
             
                      set_tracer(tracer: tracer, service_name: service_name, access_token: access_token)
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
       24 
32 
     | 
    
         
             
                      if auto_instrument
         
     | 
| 
       25 
33 
     | 
    
         
             
                        Register.available_libs.each_pair do |key, value|
         
     | 
| 
       26 
34 
     | 
    
         
             
                          value.instrument
         
     | 
| 
         @@ -28,6 +36,8 @@ module SignalFx 
     | 
|
| 
       28 
36 
     | 
    
         
             
                      else
         
     | 
| 
       29 
37 
     | 
    
         
             
                        yield self
         
     | 
| 
       30 
38 
     | 
    
         
             
                      end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                      Compat.apply
         
     | 
| 
       31 
41 
     | 
    
         
             
                    end
         
     | 
| 
       32 
42 
     | 
    
         | 
| 
       33 
43 
     | 
    
         
             
                    def instrument(to_patch, **args)
         
     | 
| 
         @@ -47,8 +57,10 @@ module SignalFx 
     | 
|
| 
       47 
57 
     | 
    
         
             
                        headers["X-SF-Token"] = access_token if access_token && !access_token.empty?
         
     | 
| 
       48 
58 
     | 
    
         | 
| 
       49 
59 
     | 
    
         
             
                        encoder = Jaeger::Client::Encoders::ThriftEncoder.new(service_name: service_name)
         
     | 
| 
      
 60 
     | 
    
         
            +
                        @http_sender = SignalFx::Tracing::HttpSenderWithFlag.new(url: @ingest_url, headers: headers, encoder: encoder)
         
     | 
| 
      
 61 
     | 
    
         
            +
                        reporter = create_reporter(@http_sender)
         
     | 
| 
       50 
62 
     | 
    
         | 
| 
       51 
     | 
    
         
            -
                         
     | 
| 
      
 63 
     | 
    
         
            +
                        sampler = Jaeger::Client::Samplers::Const.new(true)
         
     | 
| 
       52 
64 
     | 
    
         | 
| 
       53 
65 
     | 
    
         
             
                        injectors = {
         
     | 
| 
       54 
66 
     | 
    
         
             
                          OpenTracing::FORMAT_RACK => [Jaeger::Client::Injectors::B3RackCodec]
         
     | 
| 
         @@ -57,16 +69,30 @@ module SignalFx 
     | 
|
| 
       57 
69 
     | 
    
         
             
                          OpenTracing::FORMAT_RACK => [Jaeger::Client::Extractors::B3RackCodec]
         
     | 
| 
       58 
70 
     | 
    
         
             
                        }
         
     | 
| 
       59 
71 
     | 
    
         | 
| 
       60 
     | 
    
         
            -
                        @tracer =  
     | 
| 
       61 
     | 
    
         
            -
                                                       sender: http_sender,
         
     | 
| 
       62 
     | 
    
         
            -
                                                       injectors: injectors,
         
     | 
| 
       63 
     | 
    
         
            -
                                                       extractors: extractors,
         
     | 
| 
       64 
     | 
    
         
            -
                                                       flush_interval: 1)
         
     | 
| 
      
 72 
     | 
    
         
            +
                        @tracer = SignalFx::Tracing::Tracer.new(reporter: reporter, sampler: sampler, injectors: injectors, extractors: extractors)
         
     | 
| 
       65 
73 
     | 
    
         
             
                        OpenTracing.global_tracer = @tracer
         
     | 
| 
       66 
74 
     | 
    
         
             
                      else
         
     | 
| 
       67 
75 
     | 
    
         
             
                        @tracer = tracer
         
     | 
| 
       68 
76 
     | 
    
         
             
                      end
         
     | 
| 
       69 
77 
     | 
    
         
             
                    end
         
     | 
| 
      
 78 
     | 
    
         
            +
             
     | 
| 
      
 79 
     | 
    
         
            +
                    # This method will either use the default reporter, which will not check
         
     | 
| 
      
 80 
     | 
    
         
            +
                    # for the sender thread, or if fork_safe is true then it will create the
         
     | 
| 
      
 81 
     | 
    
         
            +
                    # self-reviving reporter. The main use for this is
         
     | 
| 
      
 82 
     | 
    
         
            +
                    # when the process with the tracer gets forked or goes through some
         
     | 
| 
      
 83 
     | 
    
         
            +
                    # other process that kills child threads.
         
     | 
| 
      
 84 
     | 
    
         
            +
                    def create_reporter(sender)
         
     | 
| 
      
 85 
     | 
    
         
            +
                      if @fork_safe
         
     | 
| 
      
 86 
     | 
    
         
            +
                        SignalFx::Tracing::AutoRevivingAsyncReporter.new(sender, 1)
         
     | 
| 
      
 87 
     | 
    
         
            +
                      else
         
     | 
| 
      
 88 
     | 
    
         
            +
                        Jaeger::Client::AsyncReporter.create(sender: sender, flush_interval: 1)
         
     | 
| 
      
 89 
     | 
    
         
            +
                      end
         
     | 
| 
      
 90 
     | 
    
         
            +
                    end
         
     | 
| 
      
 91 
     | 
    
         
            +
             
     | 
| 
      
 92 
     | 
    
         
            +
                    # at the moment this just sets a new reporter in the tracer
         
     | 
| 
      
 93 
     | 
    
         
            +
                    def revive
         
     | 
| 
      
 94 
     | 
    
         
            +
                      @tracer.set_reporter(create_reporter(@http_sender)) if @tracer.respond_to? :set_reporter
         
     | 
| 
      
 95 
     | 
    
         
            +
                    end
         
     | 
| 
       70 
96 
     | 
    
         
             
                  end
         
     | 
| 
       71 
97 
     | 
    
         
             
                end
         
     | 
| 
       72 
98 
     | 
    
         | 
| 
         @@ -0,0 +1,16 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module SignalFx
         
     | 
| 
      
 2 
     | 
    
         
            +
              module Tracing
         
     | 
| 
      
 3 
     | 
    
         
            +
                module Compat
         
     | 
| 
      
 4 
     | 
    
         
            +
                  def self.apply
         
     | 
| 
      
 5 
     | 
    
         
            +
                    @compat.each { |mod| mod.apply } if @compat
         
     | 
| 
      
 6 
     | 
    
         
            +
                  end
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                  def self.add_compat(mod)
         
     | 
| 
      
 9 
     | 
    
         
            +
                    @compat = [] unless @compat
         
     | 
| 
      
 10 
     | 
    
         
            +
                    @compat.push(mod)
         
     | 
| 
      
 11 
     | 
    
         
            +
                  end
         
     | 
| 
      
 12 
     | 
    
         
            +
                end
         
     | 
| 
      
 13 
     | 
    
         
            +
              end
         
     | 
| 
      
 14 
     | 
    
         
            +
            end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            require 'signalfx/tracing/compat/phusion_passenger'
         
     | 
| 
         @@ -0,0 +1,20 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module SignalFx
         
     | 
| 
      
 2 
     | 
    
         
            +
              module Tracing
         
     | 
| 
      
 3 
     | 
    
         
            +
                module Compat
         
     | 
| 
      
 4 
     | 
    
         
            +
                  module PhusionPassenger
         
     | 
| 
      
 5 
     | 
    
         
            +
                    def self.apply
         
     | 
| 
      
 6 
     | 
    
         
            +
                      # register a hook for newly spawned processes
         
     | 
| 
      
 7 
     | 
    
         
            +
                      if defined? ::PhusionPassenger
         
     | 
| 
      
 8 
     | 
    
         
            +
                        ::PhusionPassenger.on_event(:starting_worker_process) do |forked|
         
     | 
| 
      
 9 
     | 
    
         
            +
                          if forked
         
     | 
| 
      
 10 
     | 
    
         
            +
                            SignalFx::Tracing::Instrumenter.revive
         
     | 
| 
      
 11 
     | 
    
         
            +
                          end
         
     | 
| 
      
 12 
     | 
    
         
            +
                        end
         
     | 
| 
      
 13 
     | 
    
         
            +
                      end
         
     | 
| 
      
 14 
     | 
    
         
            +
                    end
         
     | 
| 
      
 15 
     | 
    
         
            +
                  end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                  add_compat PhusionPassenger
         
     | 
| 
      
 18 
     | 
    
         
            +
                end
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,35 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'jaeger/client/async_reporter'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            # The Jaeger client's AsyncReporter creates a thread to handle sending spans on
         
     | 
| 
      
 4 
     | 
    
         
            +
            # a flush interval. However, when a forking web server like Passenger forks a
         
     | 
| 
      
 5 
     | 
    
         
            +
            # process that includes the tracer, the sender thread is lost.
         
     | 
| 
      
 6 
     | 
    
         
            +
            #
         
     | 
| 
      
 7 
     | 
    
         
            +
            # This checks for the thread's before pushing in a span to the buffer.
         
     | 
| 
      
 8 
     | 
    
         
            +
            # If it doesn't exist, it tells the instrumenter module to crate a new reporter.
         
     | 
| 
      
 9 
     | 
    
         
            +
            #
         
     | 
| 
      
 10 
     | 
    
         
            +
            # If you have control over hooking into fork events, signalfx/tracing/async_reporter
         
     | 
| 
      
 11 
     | 
    
         
            +
            # and reviving it should be preferred to avoid an unnecessary check with every
         
     | 
| 
      
 12 
     | 
    
         
            +
            # reported span.
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            module SignalFx
         
     | 
| 
      
 15 
     | 
    
         
            +
              module Tracing
         
     | 
| 
      
 16 
     | 
    
         
            +
                class AutoRevivingAsyncReporter < ::Jaeger::Client::AsyncReporter
         
     | 
| 
      
 17 
     | 
    
         
            +
                  def initialize(sender, flush_interval)
         
     | 
| 
      
 18 
     | 
    
         
            +
                    @flush_interval = flush_interval
         
     | 
| 
      
 19 
     | 
    
         
            +
                    @poll_thread = Thread.new do
         
     | 
| 
      
 20 
     | 
    
         
            +
                      loop do
         
     | 
| 
      
 21 
     | 
    
         
            +
                        flush
         
     | 
| 
      
 22 
     | 
    
         
            +
                        sleep(@flush_interval)
         
     | 
| 
      
 23 
     | 
    
         
            +
                      end
         
     | 
| 
      
 24 
     | 
    
         
            +
                    end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                    super(sender)
         
     | 
| 
      
 27 
     | 
    
         
            +
                  end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                  def report(span)
         
     | 
| 
      
 30 
     | 
    
         
            +
                    ::SignalFx::Tracing::Instrumenter.revive if !@poll_thread
         
     | 
| 
      
 31 
     | 
    
         
            +
                    super
         
     | 
| 
      
 32 
     | 
    
         
            +
                  end
         
     | 
| 
      
 33 
     | 
    
         
            +
                end
         
     | 
| 
      
 34 
     | 
    
         
            +
              end
         
     | 
| 
      
 35 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'jaeger/client/tracer'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            # The default jaeger tracer doesn't expose @reporter, and attr_accessor can't
         
     | 
| 
      
 4 
     | 
    
         
            +
            # be added after the fact in a child class. So this just adds an old-fashioned
         
     | 
| 
      
 5 
     | 
    
         
            +
            # setter for @reporter.
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            module SignalFx
         
     | 
| 
      
 8 
     | 
    
         
            +
              module Tracing
         
     | 
| 
      
 9 
     | 
    
         
            +
                class Tracer < ::Jaeger::Client::Tracer
         
     | 
| 
      
 10 
     | 
    
         
            +
                  def set_reporter(reporter)
         
     | 
| 
      
 11 
     | 
    
         
            +
                    @reporter = reporter
         
     | 
| 
      
 12 
     | 
    
         
            +
                  end
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
              end
         
     | 
| 
      
 15 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: signalfx-tracing
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.1.3
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Ashwin Chandrasekar
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2018-12- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2018-12-19 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: bundler
         
     | 
| 
         @@ -220,6 +220,8 @@ files: 
     | 
|
| 
       220 
220 
     | 
    
         
             
            - bin/console
         
     | 
| 
       221 
221 
     | 
    
         
             
            - bin/setup
         
     | 
| 
       222 
222 
     | 
    
         
             
            - lib/signalfx/tracing.rb
         
     | 
| 
      
 223 
     | 
    
         
            +
            - lib/signalfx/tracing/compat.rb
         
     | 
| 
      
 224 
     | 
    
         
            +
            - lib/signalfx/tracing/compat/phusion_passenger.rb
         
     | 
| 
       223 
225 
     | 
    
         
             
            - lib/signalfx/tracing/http_sender.rb
         
     | 
| 
       224 
226 
     | 
    
         
             
            - lib/signalfx/tracing/instrumentation/active_record.rb
         
     | 
| 
       225 
227 
     | 
    
         
             
            - lib/signalfx/tracing/instrumentation/elasticsearch.rb
         
     | 
| 
         @@ -233,6 +235,8 @@ files: 
     | 
|
| 
       233 
235 
     | 
    
         
             
            - lib/signalfx/tracing/instrumentation/restclient.rb
         
     | 
| 
       234 
236 
     | 
    
         
             
            - lib/signalfx/tracing/instrumentation/sinatra.rb
         
     | 
| 
       235 
237 
     | 
    
         
             
            - lib/signalfx/tracing/register.rb
         
     | 
| 
      
 238 
     | 
    
         
            +
            - lib/signalfx/tracing/reporter/auto_reviving_async_reporter.rb
         
     | 
| 
      
 239 
     | 
    
         
            +
            - lib/signalfx/tracing/tracer.rb
         
     | 
| 
       236 
240 
     | 
    
         
             
            - lib/signalfx/tracing/version.rb
         
     | 
| 
       237 
241 
     | 
    
         
             
            - signalfx-tracing.gemspec
         
     | 
| 
       238 
242 
     | 
    
         
             
            homepage: https://github.com/signalfx/signalfx-ruby-tracing
         
     |