ddtrace 0.29.0 → 0.29.1

Sign up to get free protection for your applications and to get access to all the features.
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