ddtrace 0.29.0 → 0.29.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 31e0fcb8b1ca0ac159f61cad36c76981d613f0ec
4
- data.tar.gz: 186e058533c35a80cbc8146967d02bc40f363fe3
3
+ metadata.gz: b29416bf90ae1197fb95cf7f3d505a6a83098156
4
+ data.tar.gz: 9eabc9df9b505136aa18780d6dfb4d4b48545766
5
5
  SHA512:
6
- metadata.gz: ce23a13ce0ff2c5bdfe1581d142cb0b00d328f840ed6d200aa1213b47355ef92bf810ce107063542be68e700f4dd7a8e033db9b21a0f77a2c2e2dc551ff51286
7
- data.tar.gz: 8784d7bc918baf0e98424b28d7ab236749a3ce6d528f3b32f139480340a1f2710d4cf8446d3dc4cecd5eca052deec1ef04c9d25009e1ae6976c9a7625827ecea
6
+ metadata.gz: 1f0b882500d0d548a90b1080fae7edbba1c337e9fe9c9749a9ece3eb9840e65d9f622b608c3a451bafe0905aa4560683e81a5008aa3903854974ead88c0c66aa
7
+ data.tar.gz: b9b5278d663cf8461e6df66626e4b131ec1b723f4eef2eb2b806a34ed7cc55b3a0b3dd7c09789f9bec2b82da22b56a65b97580407f922cb4955cc6369b1f6dd1
@@ -2,6 +2,16 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.29.1] - 2019-11-26
6
+
7
+ Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.29.1
8
+
9
+ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.29.0...v0.29.1
10
+
11
+ ### Fixed
12
+
13
+ - Priority sampling not activating by default (#868)
14
+
5
15
  ## [0.29.0] - 2019-11-20
6
16
 
7
17
  Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.29.0
@@ -971,7 +981,8 @@ Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.3.1
971
981
 
972
982
  Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
973
983
 
974
- [Unreleased]: https://github.com/DataDog/dd-trace-rb/compare/v0.29.0...master
984
+ [Unreleased]: https://github.com/DataDog/dd-trace-rb/compare/v0.29.1...master
985
+ [0.29.1]: https://github.com/DataDog/dd-trace-rb/compare/v0.29.0...v0.29.1
975
986
  [0.29.0]: https://github.com/DataDog/dd-trace-rb/compare/v0.28.0...v0.29.0
976
987
  [0.28.0]: https://github.com/DataDog/dd-trace-rb/compare/v0.27.0...v0.28.0
977
988
  [0.27.0]: https://github.com/DataDog/dd-trace-rb/compare/v0.26.0...v0.27.0
@@ -64,56 +64,110 @@ module Datadog
64
64
  end
65
65
  end
66
66
 
67
- # \RateByServiceSampler samples different services at different rates
68
- class RateByServiceSampler < Sampler
69
- DEFAULT_KEY = 'service:,env:'.freeze
67
+ # Samples at different rates by key.
68
+ class RateByKeySampler < Sampler
69
+ attr_reader \
70
+ :default_key
71
+
72
+ def initialize(default_key, default_rate = 1.0, &block)
73
+ raise ArgumentError, 'No resolver given!' unless block_given?
70
74
 
71
- def initialize(rate = 1.0, opts = {})
72
- @env = opts.fetch(:env, Datadog.tracer.tags[:env])
75
+ @default_key = default_key
76
+ @resolver = block
73
77
  @mutex = Mutex.new
74
- @fallback = RateSampler.new(rate)
75
- @sampler = { DEFAULT_KEY => @fallback }
78
+ @samplers = {}
79
+
80
+ set_rate(default_key, default_rate)
81
+ end
82
+
83
+ def resolve(span)
84
+ @resolver.call(span)
85
+ end
86
+
87
+ def default_sampler
88
+ @samplers[default_key]
76
89
  end
77
90
 
78
91
  def sample?(span)
79
- key = key_for(span)
92
+ key = resolve(span)
80
93
 
81
94
  @mutex.synchronize do
82
- @sampler.fetch(key, @fallback).sample?(span)
95
+ @samplers.fetch(key, default_sampler).sample?(span)
83
96
  end
84
97
  end
85
98
 
86
99
  def sample!(span)
87
- key = key_for(span)
100
+ key = resolve(span)
88
101
 
89
102
  @mutex.synchronize do
90
- @sampler.fetch(key, @fallback).sample!(span)
103
+ @samplers.fetch(key, default_sampler).sample!(span)
91
104
  end
92
105
  end
93
106
 
94
107
  def sample_rate(span)
95
- key = key_for(span)
108
+ key = resolve(span)
96
109
 
97
110
  @mutex.synchronize do
98
- @sampler.fetch(key, @fallback).sample_rate
111
+ @samplers.fetch(key, default_sampler).sample_rate
99
112
  end
100
113
  end
101
114
 
102
- def update(rate_by_service)
115
+ def update(key, rate)
103
116
  @mutex.synchronize do
104
- @sampler.delete_if { |key, _| key != DEFAULT_KEY && !rate_by_service.key?(key) }
117
+ set_rate(key, rate)
118
+ end
119
+ end
105
120
 
106
- rate_by_service.each do |key, rate|
107
- @sampler[key] ||= RateSampler.new(rate)
108
- @sampler[key].sample_rate = rate
109
- end
121
+ def update_all(rate_by_key)
122
+ @mutex.synchronize do
123
+ rate_by_key.each { |key, rate| set_rate(key, rate) }
124
+ end
125
+ end
126
+
127
+ def delete(key)
128
+ @mutex.synchronize do
129
+ @samplers.delete(key)
130
+ end
131
+ end
132
+
133
+ def delete_if(&block)
134
+ @mutex.synchronize do
135
+ @samplers.delete_if(&block)
110
136
  end
111
137
  end
112
138
 
113
139
  private
114
140
 
141
+ def set_rate(key, rate)
142
+ @samplers[key] ||= RateSampler.new(rate)
143
+ @samplers[key].sample_rate = rate
144
+ end
145
+ end
146
+
147
+ # \RateByServiceSampler samples different services at different rates
148
+ class RateByServiceSampler < RateByKeySampler
149
+ DEFAULT_KEY = 'service:,env:'.freeze
150
+
151
+ def initialize(default_rate = 1.0, options = {})
152
+ super(DEFAULT_KEY, default_rate, &method(:key_for))
153
+ @env = options[:env]
154
+ end
155
+
156
+ def update(rate_by_service)
157
+ # Remove any old services
158
+ delete_if { |key, _| key != DEFAULT_KEY && !rate_by_service.key?(key) }
159
+
160
+ # Update each service rate
161
+ update_all(rate_by_service)
162
+ end
163
+
164
+ private
165
+
115
166
  def key_for(span)
116
- "service:#{span.service},env:#{@env}"
167
+ # Resolve env dynamically, if Proc is given.
168
+ env = @env.is_a?(Proc) ? @env.call : @env
169
+
170
+ "service:#{span.service},env:#{env}"
117
171
  end
118
172
  end
119
173
 
@@ -120,6 +120,9 @@ module Datadog
120
120
 
121
121
  @mutex = Mutex.new
122
122
  @tags = {}
123
+
124
+ # Enable priority sampling by default
125
+ activate_priority_sampling!(@sampler)
123
126
  end
124
127
 
125
128
  # Updates the current \Tracer instance, so that the tracer can be configured after the
@@ -441,7 +444,10 @@ module Datadog
441
444
  @sampler = if base_sampler.is_a?(PrioritySampler)
442
445
  base_sampler
443
446
  else
444
- PrioritySampler.new(base_sampler: base_sampler)
447
+ PrioritySampler.new(
448
+ base_sampler: base_sampler,
449
+ post_sampler: Datadog::RateByServiceSampler.new(1.0, env: proc { tags[:env] })
450
+ )
445
451
  end
446
452
  end
447
453
 
@@ -2,7 +2,7 @@ module Datadog
2
2
  module VERSION
3
3
  MAJOR = 0
4
4
  MINOR = 29
5
- PATCH = 0
5
+ PATCH = 1
6
6
  PRE = nil
7
7
 
8
8
  STRING = [MAJOR, MINOR, PATCH, PRE].compact.join('.')
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.29.0
4
+ version: 0.29.1
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-11-20 00:00:00.000000000 Z
11
+ date: 2019-11-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack