ddtrace 0.7.2 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +5 -13
  2. data/Appraisals +38 -19
  3. data/README.md +13 -0
  4. data/Rakefile +9 -9
  5. data/circle.yml +14 -11
  6. data/ddtrace.gemspec +1 -0
  7. data/docs/GettingStarted.md +96 -6
  8. data/gemfiles/rails30_postgres.gemfile +10 -0
  9. data/gemfiles/rails30_postgres_sidekiq.gemfile +11 -0
  10. data/gemfiles/{rails3_mysql2.gemfile → rails32_mysql2.gemfile} +0 -0
  11. data/gemfiles/{rails3_postgres.gemfile → rails32_postgres.gemfile} +0 -0
  12. data/gemfiles/{rails3_postgres_redis.gemfile → rails32_postgres_redis.gemfile} +0 -0
  13. data/gemfiles/{rails3_postgres_sidekiq.gemfile → rails32_postgres_sidekiq.gemfile} +1 -1
  14. data/lib/ddtrace/buffer.rb +1 -26
  15. data/lib/ddtrace/context.rb +145 -0
  16. data/lib/ddtrace/contrib/active_record/patcher.rb +2 -2
  17. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +1 -0
  18. data/lib/ddtrace/contrib/grape/endpoint.rb +4 -4
  19. data/lib/ddtrace/contrib/http/patcher.rb +36 -9
  20. data/lib/ddtrace/contrib/rack/middlewares.rb +53 -12
  21. data/lib/ddtrace/contrib/rails/action_controller.rb +14 -5
  22. data/lib/ddtrace/contrib/rails/action_view.rb +3 -3
  23. data/lib/ddtrace/contrib/rails/active_record.rb +1 -1
  24. data/lib/ddtrace/contrib/rails/active_support.rb +2 -2
  25. data/lib/ddtrace/contrib/rails/core_extensions.rb +45 -20
  26. data/lib/ddtrace/contrib/rails/framework.rb +11 -0
  27. data/lib/ddtrace/distributed.rb +38 -0
  28. data/lib/ddtrace/ext/distributed.rb +10 -0
  29. data/lib/ddtrace/pin.rb +6 -4
  30. data/lib/ddtrace/provider.rb +16 -0
  31. data/lib/ddtrace/span.rb +54 -22
  32. data/lib/ddtrace/tracer.rb +120 -64
  33. data/lib/ddtrace/utils.rb +9 -2
  34. data/lib/ddtrace/version.rb +2 -2
  35. data/lib/ddtrace/workers.rb +1 -2
  36. data/lib/ddtrace/writer.rb +0 -1
  37. metadata +43 -27
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- MWNlZDk5MDNlMGM5NzgyN2Q2Y2M1NTA5MTNiMmQ5Yzk3ZGI2YzY2Mg==
5
- data.tar.gz: !binary |-
6
- MmE4OWFjODQ4NjI1ZDY5MzQyNWQxODg0MjhmNzczODNhOWEzZWE2Yg==
2
+ SHA1:
3
+ metadata.gz: 32267c0f9a646b5c68fec68446808b0338aee9fe
4
+ data.tar.gz: fe7fb33d51a89cc592aa83c6b52c0b5347d35d68
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- YjlkYjJlNjdlY2U1YTg1ZTE3ZmUwMTY0MzM5YzYzNzNlMWI4NGFkZTAzYTZi
10
- MjJmMjNmODllNmVkNDFjYTUyOTZiMmVjZTM0MjlmZDE5YzRhOGI2NWM1MTMx
11
- OTQyZjVmMDM2ZWM1MDY1NDNjNTdiMDY0YWU3NTYwYjViNTZiNjQ=
12
- data.tar.gz: !binary |-
13
- YzYwYmRlODlhY2YxY2E2NjJmOWI2N2M1MTQ4YTQzN2JhMWE2NTE5ODIwZDk1
14
- ODNiNzk4ZTU2ZGY1ZGQyZmI3YjhkMzUyNzNjNDQyNThhZDY3YTM5MzFjMzk3
15
- ZjNhNjkxMjk4Yjc4YTRmZWY5YjRiYTdiMTA0NDAyMTA1MDEzZDM=
6
+ metadata.gz: 477f468fb2959ad9d5e48485ec3688d8c2368ce11784903ae76c820748b1772df99f50b25818647320ae4cad7dc7811847616c551092daa18a0fdc9fae883320
7
+ data.tar.gz: 777c16f17819d7d32f2c4d8544761690344ddac5473bd5ac0b2af45d6428d80c4db7bbbd7129a85780d1bb6fbb6cc60d9abe402dc60d8030fdaf2796643bc18f
data/Appraisals CHANGED
@@ -1,6 +1,6 @@
1
- if RUBY_VERSION < '2.4.0'
1
+ if RUBY_VERSION < '2.4.0' && RUBY_PLATFORM != 'java'
2
2
  if RUBY_VERSION >= '1.9.1'
3
- appraise 'rails3-mysql2' do
3
+ appraise 'rails32-mysql2' do
4
4
  gem 'test-unit'
5
5
  gem 'rails', '3.2.22.5'
6
6
  gem 'mysql2', '0.3.21', platform: :ruby
@@ -10,27 +10,46 @@ if RUBY_VERSION < '2.4.0'
10
10
  end
11
11
 
12
12
  if RUBY_VERSION >= '1.9.1'
13
- appraise 'rails3-postgres' do
13
+ appraise 'rails30-postgres' do
14
14
  gem 'test-unit'
15
- gem 'rails', '3.2.22.5'
15
+ gem 'rails', '3.0.20'
16
16
  gem 'pg', '0.15.1', platform: :ruby
17
17
  gem 'activerecord-jdbcpostgresql-adapter', platform: :jruby
18
18
  end
19
19
 
20
- appraise 'rails3-postgres-redis' do
20
+ if RUBY_VERSION < '2.2.2'
21
+ appraise 'rails30-postgres-sidekiq' do
22
+ gem 'test-unit'
23
+ gem 'rails', '3.0.20'
24
+ gem 'pg', '0.15.1', platform: :ruby
25
+ gem 'activerecord-jdbcpostgresql-adapter', platform: :jruby
26
+ gem 'sidekiq', '4.0.0'
27
+ end
28
+ end
29
+
30
+ appraise 'rails32-postgres' do
21
31
  gem 'test-unit'
22
32
  gem 'rails', '3.2.22.5'
23
33
  gem 'pg', '0.15.1', platform: :ruby
24
34
  gem 'activerecord-jdbcpostgresql-adapter', platform: :jruby
25
- gem 'redis-rails'
26
35
  end
27
36
 
28
- appraise 'rails3-postgres-sidekiq' do
37
+ appraise 'rails32-postgres-redis' do
29
38
  gem 'test-unit'
30
39
  gem 'rails', '3.2.22.5'
31
40
  gem 'pg', '0.15.1', platform: :ruby
32
41
  gem 'activerecord-jdbcpostgresql-adapter', platform: :jruby
33
- gem 'sidekiq'
42
+ gem 'redis-rails'
43
+ end
44
+
45
+ if RUBY_VERSION < '2.2.2'
46
+ appraise 'rails32-postgres-sidekiq' do
47
+ gem 'test-unit'
48
+ gem 'rails', '3.2.22.5'
49
+ gem 'pg', '0.15.1', platform: :ruby
50
+ gem 'activerecord-jdbcpostgresql-adapter', platform: :jruby
51
+ gem 'sidekiq', '4.0.0'
52
+ end
34
53
  end
35
54
  end
36
55
 
@@ -53,17 +72,9 @@ if RUBY_VERSION < '2.4.0'
53
72
  gem 'activerecord-jdbcpostgresql-adapter', platform: :jruby
54
73
  gem 'redis-rails'
55
74
  end
56
-
57
- appraise 'rails4-postgres-sidekiq' do
58
- gem 'rails', '4.2.7.1'
59
- gem 'pg', platform: :ruby
60
- gem 'activerecord-jdbcpostgresql-adapter', platform: :jruby
61
- gem 'sidekiq'
62
- gem 'activejob'
63
- end
64
75
  end
65
76
 
66
- if RUBY_VERSION >= '2.2.2' && RUBY_PLATFORM != 'java'
77
+ if RUBY_VERSION >= '2.2.2'
67
78
  appraise 'rails5-mysql2' do
68
79
  gem 'rails', '5.0.1'
69
80
  gem 'mysql2', platform: :ruby
@@ -84,12 +95,20 @@ if RUBY_VERSION < '2.4.0'
84
95
  gem 'rails', '5.0.1'
85
96
  gem 'pg', platform: :ruby
86
97
  gem 'sidekiq'
87
- gem "activejob"
98
+ gem 'activejob'
99
+ end
100
+
101
+ appraise 'rails4-postgres-sidekiq' do
102
+ gem 'rails', '4.2.7.1'
103
+ gem 'pg', platform: :ruby
104
+ gem 'activerecord-jdbcpostgresql-adapter', platform: :jruby
105
+ gem 'sidekiq'
106
+ gem 'activejob'
88
107
  end
89
108
  end
90
109
  end
91
110
 
92
- if RUBY_VERSION >= '2.2.2'
111
+ if RUBY_VERSION >= '2.2.2' && RUBY_PLATFORM != 'java'
93
112
  appraise 'contrib' do
94
113
  gem 'elasticsearch-transport'
95
114
  gem 'grape'
data/README.md CHANGED
@@ -84,6 +84,19 @@ you can activate it. The example above would become:
84
84
  end
85
85
  ```
86
86
 
87
+ This will automatically trace any app inherited from `Sinatra::Application`.
88
+ To trace apps inherited from `Sinatra::Base`, you should manually register
89
+ the tracer inside your class.
90
+
91
+ ```ruby
92
+ require "ddtrace"
93
+ require "ddtrace/contrib/sinatra/tracer"
94
+
95
+ class App < Sinatra::Base
96
+ register Datadog::Contrib::Sinatra::Tracer
97
+ end
98
+ ```
99
+
87
100
  To know if a given framework or lib is supported by our client,
88
101
  please consult our [integrations][contrib] list.
89
102
 
data/Rakefile CHANGED
@@ -123,10 +123,9 @@ task :ci do
123
123
  # check: https://circleci.com/docs/parallel-manual-setup/#env-splitting
124
124
  case ENV['CIRCLE_NODE_INDEX'].to_i
125
125
  when 0
126
- sh 'rvm $MRI_VERSIONS,$MRI_OLD_VERSIONS --verbose do rake test:main'
126
+ sh 'rvm $MRI_VERSIONS,$MRI_OLD_VERSIONS,$JRUBY_VERSIONS --verbose do rake test:main'
127
127
  sh 'rvm $LAST_STABLE --verbose do rake benchmark'
128
128
  when 1
129
- sh 'rvm $MRI_VERSIONS --verbose do appraisal contrib rake test:monkey'
130
129
  sh 'rvm $MRI_VERSIONS --verbose do appraisal contrib rake test:elasticsearch'
131
130
  sh 'rvm $MRI_VERSIONS --verbose do appraisal contrib rake test:http'
132
131
  sh 'rvm $MRI_VERSIONS --verbose do appraisal contrib rake test:redis'
@@ -142,16 +141,17 @@ task :ci do
142
141
  sh 'rvm $MRI_OLD_VERSIONS --verbose do appraisal contrib-old rake test:rack'
143
142
  sh 'rvm $SIDEKIQ_OLD_VERSIONS --verbose do appraisal contrib-old rake test:sidekiq'
144
143
  when 2
145
- sh 'rvm $RAILS3_VERSIONS --verbose do appraisal rails3-mysql2 rake test:rails'
146
- sh 'rvm $RAILS3_VERSIONS --verbose do appraisal rails3-postgres rake test:rails'
147
- sh 'rvm $RAILS3_VERSIONS --verbose do appraisal rails3-postgres-redis rake test:railsredis'
144
+ sh 'rvm $RAILS3_VERSIONS --verbose do appraisal rails30-postgres rake test:rails'
145
+ sh 'rvm $RAILS3_VERSIONS --verbose do appraisal rails32-mysql2 rake test:rails'
146
+ sh 'rvm $RAILS3_VERSIONS --verbose do appraisal rails32-postgres rake test:rails'
147
+ sh 'rvm $RAILS3_VERSIONS --verbose do appraisal rails32-postgres-redis rake test:railsredis'
148
148
  sh 'rvm $RAILS4_VERSIONS --verbose do appraisal rails4-mysql2 rake test:rails'
149
149
  sh 'rvm $RAILS4_VERSIONS --verbose do appraisal rails4-postgres rake test:rails'
150
150
  sh 'rvm $RAILS4_VERSIONS --verbose do appraisal rails4-postgres-redis rake test:railsredis'
151
- # Test Rails3/Sidekiq with Rails4 versions (3 vs 4) as Sidekiq requires >= 2.0 and Rails3 should support 1.9
152
- sh 'rvm $RAILS4_VERSIONS --verbose do appraisal rails3-postgres-sidekiq rake test:railssidekiq'
153
- sh 'rvm $RAILS4_VERSIONS --verbose do appraisal rails4-postgres-sidekiq rake test:railssidekiq'
154
- sh 'rvm $RAILS4_VERSIONS --verbose do appraisal rails4-postgres-sidekiq rake test:railsactivejob'
151
+ sh 'rvm $RAILS3_SIDEKIQ_VERSIONS --verbose do appraisal rails30-postgres-sidekiq rake test:railssidekiq'
152
+ sh 'rvm $RAILS3_SIDEKIQ_VERSIONS --verbose do appraisal rails32-postgres-sidekiq rake test:railssidekiq'
153
+ sh 'rvm $RAILS4_SIDEKIQ_VERSIONS --verbose do appraisal rails4-postgres-sidekiq rake test:railssidekiq'
154
+ sh 'rvm $RAILS4_SIDEKIQ_VERSIONS --verbose do appraisal rails4-postgres-sidekiq rake test:railsactivejob'
155
155
  sh 'rvm $RAILS5_VERSIONS --verbose do appraisal rails5-mysql2 rake test:rails'
156
156
  sh 'rvm $RAILS5_VERSIONS --verbose do appraisal rails5-postgres rake test:rails'
157
157
  sh 'rvm $RAILS5_VERSIONS --verbose do appraisal rails5-postgres-redis rake test:railsredis'
data/circle.yml CHANGED
@@ -2,15 +2,17 @@ machine:
2
2
  services:
3
3
  - docker
4
4
  environment:
5
- # FIXME: Disabled $JRUBY_VERSIONS tests because of a Java incompatibility
6
- LAST_STABLE: 2.4.0
7
- EARLY_STABLE: 2.2.6
8
- MRI_VERSIONS: 2.4.0,2.3.3,2.2.6
5
+ LAST_STABLE: 2.4.1
6
+ EARLY_STABLE: 2.2.7
7
+ MRI_VERSIONS: 2.4.1,2.3.4,2.2.7
9
8
  MRI_OLD_VERSIONS: 2.1.10,2.0.0,1.9.3
10
9
  SIDEKIQ_OLD_VERSIONS: 2.1.10,2.0.0
11
- RAILS3_VERSIONS: 2.3.3,2.2.6,2.1.10,2.0.0,1.9.3
12
- RAILS4_VERSIONS: 2.3.3,2.2.6,2.1.10
13
- RAILS5_VERSIONS: 2.3.3,2.2.6
10
+ RAILS3_VERSIONS: 2.3.4,2.2.7,2.1.10,2.0.0,1.9.3
11
+ RAILS4_VERSIONS: 2.3.4,2.2.7,2.1.10
12
+ RAILS5_VERSIONS: 2.3.4,2.2.7
13
+ RAILS3_SIDEKIQ_VERSIONS: 2.1.10,2.0.0
14
+ RAILS4_SIDEKIQ_VERSIONS: 2.3.4,2.2.7
15
+ JRUBY_VERSIONS: jruby-9.1.5.0
14
16
  AGENT_BUILD_PATH: "/home/ubuntu/agent"
15
17
  TEST_DATADOG_INTEGRATION: 1
16
18
 
@@ -30,11 +32,12 @@ dependencies:
30
32
  - bundle install
31
33
  # configure Ruby interpreters
32
34
  - rvm get head
33
- - rvm install $MRI_VERSIONS
35
+ - rvm install $MRI_VERSIONS,$MRI_OLD_VERSIONS,$JRUBY_VERSIONS
34
36
  override:
35
- - rvm $MRI_VERSIONS,$MRI_OLD_VERSIONS --verbose do gem update --system=2.6.11
36
- - rvm $MRI_VERSIONS,$MRI_OLD_VERSIONS --verbose do gem install bundler
37
- - rvm $MRI_VERSIONS,$MRI_OLD_VERSIONS --verbose do bundle install
37
+ - rvm $MRI_VERSIONS,$MRI_OLD_VERSIONS,$JRUBY_VERSIONS --verbose do gem update --system=2.6.11
38
+ - rvm $MRI_VERSIONS,$MRI_OLD_VERSIONS,$JRUBY_VERSIONS --verbose do gem install bundler
39
+ - rvm $MRI_VERSIONS,$MRI_OLD_VERSIONS,$JRUBY_VERSIONS --verbose do bundle install
40
+ # [FIXME] appraisal does not work with jruby (problem with native ext, eg sqlite3)
38
41
  - rvm $MRI_VERSIONS,$MRI_OLD_VERSIONS --verbose do appraisal install
39
42
 
40
43
  test:
@@ -1,4 +1,5 @@
1
1
  # coding: utf-8
2
+
2
3
  lib = File.expand_path('../lib', __FILE__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
5
  require 'ddtrace/version'
@@ -160,6 +160,18 @@ To start using the middleware in your generic Rack application, add it to your `
160
160
 
161
161
  run app
162
162
 
163
+ Experimental distributed tracing support is available for this library.
164
+ You need to set the ``:distributed_tracing_enabled`` option to true, for example:
165
+
166
+ use Datadog::Contrib::Rack::TraceMiddleware, distributed_tracing_enabled: true
167
+
168
+ app = proc do |env|
169
+ # trace and read 'x-datadog-trace-id' and 'x-datadog-parent-id'
170
+ [ 200, {'Content-Type' => 'text/plain'}, "OK" ]
171
+ end
172
+
173
+ See [distributed tracing](#Distributed_Tracing) for details.
174
+
163
175
  #### Configure the tracer
164
176
 
165
177
  To modify the default middleware configuration, you can use middleware options as follows:
@@ -256,6 +268,31 @@ Net::HTTP module.
256
268
 
257
269
  content = Net::HTTP.get(URI('http://127.0.0.1/index.html'))
258
270
 
271
+ Experimental distributed tracing support is available for this library.
272
+ By default, this is disabled. You need to enable it, either on a per-connection basis,
273
+ by setting the ``:distributed_tracing_enabled`` config entry to ``true`` using
274
+ the ``Pin`` object attached to the client. Example:
275
+
276
+ require 'net/http'
277
+ require 'ddtrace'
278
+
279
+ Datadog::Monkey.patch_module(:http) # explicitly patch it
280
+
281
+ client = Net::HTTP.new(host, port)
282
+ Datadog::Pin.get_from(client).config = { distributed_tracing_enabled: true }
283
+ response = client.get('foo') # trace and send 'x-datadog-trace-id' and 'x-datadog-parent-id'
284
+
285
+ Or, by enabling distributed tracing for all HTTP calls:
286
+
287
+ require 'net/http'
288
+ require 'ddtrace'
289
+
290
+ Datadog::Monkey.patch_module(:http) # explicitly patch it
291
+
292
+ Datadog::Contrib::HTTP.distributed_tracing_enabled = true
293
+
294
+ See [distributed tracing](#Distributed_Tracing) for details.
295
+
259
296
  ### Redis
260
297
 
261
298
  The Redis integration will trace simple calls as well as pipelines.
@@ -350,12 +387,17 @@ to trace requests to the home page:
350
387
 
351
388
  # add some attributes and metrics
352
389
  span.set_tag('http.method', request.request_method)
353
- span.set_metric('posts.count', len(@posts))
390
+ span.set_tag('posts.count', @posts.length)
354
391
 
355
392
  # trace the template rendering
356
393
  tracer.trace('template.render') do
357
394
  erb :index
358
395
  end
396
+
397
+ # trace using start_span (fine-grain control, requires explicit call to finish)
398
+ child = tracer.start_span('child', child_of: span)
399
+ # do something
400
+ child.finish
359
401
  end
360
402
  end
361
403
 
@@ -440,7 +482,7 @@ You can use this object to instrument your own code:
440
482
  class MyWebSite
441
483
  def initialize
442
484
  pin = Datadog::Pin.new('my-web-site', app_type: Datadog::Ext::AppTypes::WEB)
443
- Datadog::Pin.onto(self)
485
+ pin.onto(self)
444
486
  end
445
487
 
446
488
  def serve(something)
@@ -479,6 +521,20 @@ for the first time:
479
521
  Remember that the debug mode may affect your application performance and so it must not be used
480
522
  in a production environment.
481
523
 
524
+ ### Using a custom logger
525
+
526
+ By default, all logs are processed by the default Ruby logger.
527
+ Typically, when using Rails, you should see the messages in your application log file.
528
+ Datadog client log messages are marked with ``[ddtrace]`` so you should be able
529
+ to isolate them from other messages.
530
+
531
+ Additionally, it is possible to override the default logger and replace it by a
532
+ custom one. This is done using the ``log`` attribute of the tracer.
533
+
534
+ f = File.new("my-custom.log", "w+") # Log messages should go there
535
+ Datadog::Tracer.log = Logger.new(f) # Overriding the default tracer
536
+ Datadog::Tracer.log.info { "this is typically called by tracing code" }
537
+
482
538
  ### Environment and tags
483
539
 
484
540
  By default, the trace agent (not this library, but the program running in
@@ -537,8 +593,8 @@ On the client:
537
593
 
538
594
  Datadog.tracer.trace('web.call') do |span|
539
595
  req = Net::HTTP::Get.new(uri)
540
- req['x-ddtrace-parent_trace_id'] = span.trace_id.to_s
541
- req['x-ddtrace-parent_span_id'] = span.span_id.to_s
596
+ req['x-datadog-trace-id'] = span.trace_id.to_s
597
+ req['x-datadog-parent-id'] = span.span_id.to_s
542
598
 
543
599
  response = Net::HTTP.start(uri.hostname, uri.port) do |http|
544
600
  http.request(req)
@@ -556,8 +612,8 @@ On the server:
556
612
  # require 'ddtrace/contrib/sinatra/tracer'
557
613
 
558
614
  get '/' do
559
- parent_trace_id = request.env['HTTP_X_DDTRACE_PARENT_TRACE_ID']
560
- parent_span_id = request.env['HTTP_X_DDTRACE_PARENT_SPAN_ID']
615
+ parent_trace_id = request.env['HTTP_X_DATADOG_TRACE_ID']
616
+ parent_span_id = request.env['HTTP_X_DATADOG_PARENT_ID']
561
617
 
562
618
  Datadog.tracer.trace('web.work') do |span|
563
619
  if parent_trace_id && parent_span_id
@@ -569,6 +625,40 @@ On the server:
569
625
  end
570
626
  end
571
627
 
628
+ [Rack](#Rack) and [Net/HTTP](#Net_HTTP) have experimental support for this, they
629
+ can send and receive these headers automatically and tie spans together automatically,
630
+ provided you pass a ``:distributed_tracing_enabled`` option set to ``true``.
631
+
632
+ This is disabled by default.
633
+
634
+ ### Troubleshooting
635
+
636
+ #### Logs
637
+
638
+ Your application log should contain informations and report problems
639
+ such as agent not being up and running. All logs generated by this
640
+ library should contain ``[ddtrace]``. Also see [how to use a custom logger](#Using_a_custom_logger)
641
+ to redirect these messages elsewhere.
642
+
643
+ The [Datadog Trace Agent](https://github.com/DataDog/datadog-trace-agent)
644
+ should by default be listening for traces on port 8126.
645
+
646
+ #### Hello World
647
+
648
+ Sometimes, setting up a complete application is complex, so in doubt,
649
+ try the small program below, which should be able to report traces
650
+ for a ``tracegen`` service:
651
+
652
+ require 'ddtrace'
653
+
654
+ loop do
655
+ Datadog.tracer.trace('hello-world') do |span|
656
+ span.service = 'tracegen'
657
+ span.resource = 'ruby'
658
+ sleep 1
659
+ end
660
+ end
661
+
572
662
  ### Supported Versions
573
663
 
574
664
  #### Ruby interpreters
@@ -0,0 +1,10 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "test-unit"
6
+ gem "rails", "3.0.20"
7
+ gem "pg", "0.15.1", platform: :ruby
8
+ gem "activerecord-jdbcpostgresql-adapter", platform: :jruby
9
+
10
+ gemspec path: "../"
@@ -0,0 +1,11 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "test-unit"
6
+ gem "rails", "3.0.20"
7
+ gem "pg", "0.15.1", platform: :ruby
8
+ gem "activerecord-jdbcpostgresql-adapter", platform: :jruby
9
+ gem "sidekiq", "4.0.0"
10
+
11
+ gemspec path: "../"
@@ -6,6 +6,6 @@ gem "test-unit"
6
6
  gem "rails", "3.2.22.5"
7
7
  gem "pg", "0.15.1", platform: :ruby
8
8
  gem "activerecord-jdbcpostgresql-adapter", platform: :jruby
9
- gem "sidekiq"
9
+ gem "sidekiq", "4.0.0"
10
10
 
11
11
  gemspec path: "../"
@@ -1,31 +1,6 @@
1
1
  require 'thread'
2
2
 
3
3
  module Datadog
4
- # Buffer used to store active spans
5
- class SpanBuffer
6
- # ensure that a new SpanBuffer clears the thread spans
7
- def initialize
8
- Thread.current[:datadog_span] = nil
9
- end
10
-
11
- # Set the current active span.
12
- def set(span)
13
- Thread.current[:datadog_span] = span
14
- end
15
-
16
- # Return the current active span or nil.
17
- def get
18
- Thread.current[:datadog_span]
19
- end
20
-
21
- # Pop the current active span.
22
- def pop
23
- span = get()
24
- set(nil)
25
- span
26
- end
27
- end
28
-
29
4
  # Trace buffer that stores application traces. The buffer has a maximum size and when
30
5
  # the buffer is full, a random trace is discarded. This class is thread-safe and is used
31
6
  # automatically by the ``Tracer`` instance when a ``Span`` is finished.
@@ -65,7 +40,7 @@ module Datadog
65
40
  end
66
41
  end
67
42
 
68
- # Stored traces are returned and the local buffer is reset
43
+ # Stored traces are returned and the local buffer is reset.
69
44
  def pop
70
45
  @mutex.synchronize do
71
46
  traces = @traces