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 +4 -4
- data/CHANGELOG.md +12 -1
- data/lib/ddtrace/sampler.rb +74 -20
- data/lib/ddtrace/tracer.rb +7 -1
- data/lib/ddtrace/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b29416bf90ae1197fb95cf7f3d505a6a83098156
|
4
|
+
data.tar.gz: 9eabc9df9b505136aa18780d6dfb4d4b48545766
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1f0b882500d0d548a90b1080fae7edbba1c337e9fe9c9749a9ece3eb9840e65d9f622b608c3a451bafe0905aa4560683e81a5008aa3903854974ead88c0c66aa
|
7
|
+
data.tar.gz: b9b5278d663cf8461e6df66626e4b131ec1b723f4eef2eb2b806a34ed7cc55b3a0b3dd7c09789f9bec2b82da22b56a65b97580407f922cb4955cc6369b1f6dd1
|
data/CHANGELOG.md
CHANGED
@@ -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.
|
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
|
data/lib/ddtrace/sampler.rb
CHANGED
@@ -64,56 +64,110 @@ module Datadog
|
|
64
64
|
end
|
65
65
|
end
|
66
66
|
|
67
|
-
#
|
68
|
-
class
|
69
|
-
|
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
|
-
|
72
|
-
@
|
75
|
+
@default_key = default_key
|
76
|
+
@resolver = block
|
73
77
|
@mutex = Mutex.new
|
74
|
-
@
|
75
|
-
|
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 =
|
92
|
+
key = resolve(span)
|
80
93
|
|
81
94
|
@mutex.synchronize do
|
82
|
-
@
|
95
|
+
@samplers.fetch(key, default_sampler).sample?(span)
|
83
96
|
end
|
84
97
|
end
|
85
98
|
|
86
99
|
def sample!(span)
|
87
|
-
key =
|
100
|
+
key = resolve(span)
|
88
101
|
|
89
102
|
@mutex.synchronize do
|
90
|
-
@
|
103
|
+
@samplers.fetch(key, default_sampler).sample!(span)
|
91
104
|
end
|
92
105
|
end
|
93
106
|
|
94
107
|
def sample_rate(span)
|
95
|
-
key =
|
108
|
+
key = resolve(span)
|
96
109
|
|
97
110
|
@mutex.synchronize do
|
98
|
-
@
|
111
|
+
@samplers.fetch(key, default_sampler).sample_rate
|
99
112
|
end
|
100
113
|
end
|
101
114
|
|
102
|
-
def update(
|
115
|
+
def update(key, rate)
|
103
116
|
@mutex.synchronize do
|
104
|
-
|
117
|
+
set_rate(key, rate)
|
118
|
+
end
|
119
|
+
end
|
105
120
|
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
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
|
-
|
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
|
|
data/lib/ddtrace/tracer.rb
CHANGED
@@ -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(
|
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
|
|
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.29.
|
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-
|
11
|
+
date: 2019-11-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: msgpack
|