ddtrace 0.18.3 → 0.19.0
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/CHANGELOG.md +18 -2
 - data/Rakefile +1 -1
 - data/docs/GettingStarted.md +81 -9
 - data/lib/ddtrace/contrib/configuration/settings.rb +1 -0
 - data/lib/ddtrace/contrib/delayed_job/plugin.rb +2 -0
 - data/lib/ddtrace/contrib/racecar/event.rb +2 -0
 - data/lib/ddtrace/contrib/rack/middlewares.rb +21 -9
 - data/lib/ddtrace/contrib/rake/instrumentation.rb +2 -0
 - data/lib/ddtrace/contrib/resque/patcher.rb +0 -10
 - data/lib/ddtrace/contrib/resque/resque_job.rb +40 -15
 - data/lib/ddtrace/contrib/sampling.rb +14 -0
 - data/lib/ddtrace/contrib/shoryuken/tracer.rb +10 -3
 - data/lib/ddtrace/contrib/sidekiq/client_tracer.rb +11 -5
 - data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +7 -1
 - data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +6 -0
 - data/lib/ddtrace/correlation.rb +32 -0
 - data/lib/ddtrace/ext/priority.rb +2 -0
 - data/lib/ddtrace/tracer.rb +14 -2
 - data/lib/ddtrace/version.rb +2 -2
 - metadata +4 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: f812f568118b7998a52208ffdb4c90a253edfd67
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 914ce035245993d7535152437c720c8c3cca3c2e
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: '08f6d5fe32d68feb4c38ef89ef43908c76884d1b92b30929fc3edd7c50fad58674d21f7e00ff97e4731b008213e9e0584106691d52ed8b1feb16b0dbdac877a0'
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 8b452ada6e2cfb91d1ee170600dc3fc7cd17c0b37042c6a3a746cc5739da038b37457204194f8ecdbc802a85d5afcdb4e79d13bf31293c2226aa0d62dcd0fa66
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    | 
         @@ -4,6 +4,21 @@ 
     | 
|
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            ## [Unreleased (beta)]
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
      
 7 
     | 
    
         
            +
            ## [0.19.0] - 2019-01-22
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.19.0
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.18.3...v0.19.0
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            ### Added
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
             - Tracer#active_correlation for adding correlation IDs to logs. (#660, #664, #673)
         
     | 
| 
      
 16 
     | 
    
         
            +
             - Opt-in support for `event_sample_rate` tag for some integrations. (#665, #666)
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            ### Changed
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
             - Priority sampling enabled by default. (#654)
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
       7 
22 
     | 
    
         
             
            ## [0.18.3] - 2019-01-17
         
     | 
| 
       8 
23 
     | 
    
         | 
| 
       9 
24 
     | 
    
         
             
            Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.18.3
         
     | 
| 
         @@ -627,8 +642,9 @@ Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.3.1 
     | 
|
| 
       627 
642 
     | 
    
         | 
| 
       628 
643 
     | 
    
         
             
            Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
         
     | 
| 
       629 
644 
     | 
    
         | 
| 
       630 
     | 
    
         
            -
            [Unreleased (stable)]: https://github.com/DataDog/dd-trace-rb/compare/v0. 
     | 
| 
       631 
     | 
    
         
            -
            [Unreleased (beta)]: https://github.com/DataDog/dd-trace-rb/compare/v0. 
     | 
| 
      
 645 
     | 
    
         
            +
            [Unreleased (stable)]: https://github.com/DataDog/dd-trace-rb/compare/v0.19.0...master
         
     | 
| 
      
 646 
     | 
    
         
            +
            [Unreleased (beta)]: https://github.com/DataDog/dd-trace-rb/compare/v0.19.0...0.20-dev
         
     | 
| 
      
 647 
     | 
    
         
            +
            [0.19.0]: https://github.com/DataDog/dd-trace-rb/compare/v0.18.3...v0.19.0
         
     | 
| 
       632 
648 
     | 
    
         
             
            [0.18.3]: https://github.com/DataDog/dd-trace-rb/compare/v0.18.2...v0.18.3
         
     | 
| 
       633 
649 
     | 
    
         
             
            [0.18.2]: https://github.com/DataDog/dd-trace-rb/compare/v0.18.1...v0.18.2
         
     | 
| 
       634 
650 
     | 
    
         
             
            [0.18.1]: https://github.com/DataDog/dd-trace-rb/compare/v0.18.0...v0.18.1
         
     | 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -46,7 +46,7 @@ namespace :spec do 
     | 
|
| 
       46 
46 
     | 
    
         
             
              end
         
     | 
| 
       47 
47 
     | 
    
         | 
| 
       48 
48 
     | 
    
         
             
              RSpec::Core::RakeTask.new(:contrib) do |t|
         
     | 
| 
       49 
     | 
    
         
            -
                t.pattern = 'spec/**/contrib/{configurable,integration,patchable,patcher,registerable,configuration/*}_spec.rb'
         
     | 
| 
      
 49 
     | 
    
         
            +
                t.pattern = 'spec/**/contrib/{configurable,integration,patchable,patcher,registerable,sampling,configuration/*}_spec.rb'
         
     | 
| 
       50 
50 
     | 
    
         
             
              end
         
     | 
| 
       51 
51 
     | 
    
         | 
| 
       52 
52 
     | 
    
         
             
              [
         
     | 
    
        data/docs/GettingStarted.md
    CHANGED
    
    | 
         @@ -62,6 +62,7 @@ For descriptions of terminology used in APM, take a look at the [official docume 
     | 
|
| 
       62 
62 
     | 
    
         
             
                 - [Processing pipeline](#processing-pipeline)
         
     | 
| 
       63 
63 
     | 
    
         
             
                     - [Filtering](#filtering)
         
     | 
| 
       64 
64 
     | 
    
         
             
                     - [Processing](#processing)
         
     | 
| 
      
 65 
     | 
    
         
            +
                 - [Trace correlation](#trace-correlation)
         
     | 
| 
       65 
66 
     | 
    
         
             
                 - [OpenTracing](#opentracing)
         
     | 
| 
       66 
67 
     | 
    
         | 
| 
       67 
68 
     | 
    
         
             
            ## Compatibility
         
     | 
| 
         @@ -517,6 +518,7 @@ Where `options` is an optional `Hash` that accepts the following parameters: 
     | 
|
| 
       517 
518 
     | 
    
         | 
| 
       518 
519 
     | 
    
         
             
            | Key | Description | Default |
         
     | 
| 
       519 
520 
     | 
    
         
             
            | --- | ----------- | ------- |
         
     | 
| 
      
 521 
     | 
    
         
            +
            | `event_sample_rate` | Rate which spans should be sampled for search and analytics. | `nil` |
         
     | 
| 
       520 
522 
     | 
    
         
             
            | `service_name` | Service name used for `DelayedJob` instrumentation | `'delayed_job'` |
         
     | 
| 
       521 
523 
     | 
    
         
             
            | `tracer` | `Datadog::Tracer` used to perform instrumentation. Usually you don't need to set this. | `Datadog.tracer` |
         
     | 
| 
       522 
524 
     | 
    
         | 
| 
         @@ -865,6 +867,7 @@ Where `options` is an optional `Hash` that accepts the following parameters: 
     | 
|
| 
       865 
867 
     | 
    
         | 
| 
       866 
868 
     | 
    
         
             
            | Key | Description | Default |
         
     | 
| 
       867 
869 
     | 
    
         
             
            | --- | ----------- | ------- |
         
     | 
| 
      
 870 
     | 
    
         
            +
            | `event_sample_rate` | Rate which spans should be sampled for search and analytics. | `nil` |
         
     | 
| 
       868 
871 
     | 
    
         
             
            | `service_name` | Service name used for `racecar` instrumentation | `'racecar'` |
         
     | 
| 
       869 
872 
     | 
    
         
             
            | `tracer` | `Datadog::Tracer` used to perform instrumentation. Usually you don't need to set this. | `Datadog.tracer` |
         
     | 
| 
       870 
873 
     | 
    
         | 
| 
         @@ -897,6 +900,7 @@ Where `options` is an optional `Hash` that accepts the following parameters: 
     | 
|
| 
       897 
900 
     | 
    
         
             
            | --- | ----------- | ------- |
         
     | 
| 
       898 
901 
     | 
    
         
             
            | `application` | Your Rack application. Required for `middleware_names`. | `nil` |
         
     | 
| 
       899 
902 
     | 
    
         
             
            | `distributed_tracing` | Enables [distributed tracing](#distributed-tracing) so that this service trace is connected with a trace of another service if tracing headers are received | `false` |
         
     | 
| 
      
 903 
     | 
    
         
            +
            | `event_sample_rate` | Rate which spans should be sampled for search and analytics. | `nil` |
         
     | 
| 
       900 
904 
     | 
    
         
             
            | `headers` | Hash of HTTP request or response headers to add as tags to the `rack.request`. Accepts `request` and `response` keys with Array values e.g. `['Last-Modified']`. Adds `http.request.headers.*` and `http.response.headers.*` tags respectively. | `{ response: ['Content-Type', 'X-Request-ID'] }` |
         
     | 
| 
       901 
905 
     | 
    
         
             
            | `middleware_names` | Enable this if you want to use the middleware classes as the resource names for `rack` spans. Requires `application` option to use. | `false` |
         
     | 
| 
       902 
906 
     | 
    
         
             
            | `quantize` | Hash containing options for quantization. May include `:query` or `:fragment`. | `{}` |
         
     | 
| 
         @@ -1006,6 +1010,7 @@ Where `options` is an optional `Hash` that accepts the following parameters: 
     | 
|
| 
       1006 
1010 
     | 
    
         
             
            | Key | Description | Default |
         
     | 
| 
       1007 
1011 
     | 
    
         
             
            | --- | ----------- | ------- |
         
     | 
| 
       1008 
1012 
     | 
    
         
             
            | `enabled` | Defines whether Rake tasks should be traced. Useful for temporarily disabling tracing. `true` or `false` | `true` |
         
     | 
| 
      
 1013 
     | 
    
         
            +
            | `event_sample_rate` | Rate which spans should be sampled for search and analytics. | `nil` |
         
     | 
| 
       1009 
1014 
     | 
    
         
             
            | `quantize` | Hash containing options for quantization of task arguments. See below for more details and examples. | `{}` |
         
     | 
| 
       1010 
1015 
     | 
    
         
             
            | `service_name` | Service name used for `rake` instrumentation | `'rake'` |
         
     | 
| 
       1011 
1016 
     | 
    
         
             
            | `tracer` | `Datadog::Tracer` used to perform instrumentation. Usually you don't need to set this. | `Datadog.tracer` |
         
     | 
| 
         @@ -1107,6 +1112,7 @@ Where `options` is an optional `Hash` that accepts the following parameters: 
     | 
|
| 
       1107 
1112 
     | 
    
         | 
| 
       1108 
1113 
     | 
    
         
             
            | Key | Description | Default |
         
     | 
| 
       1109 
1114 
     | 
    
         
             
            | --- | ----------- | ------- |
         
     | 
| 
      
 1115 
     | 
    
         
            +
            | `event_sample_rate` | Rate which spans should be sampled for search and analytics. | `nil` |
         
     | 
| 
       1110 
1116 
     | 
    
         
             
            | `service_name` | Service name used for `resque` instrumentation | `'resque'` |
         
     | 
| 
       1111 
1117 
     | 
    
         
             
            | `tracer` | `Datadog::Tracer` used to perform instrumentation. Usually you don't need to set this. | `Datadog.tracer` |
         
     | 
| 
       1112 
1118 
     | 
    
         
             
            | `workers` | An array including all worker classes you want to trace (eg `[MyJob]`) | `[]` |
         
     | 
| 
         @@ -1198,6 +1204,7 @@ Where `options` is an optional `Hash` that accepts the following parameters: 
     | 
|
| 
       1198 
1204 
     | 
    
         | 
| 
       1199 
1205 
     | 
    
         
             
            | Key | Description | Default |
         
     | 
| 
       1200 
1206 
     | 
    
         
             
            | --- | ----------- | ------- |
         
     | 
| 
      
 1207 
     | 
    
         
            +
            | `event_sample_rate` | Rate which spans should be sampled for search and analytics. | `nil` |
         
     | 
| 
       1201 
1208 
     | 
    
         
             
            | `service_name` | Service name used for `shoryuken` instrumentation | `'shoryuken'` |
         
     | 
| 
       1202 
1209 
     | 
    
         
             
            | `tracer` | `Datadog::Tracer` used to perform instrumentation. Usually you don't need to set this. | `Datadog.tracer` |
         
     | 
| 
       1203 
1210 
     | 
    
         | 
| 
         @@ -1220,6 +1227,7 @@ Where `options` is an optional `Hash` that accepts the following parameters: 
     | 
|
| 
       1220 
1227 
     | 
    
         
             
            | Key | Description | Default |
         
     | 
| 
       1221 
1228 
     | 
    
         
             
            | --- | ----------- | ------- |
         
     | 
| 
       1222 
1229 
     | 
    
         
             
            | `client_service_name` | Service name used for client-side `sidekiq` instrumentation | `'sidekiq-client'` |
         
     | 
| 
      
 1230 
     | 
    
         
            +
            | `event_sample_rate` | Rate which spans should be sampled for search and analytics. | `nil` |
         
     | 
| 
       1223 
1231 
     | 
    
         
             
            | `service_name` | Service name used for server-side `sidekiq` instrumentation | `'sidekiq'` |
         
     | 
| 
       1224 
1232 
     | 
    
         
             
            | `tracer` | `Datadog::Tracer` used to perform instrumentation. Usually you don't need to set this. | `Datadog.tracer` |
         
     | 
| 
       1225 
1233 
     | 
    
         | 
| 
         @@ -1271,6 +1279,7 @@ Where `options` is an optional `Hash` that accepts the following parameters: 
     | 
|
| 
       1271 
1279 
     | 
    
         | 
| 
       1272 
1280 
     | 
    
         
             
            | Key | Description | Default |
         
     | 
| 
       1273 
1281 
     | 
    
         
             
            | --- | ----------- | ------- |
         
     | 
| 
      
 1282 
     | 
    
         
            +
            | `event_sample_rate` | Rate which spans should be sampled for search and analytics. | `nil` |
         
     | 
| 
       1274 
1283 
     | 
    
         
             
            | `service_name` | Service name used for `sucker_punch` instrumentation | `'sucker_punch'` |
         
     | 
| 
       1275 
1284 
     | 
    
         
             
            | `tracer` | `Datadog::Tracer` used to perform instrumentation. Usually you don't need to set this. | `Datadog.tracer` |
         
     | 
| 
       1276 
1285 
     | 
    
         | 
| 
         @@ -1356,15 +1365,7 @@ The sampler can set the priority to the following values: 
     | 
|
| 
       1356 
1365 
     | 
    
         
             
             - `Datadog::Ext::Priority::AUTO_REJECT`: the sampler automatically decided to reject the trace.
         
     | 
| 
       1357 
1366 
     | 
    
         
             
             - `Datadog::Ext::Priority::AUTO_KEEP`: the sampler automatically decided to keep the trace.
         
     | 
| 
       1358 
1367 
     | 
    
         | 
| 
       1359 
     | 
    
         
            -
             
     | 
| 
       1360 
     | 
    
         
            -
             
     | 
| 
       1361 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       1362 
     | 
    
         
            -
            Datadog.configure do |c|
         
     | 
| 
       1363 
     | 
    
         
            -
              c.tracer priority_sampling: true
         
     | 
| 
       1364 
     | 
    
         
            -
            end
         
     | 
| 
       1365 
     | 
    
         
            -
            ```
         
     | 
| 
       1366 
     | 
    
         
            -
             
     | 
| 
       1367 
     | 
    
         
            -
            Once enabled, the sampler will automatically assign a priority of 0 or 1 to traces, depending on their service and volume.
         
     | 
| 
      
 1368 
     | 
    
         
            +
            Priority sampling is enabled by default. Enabling it ensures that your sampled distributed traces will be complete. Once enabled, the sampler will automatically assign a priority of 0 or 1 to traces, depending on their service and volume.
         
     | 
| 
       1368 
1369 
     | 
    
         | 
| 
       1369 
1370 
     | 
    
         
             
            You can also set this priority manually to either drop a non-interesting trace or to keep an important one. For that, set the `context#sampling_priority` to:
         
     | 
| 
       1370 
1371 
     | 
    
         | 
| 
         @@ -1613,6 +1614,77 @@ Datadog::Pipeline.before_flush( 
     | 
|
| 
       1613 
1614 
     | 
    
         
             
            )
         
     | 
| 
       1614 
1615 
     | 
    
         
             
            ```
         
     | 
| 
       1615 
1616 
     | 
    
         | 
| 
      
 1617 
     | 
    
         
            +
            ### Trace correlation
         
     | 
| 
      
 1618 
     | 
    
         
            +
             
     | 
| 
      
 1619 
     | 
    
         
            +
            In many cases, such as logging, it may be useful to correlate trace IDs to other events or data streams, for easier cross referencing. The tracer can produce a correlation identifier for the currently active trace via `active_correlation`, which can be used to decorate these other data sources.
         
     | 
| 
      
 1620 
     | 
    
         
            +
             
     | 
| 
      
 1621 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 1622 
     | 
    
         
            +
            # When a trace is active...
         
     | 
| 
      
 1623 
     | 
    
         
            +
            Datadog.tracer.trace('correlation.example') do
         
     | 
| 
      
 1624 
     | 
    
         
            +
              # Returns #<Datadog::Correlation::Identifier>
         
     | 
| 
      
 1625 
     | 
    
         
            +
              correlation = Datadog.tracer.active_correlation
         
     | 
| 
      
 1626 
     | 
    
         
            +
              correlation.trace_id # => 5963550561812073440
         
     | 
| 
      
 1627 
     | 
    
         
            +
              correlation.span_id # => 2232727802607726424
         
     | 
| 
      
 1628 
     | 
    
         
            +
            end
         
     | 
| 
      
 1629 
     | 
    
         
            +
             
     | 
| 
      
 1630 
     | 
    
         
            +
            # When a trace isn't active...
         
     | 
| 
      
 1631 
     | 
    
         
            +
            correlation = Datadog.tracer.active_correlation
         
     | 
| 
      
 1632 
     | 
    
         
            +
            # Returns #<Datadog::Correlation::Identifier>
         
     | 
| 
      
 1633 
     | 
    
         
            +
            correlation = Datadog.tracer.active_correlation
         
     | 
| 
      
 1634 
     | 
    
         
            +
            correlation.trace_id # => 0
         
     | 
| 
      
 1635 
     | 
    
         
            +
            correlation.span_id # => 0
         
     | 
| 
      
 1636 
     | 
    
         
            +
            ```
         
     | 
| 
      
 1637 
     | 
    
         
            +
             
     | 
| 
      
 1638 
     | 
    
         
            +
            #### For logging in Ruby applications
         
     | 
| 
      
 1639 
     | 
    
         
            +
             
     | 
| 
      
 1640 
     | 
    
         
            +
            To add correlation IDs to your logger, add a log formatter which retrieves the correlation IDs with `Datadog.tracer.active_correlation`, then add them to the message.
         
     | 
| 
      
 1641 
     | 
    
         
            +
             
     | 
| 
      
 1642 
     | 
    
         
            +
            To properly correlate with Datadog logging, be sure the following is present:
         
     | 
| 
      
 1643 
     | 
    
         
            +
             
     | 
| 
      
 1644 
     | 
    
         
            +
             - `dd.trace_id=<TRACE_ID>`: Where `<TRACE_ID>` is equal to `Datadog.tracer.active_correlation.trace_id` or `0` if no trace is active.
         
     | 
| 
      
 1645 
     | 
    
         
            +
             - `dd.span_id=<SPAN_ID>`: Where `<SPAN_ID>` is equal to `Datadog.tracer.active_correlation.span_id` or `0` if no trace is active.
         
     | 
| 
      
 1646 
     | 
    
         
            +
             
     | 
| 
      
 1647 
     | 
    
         
            +
            By default, `Datadog::Correlation::Identifier#to_s` will return `dd.trace_id=<TRACE_ID> dd.span_id=<SPAN_ID>`.
         
     | 
| 
      
 1648 
     | 
    
         
            +
             
     | 
| 
      
 1649 
     | 
    
         
            +
            An example of this in practice:
         
     | 
| 
      
 1650 
     | 
    
         
            +
             
     | 
| 
      
 1651 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 1652 
     | 
    
         
            +
            require 'ddtrace'
         
     | 
| 
      
 1653 
     | 
    
         
            +
            require 'logger'
         
     | 
| 
      
 1654 
     | 
    
         
            +
             
     | 
| 
      
 1655 
     | 
    
         
            +
            logger = Logger.new(STDOUT)
         
     | 
| 
      
 1656 
     | 
    
         
            +
            logger.progname = 'my_app'
         
     | 
| 
      
 1657 
     | 
    
         
            +
            logger.formatter  = proc do |severity, datetime, progname, msg|
         
     | 
| 
      
 1658 
     | 
    
         
            +
              "[#{datetime}][#{progname}][#{severity}][#{Datadog.tracer.active_correlation}] #{msg}\n"
         
     | 
| 
      
 1659 
     | 
    
         
            +
            end
         
     | 
| 
      
 1660 
     | 
    
         
            +
             
     | 
| 
      
 1661 
     | 
    
         
            +
            # When no trace is active
         
     | 
| 
      
 1662 
     | 
    
         
            +
            logger.warn('This is an untraced operation.')
         
     | 
| 
      
 1663 
     | 
    
         
            +
            # [2019-01-16 18:38:41 +0000][my_app][WARN][dd.trace_id=0 dd.span_id=0] This is an untraced operation.
         
     | 
| 
      
 1664 
     | 
    
         
            +
             
     | 
| 
      
 1665 
     | 
    
         
            +
            # When a trace is active
         
     | 
| 
      
 1666 
     | 
    
         
            +
            Datadog.tracer.trace('my.operation') { logger.warn('This is a traced operation.') }
         
     | 
| 
      
 1667 
     | 
    
         
            +
            # [2019-01-16 18:38:41 +0000][my_app][WARN][dd.trace_id=8545847825299552251 dd.span_id=3711755234730770098] This is a traced operation.
         
     | 
| 
      
 1668 
     | 
    
         
            +
            ```
         
     | 
| 
      
 1669 
     | 
    
         
            +
             
     | 
| 
      
 1670 
     | 
    
         
            +
            #### For logging in Rails applications
         
     | 
| 
      
 1671 
     | 
    
         
            +
             
     | 
| 
      
 1672 
     | 
    
         
            +
            Rails applications which are configured with a `ActiveSupport::TaggedLogging` logger can append correlation IDs as tags to log output. The default Rails logger implements this tagged logging, making it easier to add correlation tags.
         
     | 
| 
      
 1673 
     | 
    
         
            +
             
     | 
| 
      
 1674 
     | 
    
         
            +
            In your Rails environment configuration file, add the following:
         
     | 
| 
      
 1675 
     | 
    
         
            +
             
     | 
| 
      
 1676 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 1677 
     | 
    
         
            +
            Rails.application.configure do
         
     | 
| 
      
 1678 
     | 
    
         
            +
              config.log_tags = [proc { Datadog.tracer.active_correlation.to_s }]
         
     | 
| 
      
 1679 
     | 
    
         
            +
            end
         
     | 
| 
      
 1680 
     | 
    
         
            +
             
     | 
| 
      
 1681 
     | 
    
         
            +
            # Web requests will produce:
         
     | 
| 
      
 1682 
     | 
    
         
            +
            # [dd.trace_id=7110975754844687674 dd.span_id=7518426836986654206] Started GET "/articles" for 172.22.0.1 at 2019-01-16 18:50:57 +0000
         
     | 
| 
      
 1683 
     | 
    
         
            +
            # [dd.trace_id=7110975754844687674 dd.span_id=7518426836986654206] Processing by ArticlesController#index as */*
         
     | 
| 
      
 1684 
     | 
    
         
            +
            # [dd.trace_id=7110975754844687674 dd.span_id=7518426836986654206]   Article Load (0.5ms)  SELECT "articles".* FROM "articles"
         
     | 
| 
      
 1685 
     | 
    
         
            +
            # [dd.trace_id=7110975754844687674 dd.span_id=7518426836986654206] Completed 200 OK in 7ms (Views: 5.5ms | ActiveRecord: 0.5ms)
         
     | 
| 
      
 1686 
     | 
    
         
            +
            ```
         
     | 
| 
      
 1687 
     | 
    
         
            +
             
     | 
| 
       1616 
1688 
     | 
    
         
             
            ### OpenTracing
         
     | 
| 
       1617 
1689 
     | 
    
         | 
| 
       1618 
1690 
     | 
    
         
             
            For setting up Datadog with OpenTracing, see out [Quickstart for OpenTracing](#quickstart-for-opentracing) section for details.
         
     | 
| 
         @@ -1,4 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'delayed/plugin'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'ddtrace/contrib/sampling'
         
     | 
| 
       2 
3 
     | 
    
         
             
            require 'ddtrace/contrib/delayed_job/ext'
         
     | 
| 
       3 
4 
     | 
    
         | 
| 
       4 
5 
     | 
    
         
             
            module Datadog
         
     | 
| 
         @@ -18,6 +19,7 @@ module Datadog 
     | 
|
| 
       18 
19 
     | 
    
         
             
                                 end
         
     | 
| 
       19 
20 
     | 
    
         | 
| 
       20 
21 
     | 
    
         
             
                      tracer.trace(Ext::SPAN_JOB, service: configuration[:service_name], resource: job_name) do |span|
         
     | 
| 
      
 22 
     | 
    
         
            +
                        Contrib::Sampling.set_event_sample_rate(span, configuration[:event_sample_rate])
         
     | 
| 
       21 
23 
     | 
    
         
             
                        span.set_tag(Ext::TAG_ID, job.id)
         
     | 
| 
       22 
24 
     | 
    
         
             
                        span.set_tag(Ext::TAG_QUEUE, job.queue) if job.queue
         
     | 
| 
       23 
25 
     | 
    
         
             
                        span.set_tag(Ext::TAG_PRIORITY, job.priority)
         
     | 
| 
         @@ -1,3 +1,4 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'ddtrace/contrib/sampling'
         
     | 
| 
       1 
2 
     | 
    
         
             
            require 'ddtrace/contrib/active_support/notifications/event'
         
     | 
| 
       2 
3 
     | 
    
         
             
            require 'ddtrace/contrib/racecar/ext'
         
     | 
| 
       3 
4 
     | 
    
         | 
| 
         @@ -36,6 +37,7 @@ module Datadog 
     | 
|
| 
       36 
37 
     | 
    
         
             
                        span.service = configuration[:service_name]
         
     | 
| 
       37 
38 
     | 
    
         
             
                        span.resource = payload[:consumer_class]
         
     | 
| 
       38 
39 
     | 
    
         | 
| 
      
 40 
     | 
    
         
            +
                        Contrib::Sampling.set_event_sample_rate(span, configuration[:event_sample_rate])
         
     | 
| 
       39 
41 
     | 
    
         
             
                        span.set_tag(Ext::TAG_TOPIC, payload[:topic])
         
     | 
| 
       40 
42 
     | 
    
         
             
                        span.set_tag(Ext::TAG_CONSUMER, payload[:consumer_class])
         
     | 
| 
       41 
43 
     | 
    
         
             
                        span.set_tag(Ext::TAG_PARTITION, payload[:partition])
         
     | 
| 
         @@ -1,6 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'ddtrace/ext/app_types'
         
     | 
| 
       2 
2 
     | 
    
         
             
            require 'ddtrace/ext/http'
         
     | 
| 
       3 
3 
     | 
    
         
             
            require 'ddtrace/propagation/http_propagator'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'ddtrace/contrib/sampling'
         
     | 
| 
       4 
5 
     | 
    
         
             
            require 'ddtrace/contrib/rack/ext'
         
     | 
| 
       5 
6 
     | 
    
         
             
            require 'ddtrace/contrib/rack/request_queue'
         
     | 
| 
       6 
7 
     | 
    
         | 
| 
         @@ -25,7 +26,7 @@ module Datadog 
     | 
|
| 
       25 
26 
     | 
    
         
             
                    end
         
     | 
| 
       26 
27 
     | 
    
         | 
| 
       27 
28 
     | 
    
         
             
                    def compute_queue_time(env, tracer)
         
     | 
| 
       28 
     | 
    
         
            -
                      return unless  
     | 
| 
      
 29 
     | 
    
         
            +
                      return unless configuration[:request_queuing]
         
     | 
| 
       29 
30 
     | 
    
         | 
| 
       30 
31 
     | 
    
         
             
                      # parse the request queue time
         
     | 
| 
       31 
32 
     | 
    
         
             
                      request_start = Datadog::Contrib::Rack::QueueTime.get_request_start(env)
         
     | 
| 
         @@ -34,25 +35,25 @@ module Datadog 
     | 
|
| 
       34 
35 
     | 
    
         
             
                      tracer.trace(
         
     | 
| 
       35 
36 
     | 
    
         
             
                        Ext::SPAN_HTTP_SERVER_QUEUE,
         
     | 
| 
       36 
37 
     | 
    
         
             
                        start_time: request_start,
         
     | 
| 
       37 
     | 
    
         
            -
                        service:  
     | 
| 
      
 38 
     | 
    
         
            +
                        service: configuration[:web_service_name]
         
     | 
| 
       38 
39 
     | 
    
         
             
                      )
         
     | 
| 
       39 
40 
     | 
    
         
             
                    end
         
     | 
| 
       40 
41 
     | 
    
         | 
| 
       41 
42 
     | 
    
         
             
                    def call(env)
         
     | 
| 
       42 
43 
     | 
    
         
             
                      # retrieve integration settings
         
     | 
| 
       43 
     | 
    
         
            -
                      tracer =  
     | 
| 
      
 44 
     | 
    
         
            +
                      tracer = configuration[:tracer]
         
     | 
| 
       44 
45 
     | 
    
         | 
| 
       45 
46 
     | 
    
         
             
                      # [experimental] create a root Span to keep track of frontend web servers
         
     | 
| 
       46 
47 
     | 
    
         
             
                      # (i.e. Apache, nginx) if the header is properly set
         
     | 
| 
       47 
48 
     | 
    
         
             
                      frontend_span = compute_queue_time(env, tracer)
         
     | 
| 
       48 
49 
     | 
    
         | 
| 
       49 
50 
     | 
    
         
             
                      trace_options = {
         
     | 
| 
       50 
     | 
    
         
            -
                        service:  
     | 
| 
      
 51 
     | 
    
         
            +
                        service: configuration[:service_name],
         
     | 
| 
       51 
52 
     | 
    
         
             
                        resource: nil,
         
     | 
| 
       52 
53 
     | 
    
         
             
                        span_type: Datadog::Ext::HTTP::TYPE
         
     | 
| 
       53 
54 
     | 
    
         
             
                      }
         
     | 
| 
       54 
55 
     | 
    
         | 
| 
       55 
     | 
    
         
            -
                      if  
     | 
| 
      
 56 
     | 
    
         
            +
                      if configuration[:distributed_tracing]
         
     | 
| 
       56 
57 
     | 
    
         
             
                        context = HTTPPropagator.extract(env)
         
     | 
| 
       57 
58 
     | 
    
         
             
                        tracer.provider.context = context if context.trace_id
         
     | 
| 
       58 
59 
     | 
    
         
             
                      end
         
     | 
| 
         @@ -114,7 +115,7 @@ module Datadog 
     | 
|
| 
       114 
115 
     | 
    
         
             
                    end
         
     | 
| 
       115 
116 
     | 
    
         | 
| 
       116 
117 
     | 
    
         
             
                    def resource_name_for(env, status)
         
     | 
| 
       117 
     | 
    
         
            -
                      if  
     | 
| 
      
 118 
     | 
    
         
            +
                      if configuration[:middleware_names] && env['RESPONSE_MIDDLEWARE']
         
     | 
| 
       118 
119 
     | 
    
         
             
                        "#{env['RESPONSE_MIDDLEWARE']}##{env['REQUEST_METHOD']}"
         
     | 
| 
       119 
120 
     | 
    
         
             
                      else
         
     | 
| 
       120 
121 
     | 
    
         
             
                        "#{env['REQUEST_METHOD']} #{status}".strip
         
     | 
| 
         @@ -138,13 +139,19 @@ module Datadog 
     | 
|
| 
       138 
139 
     | 
    
         
             
                      response_headers = parse_response_headers(headers || {})
         
     | 
| 
       139 
140 
     | 
    
         | 
| 
       140 
141 
     | 
    
         
             
                      request_span.resource ||= resource_name_for(env, status)
         
     | 
| 
      
 142 
     | 
    
         
            +
             
     | 
| 
      
 143 
     | 
    
         
            +
                      # Set event sample rate, if available.
         
     | 
| 
      
 144 
     | 
    
         
            +
                      Contrib::Sampling.set_event_sample_rate(request_span, configuration[:event_sample_rate])
         
     | 
| 
      
 145 
     | 
    
         
            +
             
     | 
| 
       141 
146 
     | 
    
         
             
                      if request_span.get_tag(Datadog::Ext::HTTP::METHOD).nil?
         
     | 
| 
       142 
147 
     | 
    
         
             
                        request_span.set_tag(Datadog::Ext::HTTP::METHOD, env['REQUEST_METHOD'])
         
     | 
| 
       143 
148 
     | 
    
         
             
                      end
         
     | 
| 
      
 149 
     | 
    
         
            +
             
     | 
| 
       144 
150 
     | 
    
         
             
                      if request_span.get_tag(Datadog::Ext::HTTP::URL).nil?
         
     | 
| 
       145 
     | 
    
         
            -
                        options =  
     | 
| 
      
 151 
     | 
    
         
            +
                        options = configuration[:quantize]
         
     | 
| 
       146 
152 
     | 
    
         
             
                        request_span.set_tag(Datadog::Ext::HTTP::URL, Datadog::Quantization::HTTP.url(url, options))
         
     | 
| 
       147 
153 
     | 
    
         
             
                      end
         
     | 
| 
      
 154 
     | 
    
         
            +
             
     | 
| 
       148 
155 
     | 
    
         
             
                      if request_span.get_tag(Datadog::Ext::HTTP::BASE_URL).nil?
         
     | 
| 
       149 
156 
     | 
    
         
             
                        request_obj = ::Rack::Request.new(env)
         
     | 
| 
       150 
157 
     | 
    
         | 
| 
         @@ -157,6 +164,7 @@ module Datadog 
     | 
|
| 
       157 
164 
     | 
    
         | 
| 
       158 
165 
     | 
    
         
             
                        request_span.set_tag(Datadog::Ext::HTTP::BASE_URL, base_url)
         
     | 
| 
       159 
166 
     | 
    
         
             
                      end
         
     | 
| 
      
 167 
     | 
    
         
            +
             
     | 
| 
       160 
168 
     | 
    
         
             
                      if request_span.get_tag(Datadog::Ext::HTTP::STATUS_CODE).nil? && status
         
     | 
| 
       161 
169 
     | 
    
         
             
                        request_span.set_tag(Datadog::Ext::HTTP::STATUS_CODE, status)
         
     | 
| 
       162 
170 
     | 
    
         
             
                      end
         
     | 
| 
         @@ -186,6 +194,10 @@ module Datadog 
     | 
|
| 
       186 
194 
     | 
    
         
             
                      If you need the Rack request span, try using `Datadog.tracer.active_span`.
         
     | 
| 
       187 
195 
     | 
    
         
             
                      This key will be removed in version 1.0).freeze
         
     | 
| 
       188 
196 
     | 
    
         | 
| 
      
 197 
     | 
    
         
            +
                    def configuration
         
     | 
| 
      
 198 
     | 
    
         
            +
                      Datadog.configuration[:rack]
         
     | 
| 
      
 199 
     | 
    
         
            +
                    end
         
     | 
| 
      
 200 
     | 
    
         
            +
             
     | 
| 
       189 
201 
     | 
    
         
             
                    def add_deprecation_warnings(env)
         
     | 
| 
       190 
202 
     | 
    
         
             
                      env.instance_eval do
         
     | 
| 
       191 
203 
     | 
    
         
             
                        unless instance_variable_defined?(:@patched_with_datadog_warnings)
         
     | 
| 
         @@ -225,7 +237,7 @@ module Datadog 
     | 
|
| 
       225 
237 
     | 
    
         | 
| 
       226 
238 
     | 
    
         
             
                    def parse_request_headers(env)
         
     | 
| 
       227 
239 
     | 
    
         
             
                      {}.tap do |result|
         
     | 
| 
       228 
     | 
    
         
            -
                        whitelist =  
     | 
| 
      
 240 
     | 
    
         
            +
                        whitelist = configuration[:headers][:request] || []
         
     | 
| 
       229 
241 
     | 
    
         
             
                        whitelist.each do |header|
         
     | 
| 
       230 
242 
     | 
    
         
             
                          rack_header = header_to_rack_header(header)
         
     | 
| 
       231 
243 
     | 
    
         
             
                          if env.key?(rack_header)
         
     | 
| 
         @@ -237,7 +249,7 @@ module Datadog 
     | 
|
| 
       237 
249 
     | 
    
         | 
| 
       238 
250 
     | 
    
         
             
                    def parse_response_headers(headers)
         
     | 
| 
       239 
251 
     | 
    
         
             
                      {}.tap do |result|
         
     | 
| 
       240 
     | 
    
         
            -
                        whitelist =  
     | 
| 
      
 252 
     | 
    
         
            +
                        whitelist = configuration[:headers][:response] || []
         
     | 
| 
       241 
253 
     | 
    
         
             
                        whitelist.each do |header|
         
     | 
| 
       242 
254 
     | 
    
         
             
                          if headers.key?(header)
         
     | 
| 
       243 
255 
     | 
    
         
             
                            result[Datadog::Ext::HTTP::ResponseHeaders.to_tag(header)] = headers[header]
         
     | 
| 
         @@ -1,3 +1,4 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'ddtrace/contrib/sampling'
         
     | 
| 
       1 
2 
     | 
    
         
             
            require 'ddtrace/contrib/rake/ext'
         
     | 
| 
       2 
3 
     | 
    
         | 
| 
       3 
4 
     | 
    
         
             
            module Datadog
         
     | 
| 
         @@ -41,6 +42,7 @@ module Datadog 
     | 
|
| 
       41 
42 
     | 
    
         | 
| 
       42 
43 
     | 
    
         
             
                      def annotate_invoke!(span, args)
         
     | 
| 
       43 
44 
     | 
    
         
             
                        span.resource = name
         
     | 
| 
      
 45 
     | 
    
         
            +
                        Contrib::Sampling.set_event_sample_rate(span, configuration[:event_sample_rate])
         
     | 
| 
       44 
46 
     | 
    
         
             
                        span.set_tag(Ext::TAG_TASK_ARG_NAMES, arg_names)
         
     | 
| 
       45 
47 
     | 
    
         
             
                        span.set_tag(Ext::TAG_INVOKE_ARGS, quantize_args(args)) unless args.nil?
         
     | 
| 
       46 
48 
     | 
    
         
             
                      rescue StandardError => e
         
     | 
| 
         @@ -19,7 +19,6 @@ module Datadog 
     | 
|
| 
       19 
19 
     | 
    
         
             
                      do_once(:resque) do
         
     | 
| 
       20 
20 
     | 
    
         
             
                        begin
         
     | 
| 
       21 
21 
     | 
    
         
             
                          require_relative 'resque_job'
         
     | 
| 
       22 
     | 
    
         
            -
                          add_pin
         
     | 
| 
       23 
22 
     | 
    
         
             
                          get_option(:workers).each { |worker| worker.extend(ResqueJob) }
         
     | 
| 
       24 
23 
     | 
    
         
             
                        rescue StandardError => e
         
     | 
| 
       25 
24 
     | 
    
         
             
                          Datadog::Tracer.log.error("Unable to apply Resque integration: #{e}")
         
     | 
| 
         @@ -27,15 +26,6 @@ module Datadog 
     | 
|
| 
       27 
26 
     | 
    
         
             
                      end
         
     | 
| 
       28 
27 
     | 
    
         
             
                    end
         
     | 
| 
       29 
28 
     | 
    
         | 
| 
       30 
     | 
    
         
            -
                    def add_pin
         
     | 
| 
       31 
     | 
    
         
            -
                      Pin.new(
         
     | 
| 
       32 
     | 
    
         
            -
                        get_option(:service_name),
         
     | 
| 
       33 
     | 
    
         
            -
                        app: Ext::APP,
         
     | 
| 
       34 
     | 
    
         
            -
                        app_type: Datadog::Ext::AppTypes::WORKER,
         
     | 
| 
       35 
     | 
    
         
            -
                        tracer: get_option(:tracer)
         
     | 
| 
       36 
     | 
    
         
            -
                      ).onto(::Resque)
         
     | 
| 
       37 
     | 
    
         
            -
                    end
         
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
29 
     | 
    
         
             
                    def get_option(option)
         
     | 
| 
       40 
30 
     | 
    
         
             
                      Datadog.configuration[:resque].get_option(option)
         
     | 
| 
       41 
31 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -1,5 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'ddtrace/ext/app_types'
         
     | 
| 
       2 
2 
     | 
    
         
             
            require 'ddtrace/sync_writer'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'ddtrace/contrib/sampling'
         
     | 
| 
       3 
4 
     | 
    
         
             
            require 'ddtrace/contrib/sidekiq/ext'
         
     | 
| 
       4 
5 
     | 
    
         
             
            require 'resque'
         
     | 
| 
       5 
6 
     | 
    
         | 
| 
         @@ -9,13 +10,13 @@ module Datadog 
     | 
|
| 
       9 
10 
     | 
    
         
             
                  # Uses Resque job hooks to create traces
         
     | 
| 
       10 
11 
     | 
    
         
             
                  module ResqueJob
         
     | 
| 
       11 
12 
     | 
    
         
             
                    def around_perform(*_)
         
     | 
| 
       12 
     | 
    
         
            -
                       
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
                       
     | 
| 
      
 13 
     | 
    
         
            +
                      return yield unless datadog_configuration && tracer
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                      tracer.trace(Ext::SPAN_JOB, span_options) do |span|
         
     | 
| 
       15 
16 
     | 
    
         
             
                        span.resource = name
         
     | 
| 
       16 
     | 
    
         
            -
                        span.span_type =  
     | 
| 
      
 17 
     | 
    
         
            +
                        span.span_type = Datadog::Ext::AppTypes::WORKER
         
     | 
| 
      
 18 
     | 
    
         
            +
                        Contrib::Sampling.set_event_sample_rate(span, datadog_configuration[:event_sample_rate])
         
     | 
| 
       17 
19 
     | 
    
         
             
                        yield
         
     | 
| 
       18 
     | 
    
         
            -
                        span.service = pin.service
         
     | 
| 
       19 
20 
     | 
    
         
             
                      end
         
     | 
| 
       20 
21 
     | 
    
         
             
                    end
         
     | 
| 
       21 
22 
     | 
    
         | 
| 
         @@ -28,8 +29,27 @@ module Datadog 
     | 
|
| 
       28 
29 
     | 
    
         
             
                    end
         
     | 
| 
       29 
30 
     | 
    
         | 
| 
       30 
31 
     | 
    
         
             
                    def shutdown_tracer_when_forked!
         
     | 
| 
       31 
     | 
    
         
            -
                       
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
      
 32 
     | 
    
         
            +
                      tracer.shutdown! if forked?
         
     | 
| 
      
 33 
     | 
    
         
            +
                    end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                    private
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                    def forked?
         
     | 
| 
      
 38 
     | 
    
         
            +
                      pin = Datadog::Pin.get_from(::Resque)
         
     | 
| 
      
 39 
     | 
    
         
            +
                      return false unless pin
         
     | 
| 
      
 40 
     | 
    
         
            +
                      pin.config[:forked] == true
         
     | 
| 
      
 41 
     | 
    
         
            +
                    end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                    def span_options
         
     | 
| 
      
 44 
     | 
    
         
            +
                      { service: datadog_configuration[:service_name] }
         
     | 
| 
      
 45 
     | 
    
         
            +
                    end
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                    def tracer
         
     | 
| 
      
 48 
     | 
    
         
            +
                      datadog_configuration.tracer
         
     | 
| 
      
 49 
     | 
    
         
            +
                    end
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
                    def datadog_configuration
         
     | 
| 
      
 52 
     | 
    
         
            +
                      Datadog.configuration[:resque]
         
     | 
| 
       33 
53 
     | 
    
         
             
                    end
         
     | 
| 
       34 
54 
     | 
    
         
             
                  end
         
     | 
| 
       35 
55 
     | 
    
         
             
                end
         
     | 
| 
         @@ -37,12 +57,17 @@ module Datadog 
     | 
|
| 
       37 
57 
     | 
    
         
             
            end
         
     | 
| 
       38 
58 
     | 
    
         | 
| 
       39 
59 
     | 
    
         
             
            Resque.after_fork do
         
     | 
| 
       40 
     | 
    
         
            -
               
     | 
| 
       41 
     | 
    
         
            -
               
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
              pin 
     | 
| 
       44 
     | 
    
         
            -
               
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
      
 60 
     | 
    
         
            +
              configuration = Datadog.configuration[:resque]
         
     | 
| 
      
 61 
     | 
    
         
            +
              next if configuration.nil?
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
              # Add a pin, marking the job as forked.
         
     | 
| 
      
 64 
     | 
    
         
            +
              # Used to trigger shutdown in forks for performance reasons.
         
     | 
| 
      
 65 
     | 
    
         
            +
              Datadog::Pin.new(
         
     | 
| 
      
 66 
     | 
    
         
            +
                configuration[:service_name],
         
     | 
| 
      
 67 
     | 
    
         
            +
                config: { forked: true }
         
     | 
| 
      
 68 
     | 
    
         
            +
              ).onto(::Resque)
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
              # Clean the state so no CoW happens
         
     | 
| 
      
 71 
     | 
    
         
            +
              next if configuration[:tracer].nil?
         
     | 
| 
      
 72 
     | 
    
         
            +
              configuration[:tracer].provider.context = nil
         
     | 
| 
       48 
73 
     | 
    
         
             
            end
         
     | 
| 
         @@ -0,0 +1,14 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'ddtrace/ext/priority'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Datadog
         
     | 
| 
      
 4 
     | 
    
         
            +
              module Contrib
         
     | 
| 
      
 5 
     | 
    
         
            +
                # Defines sampling behavior for integrations
         
     | 
| 
      
 6 
     | 
    
         
            +
                module Sampling
         
     | 
| 
      
 7 
     | 
    
         
            +
                  module_function
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                  def set_event_sample_rate(span, sample_rate)
         
     | 
| 
      
 10 
     | 
    
         
            +
                    span.set_metric(Datadog::Ext::Priority::TAG_EVENT_SAMPLE_RATE, sample_rate) unless sample_rate.nil?
         
     | 
| 
      
 11 
     | 
    
         
            +
                  end
         
     | 
| 
      
 12 
     | 
    
         
            +
                end
         
     | 
| 
      
 13 
     | 
    
         
            +
              end
         
     | 
| 
      
 14 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -1,16 +1,19 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'ddtrace/contrib/sampling'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
       1 
3 
     | 
    
         
             
            module Datadog
         
     | 
| 
       2 
4 
     | 
    
         
             
              module Contrib
         
     | 
| 
       3 
5 
     | 
    
         
             
                module Shoryuken
         
     | 
| 
       4 
6 
     | 
    
         
             
                  # Tracer is a Shoryuken server-side middleware which traces executed jobs
         
     | 
| 
       5 
7 
     | 
    
         
             
                  class Tracer
         
     | 
| 
       6 
8 
     | 
    
         
             
                    def initialize(options = {})
         
     | 
| 
       7 
     | 
    
         
            -
                      @tracer = options[:tracer] ||  
     | 
| 
       8 
     | 
    
         
            -
                      @shoryuken_service = options[:service_name] ||  
     | 
| 
      
 9 
     | 
    
         
            +
                      @tracer = options[:tracer] || configuration[:tracer]
         
     | 
| 
      
 10 
     | 
    
         
            +
                      @shoryuken_service = options[:service_name] || configuration[:service_name]
         
     | 
| 
       9 
11 
     | 
    
         
             
                      set_service_info(@shoryuken_service)
         
     | 
| 
       10 
12 
     | 
    
         
             
                    end
         
     | 
| 
       11 
13 
     | 
    
         | 
| 
       12 
14 
     | 
    
         
             
                    def call(worker_instance, queue, sqs_msg, body)
         
     | 
| 
       13 
15 
     | 
    
         
             
                      @tracer.trace(Ext::SPAN_JOB, service: @shoryuken_service, span_type: Datadog::Ext::AppTypes::WORKER) do |span|
         
     | 
| 
      
 16 
     | 
    
         
            +
                        Contrib::Sampling.set_event_sample_rate(span, configuration[:event_sample_rate])
         
     | 
| 
       14 
17 
     | 
    
         
             
                        span.resource = resource(worker_instance, body)
         
     | 
| 
       15 
18 
     | 
    
         
             
                        span.set_tag(Ext::TAG_JOB_ID, sqs_msg.message_id)
         
     | 
| 
       16 
19 
     | 
    
         
             
                        span.set_tag(Ext::TAG_JOB_QUEUE, queue)
         
     | 
| 
         @@ -31,8 +34,12 @@ module Datadog 
     | 
|
| 
       31 
34 
     | 
    
         
             
                      job_class || worker_instance.class.name
         
     | 
| 
       32 
35 
     | 
    
         
             
                    end
         
     | 
| 
       33 
36 
     | 
    
         | 
| 
      
 37 
     | 
    
         
            +
                    def configuration
         
     | 
| 
      
 38 
     | 
    
         
            +
                      Datadog.configuration[:shoryuken]
         
     | 
| 
      
 39 
     | 
    
         
            +
                    end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
       34 
41 
     | 
    
         
             
                    def set_service_info(service)
         
     | 
| 
       35 
     | 
    
         
            -
                      return if @tracer.services[service]
         
     | 
| 
      
 42 
     | 
    
         
            +
                      return if @tracer.nil? || @tracer.services[service]
         
     | 
| 
       36 
43 
     | 
    
         
             
                      @tracer.set_service_info(
         
     | 
| 
       37 
44 
     | 
    
         
             
                        service,
         
     | 
| 
       38 
45 
     | 
    
         
             
                        Ext::APP,
         
     | 
| 
         @@ -1,4 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'ddtrace/contrib/sidekiq/tracing'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'ddtrace/contrib/sampling'
         
     | 
| 
       2 
3 
     | 
    
         | 
| 
       3 
4 
     | 
    
         
             
            module Datadog
         
     | 
| 
       4 
5 
     | 
    
         
             
              module Contrib
         
     | 
| 
         @@ -9,19 +10,18 @@ module Datadog 
     | 
|
| 
       9 
10 
     | 
    
         | 
| 
       10 
11 
     | 
    
         
             
                    def initialize(options = {})
         
     | 
| 
       11 
12 
     | 
    
         
             
                      super
         
     | 
| 
       12 
     | 
    
         
            -
                      @sidekiq_service = options[:client_service_name] ||  
     | 
| 
      
 13 
     | 
    
         
            +
                      @sidekiq_service = options[:client_service_name] || configuration[:client_service_name]
         
     | 
| 
      
 14 
     | 
    
         
            +
                      set_service_info(@sidekiq_service)
         
     | 
| 
       13 
15 
     | 
    
         
             
                    end
         
     | 
| 
       14 
16 
     | 
    
         | 
| 
       15 
17 
     | 
    
         
             
                    # Client middleware arguments are documented here:
         
     | 
| 
       16 
18 
     | 
    
         
             
                    #   https://github.com/mperham/sidekiq/wiki/Middleware#client-middleware
         
     | 
| 
       17 
19 
     | 
    
         
             
                    def call(worker_class, job, queue, redis_pool)
         
     | 
| 
       18 
     | 
    
         
            -
                      service = @sidekiq_service
         
     | 
| 
       19 
     | 
    
         
            -
                      set_service_info(service)
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
20 
     | 
    
         
             
                      resource = job_resource(job)
         
     | 
| 
       22 
21 
     | 
    
         | 
| 
       23 
     | 
    
         
            -
                      @tracer.trace(Ext::SPAN_PUSH, service:  
     | 
| 
      
 22 
     | 
    
         
            +
                      @tracer.trace(Ext::SPAN_PUSH, service: @sidekiq_service) do |span|
         
     | 
| 
       24 
23 
     | 
    
         
             
                        span.resource = resource
         
     | 
| 
      
 24 
     | 
    
         
            +
                        Contrib::Sampling.set_event_sample_rate(span, configuration[:event_sample_rate])
         
     | 
| 
       25 
25 
     | 
    
         
             
                        span.set_tag(Ext::TAG_JOB_ID, job['jid'])
         
     | 
| 
       26 
26 
     | 
    
         
             
                        span.set_tag(Ext::TAG_JOB_QUEUE, job['queue'])
         
     | 
| 
       27 
27 
     | 
    
         
             
                        span.set_tag(Ext::TAG_JOB_WRAPPER, job['class']) if job['wrapped']
         
     | 
| 
         @@ -29,6 +29,12 @@ module Datadog 
     | 
|
| 
       29 
29 
     | 
    
         
             
                        yield
         
     | 
| 
       30 
30 
     | 
    
         
             
                      end
         
     | 
| 
       31 
31 
     | 
    
         
             
                    end
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                    private
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                    def configuration
         
     | 
| 
      
 36 
     | 
    
         
            +
                      Datadog.configuration[:sidekiq]
         
     | 
| 
      
 37 
     | 
    
         
            +
                    end
         
     | 
| 
       32 
38 
     | 
    
         
             
                  end
         
     | 
| 
       33 
39 
     | 
    
         
             
                end
         
     | 
| 
       34 
40 
     | 
    
         
             
              end
         
     | 
| 
         @@ -1,4 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'ddtrace/contrib/sidekiq/tracing'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'ddtrace/contrib/sampling'
         
     | 
| 
       2 
3 
     | 
    
         | 
| 
       3 
4 
     | 
    
         
             
            module Datadog
         
     | 
| 
       4 
5 
     | 
    
         
             
              module Contrib
         
     | 
| 
         @@ -9,7 +10,7 @@ module Datadog 
     | 
|
| 
       9 
10 
     | 
    
         | 
| 
       10 
11 
     | 
    
         
             
                    def initialize(options = {})
         
     | 
| 
       11 
12 
     | 
    
         
             
                      super
         
     | 
| 
       12 
     | 
    
         
            -
                      @sidekiq_service = options[:service_name] ||  
     | 
| 
      
 13 
     | 
    
         
            +
                      @sidekiq_service = options[:service_name] || configuration[:service_name]
         
     | 
| 
       13 
14 
     | 
    
         
             
                    end
         
     | 
| 
       14 
15 
     | 
    
         | 
| 
       15 
16 
     | 
    
         
             
                    def call(worker, job, queue)
         
     | 
| 
         @@ -20,6 +21,7 @@ module Datadog 
     | 
|
| 
       20 
21 
     | 
    
         | 
| 
       21 
22 
     | 
    
         
             
                      @tracer.trace(Ext::SPAN_JOB, service: service, span_type: Datadog::Ext::AppTypes::WORKER) do |span|
         
     | 
| 
       22 
23 
     | 
    
         
             
                        span.resource = resource
         
     | 
| 
      
 24 
     | 
    
         
            +
                        Contrib::Sampling.set_event_sample_rate(span, configuration[:event_sample_rate])
         
     | 
| 
       23 
25 
     | 
    
         
             
                        span.set_tag(Ext::TAG_JOB_ID, job['jid'])
         
     | 
| 
       24 
26 
     | 
    
         
             
                        span.set_tag(Ext::TAG_JOB_RETRY, job['retry'])
         
     | 
| 
       25 
27 
     | 
    
         
             
                        span.set_tag(Ext::TAG_JOB_QUEUE, job['queue'])
         
     | 
| 
         @@ -32,6 +34,10 @@ module Datadog 
     | 
|
| 
       32 
34 
     | 
    
         | 
| 
       33 
35 
     | 
    
         
             
                    private
         
     | 
| 
       34 
36 
     | 
    
         | 
| 
      
 37 
     | 
    
         
            +
                    def configuration
         
     | 
| 
      
 38 
     | 
    
         
            +
                      Datadog.configuration[:sidekiq]
         
     | 
| 
      
 39 
     | 
    
         
            +
                    end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
       35 
41 
     | 
    
         
             
                    def service_from_worker_config(resource)
         
     | 
| 
       36 
42 
     | 
    
         
             
                      # Try to get the Ruby class from the resource name.
         
     | 
| 
       37 
43 
     | 
    
         
             
                      worker_klass = begin
         
     | 
| 
         @@ -1,4 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'sucker_punch'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'ddtrace/contrib/sampling'
         
     | 
| 
       2 
3 
     | 
    
         
             
            require 'ddtrace/contrib/sucker_punch/ext'
         
     | 
| 
       3 
4 
     | 
    
         | 
| 
       4 
5 
     | 
    
         
             
            module Datadog
         
     | 
| 
         @@ -18,6 +19,7 @@ module Datadog 
     | 
|
| 
       18 
19 
     | 
    
         | 
| 
       19 
20 
     | 
    
         
             
                          __with_instrumentation(Ext::SPAN_PERFORM) do |span|
         
     | 
| 
       20 
21 
     | 
    
         
             
                            span.resource = "PROCESS #{self}"
         
     | 
| 
      
 22 
     | 
    
         
            +
                            Contrib::Sampling.set_event_sample_rate(span, datadog_configuration[:event_sample_rate])
         
     | 
| 
       21 
23 
     | 
    
         
             
                            __run_perform_without_datadog(*args)
         
     | 
| 
       22 
24 
     | 
    
         
             
                          end
         
     | 
| 
       23 
25 
     | 
    
         
             
                        rescue => e
         
     | 
| 
         @@ -43,6 +45,10 @@ module Datadog 
     | 
|
| 
       43 
45 
     | 
    
         | 
| 
       44 
46 
     | 
    
         
             
                        private
         
     | 
| 
       45 
47 
     | 
    
         | 
| 
      
 48 
     | 
    
         
            +
                        def datadog_configuration
         
     | 
| 
      
 49 
     | 
    
         
            +
                          Datadog.configuration[:sucker_punch]
         
     | 
| 
      
 50 
     | 
    
         
            +
                        end
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
       46 
52 
     | 
    
         
             
                        def __with_instrumentation(name)
         
     | 
| 
       47 
53 
     | 
    
         
             
                          pin = Datadog::Pin.get_from(::SuckerPunch)
         
     | 
| 
       48 
54 
     | 
    
         | 
| 
         @@ -0,0 +1,32 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Datadog
         
     | 
| 
      
 2 
     | 
    
         
            +
              # Contains behavior for managing correlations with tracing
         
     | 
| 
      
 3 
     | 
    
         
            +
              # e.g. Retrieve a correlation to the current trace for logging, etc.
         
     | 
| 
      
 4 
     | 
    
         
            +
              module Correlation
         
     | 
| 
      
 5 
     | 
    
         
            +
                # Struct representing correlation
         
     | 
| 
      
 6 
     | 
    
         
            +
                Identifier = Struct.new(:trace_id, :span_id).tap do |struct|
         
     | 
| 
      
 7 
     | 
    
         
            +
                  # Do this #class_eval here for Ruby 1.9.3 support.
         
     | 
| 
      
 8 
     | 
    
         
            +
                  # Ruby 2.0+ supports passing a block to Struct::new instead.
         
     | 
| 
      
 9 
     | 
    
         
            +
                  struct.class_eval do
         
     | 
| 
      
 10 
     | 
    
         
            +
                    def initialize(*args)
         
     | 
| 
      
 11 
     | 
    
         
            +
                      super
         
     | 
| 
      
 12 
     | 
    
         
            +
                      self.trace_id = trace_id || 0
         
     | 
| 
      
 13 
     | 
    
         
            +
                      self.span_id = span_id || 0
         
     | 
| 
      
 14 
     | 
    
         
            +
                    end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                    def to_s
         
     | 
| 
      
 17 
     | 
    
         
            +
                      "dd.trace_id=#{trace_id} dd.span_id=#{span_id}"
         
     | 
| 
      
 18 
     | 
    
         
            +
                    end
         
     | 
| 
      
 19 
     | 
    
         
            +
                  end
         
     | 
| 
      
 20 
     | 
    
         
            +
                end.freeze
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                NULL_IDENTIFIER = Identifier.new.freeze
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                module_function
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                # Produces a CorrelationIdentifier from the Context provided
         
     | 
| 
      
 27 
     | 
    
         
            +
                def identifier_from_context(context)
         
     | 
| 
      
 28 
     | 
    
         
            +
                  return NULL_IDENTIFIER if context.nil?
         
     | 
| 
      
 29 
     | 
    
         
            +
                  Identifier.new(context.trace_id, context.span_id).freeze
         
     | 
| 
      
 30 
     | 
    
         
            +
                end
         
     | 
| 
      
 31 
     | 
    
         
            +
              end
         
     | 
| 
      
 32 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/ddtrace/ext/priority.rb
    CHANGED
    
    | 
         @@ -3,6 +3,8 @@ module Datadog 
     | 
|
| 
       3 
3 
     | 
    
         
             
                # Priority is a hint given to the backend so that it knows which traces to reject or kept.
         
     | 
| 
       4 
4 
     | 
    
         
             
                # In a distributed context, it should be set before any context propagation (fork, RPC calls) to be effective.
         
     | 
| 
       5 
5 
     | 
    
         
             
                module Priority
         
     | 
| 
      
 6 
     | 
    
         
            +
                  # Tag for span sample rate; used by agent to determine whether event is emitted.
         
     | 
| 
      
 7 
     | 
    
         
            +
                  TAG_EVENT_SAMPLE_RATE = '_dd1.sr.eausr'.freeze
         
     | 
| 
       6 
8 
     | 
    
         
             
                  # Use this to explicitely inform the backend that a trace should be rejected and not stored.
         
     | 
| 
       7 
9 
     | 
    
         
             
                  USER_REJECT = -1
         
     | 
| 
       8 
10 
     | 
    
         
             
                  # Used by the builtin sampler to inform the backend that a trace should be rejected and not stored.
         
     | 
    
        data/lib/ddtrace/tracer.rb
    CHANGED
    
    | 
         @@ -10,6 +10,7 @@ require 'ddtrace/provider' 
     | 
|
| 
       10 
10 
     | 
    
         
             
            require 'ddtrace/logger'
         
     | 
| 
       11 
11 
     | 
    
         
             
            require 'ddtrace/writer'
         
     | 
| 
       12 
12 
     | 
    
         
             
            require 'ddtrace/sampler'
         
     | 
| 
      
 13 
     | 
    
         
            +
            require 'ddtrace/correlation'
         
     | 
| 
       13 
14 
     | 
    
         | 
| 
       14 
15 
     | 
    
         
             
            # \Datadog global namespace that includes all tracing functionality for Tracer and Span classes.
         
     | 
| 
       15 
16 
     | 
    
         
             
            module Datadog
         
     | 
| 
         @@ -126,7 +127,7 @@ module Datadog 
     | 
|
| 
       126 
127 
     | 
    
         | 
| 
       127 
128 
     | 
    
         
             
                  # Those are rare "power-user" options.
         
     | 
| 
       128 
129 
     | 
    
         
             
                  sampler = options.fetch(:sampler, nil)
         
     | 
| 
       129 
     | 
    
         
            -
                  priority_sampling = options 
     | 
| 
      
 130 
     | 
    
         
            +
                  priority_sampling = options.fetch(:priority_sampling, nil)
         
     | 
| 
       130 
131 
     | 
    
         
             
                  max_spans_before_partial_flush = options.fetch(:max_spans_before_partial_flush, nil)
         
     | 
| 
       131 
132 
     | 
    
         
             
                  min_spans_before_partial_flush = options.fetch(:min_spans_before_partial_flush, nil)
         
     | 
| 
       132 
133 
     | 
    
         
             
                  partial_flush_timeout = options.fetch(:partial_flush_timeout, nil)
         
     | 
| 
         @@ -134,9 +135,15 @@ module Datadog 
     | 
|
| 
       134 
135 
     | 
    
         
             
                  @enabled = enabled unless enabled.nil?
         
     | 
| 
       135 
136 
     | 
    
         
             
                  @sampler = sampler unless sampler.nil?
         
     | 
| 
       136 
137 
     | 
    
         | 
| 
       137 
     | 
    
         
            -
                  if  
     | 
| 
      
 138 
     | 
    
         
            +
                  # Re-build the sampler and writer if priority sampling is enabled,
         
     | 
| 
      
 139 
     | 
    
         
            +
                  # but neither are configured. Verify the sampler isn't already a
         
     | 
| 
      
 140 
     | 
    
         
            +
                  # priority sampler too, so we don't wrap one with another.
         
     | 
| 
      
 141 
     | 
    
         
            +
                  if priority_sampling != false && !@sampler.is_a?(PrioritySampler)
         
     | 
| 
       138 
142 
     | 
    
         
             
                    @sampler = PrioritySampler.new(base_sampler: @sampler)
         
     | 
| 
       139 
143 
     | 
    
         
             
                    @writer = Writer.new(priority_sampler: @sampler)
         
     | 
| 
      
 144 
     | 
    
         
            +
                  elsif priority_sampling == false
         
     | 
| 
      
 145 
     | 
    
         
            +
                    @sampler = sampler || Datadog::AllSampler.new if @sampler.is_a?(PrioritySampler)
         
     | 
| 
      
 146 
     | 
    
         
            +
                    @writer = Writer.new
         
     | 
| 
       140 
147 
     | 
    
         
             
                  end
         
     | 
| 
       141 
148 
     | 
    
         | 
| 
       142 
149 
     | 
    
         
             
                  @writer.transport.hostname = hostname unless hostname.nil?
         
     | 
| 
         @@ -351,6 +358,11 @@ module Datadog 
     | 
|
| 
       351 
358 
     | 
    
         
             
                  call_context.current_root_span
         
     | 
| 
       352 
359 
     | 
    
         
             
                end
         
     | 
| 
       353 
360 
     | 
    
         | 
| 
      
 361 
     | 
    
         
            +
                # Return a CorrelationIdentifier for active span
         
     | 
| 
      
 362 
     | 
    
         
            +
                def active_correlation
         
     | 
| 
      
 363 
     | 
    
         
            +
                  Datadog::Correlation.identifier_from_context(call_context)
         
     | 
| 
      
 364 
     | 
    
         
            +
                end
         
     | 
| 
      
 365 
     | 
    
         
            +
             
     | 
| 
       354 
366 
     | 
    
         
             
                # Send the trace to the writer to enqueue the spans list in the agent
         
     | 
| 
       355 
367 
     | 
    
         
             
                # sending queue.
         
     | 
| 
       356 
368 
     | 
    
         
             
                def write(trace)
         
     | 
    
        data/lib/ddtrace/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: ddtrace
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.19.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Datadog, Inc.
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2019-01- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2019-01-22 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: msgpack
         
     | 
| 
         @@ -449,6 +449,7 @@ files: 
     | 
|
| 
       449 
449 
     | 
    
         
             
            - lib/ddtrace/contrib/rest_client/integration.rb
         
     | 
| 
       450 
450 
     | 
    
         
             
            - lib/ddtrace/contrib/rest_client/patcher.rb
         
     | 
| 
       451 
451 
     | 
    
         
             
            - lib/ddtrace/contrib/rest_client/request_patch.rb
         
     | 
| 
      
 452 
     | 
    
         
            +
            - lib/ddtrace/contrib/sampling.rb
         
     | 
| 
       452 
453 
     | 
    
         
             
            - lib/ddtrace/contrib/sequel/configuration/settings.rb
         
     | 
| 
       453 
454 
     | 
    
         
             
            - lib/ddtrace/contrib/sequel/database.rb
         
     | 
| 
       454 
455 
     | 
    
         
             
            - lib/ddtrace/contrib/sequel/dataset.rb
         
     | 
| 
         @@ -482,6 +483,7 @@ files: 
     | 
|
| 
       482 
483 
     | 
    
         
             
            - lib/ddtrace/contrib/sucker_punch/instrumentation.rb
         
     | 
| 
       483 
484 
     | 
    
         
             
            - lib/ddtrace/contrib/sucker_punch/integration.rb
         
     | 
| 
       484 
485 
     | 
    
         
             
            - lib/ddtrace/contrib/sucker_punch/patcher.rb
         
     | 
| 
      
 486 
     | 
    
         
            +
            - lib/ddtrace/correlation.rb
         
     | 
| 
       485 
487 
     | 
    
         
             
            - lib/ddtrace/encoding.rb
         
     | 
| 
       486 
488 
     | 
    
         
             
            - lib/ddtrace/error.rb
         
     | 
| 
       487 
489 
     | 
    
         
             
            - lib/ddtrace/ext/app_types.rb
         
     |