ddtrace 0.39.0 → 0.44.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/config.yml +142 -115
- data/.circleci/images/primary/Dockerfile-3.0.0 +73 -0
- data/.github/workflows/add-milestone-to-pull-requests.yml +42 -0
- data/.github/workflows/create-next-milestone.yml +20 -0
- data/.gitlab-ci.yml +1 -0
- data/.simplecov +41 -0
- data/Appraisals +476 -120
- data/CHANGELOG.md +1115 -325
- data/CONTRIBUTING.md +2 -2
- data/Gemfile +4 -2
- data/Rakefile +665 -477
- data/ddtrace.gemspec +8 -8
- data/docker-compose.yml +30 -0
- data/docs/DevelopmentGuide.md +28 -2
- data/docs/GettingStarted.md +170 -41
- data/lib/ddtrace.rb +4 -0
- data/lib/ddtrace/buffer.rb +259 -52
- data/lib/ddtrace/configuration.rb +55 -5
- data/lib/ddtrace/configuration/components.rb +4 -7
- data/lib/ddtrace/configuration/options.rb +3 -1
- data/lib/ddtrace/configuration/settings.rb +9 -3
- data/lib/ddtrace/context.rb +18 -0
- data/lib/ddtrace/context_provider.rb +17 -5
- data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +0 -7
- data/lib/ddtrace/contrib/action_view/event.rb +0 -4
- data/lib/ddtrace/contrib/action_view/events/render_partial.rb +1 -0
- data/lib/ddtrace/contrib/action_view/events/render_template.rb +1 -0
- data/lib/ddtrace/contrib/active_record/events/sql.rb +4 -0
- data/lib/ddtrace/contrib/active_record/utils.rb +11 -1
- data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +104 -3
- data/lib/ddtrace/contrib/active_support/cache/patcher.rb +21 -0
- data/lib/ddtrace/contrib/active_support/ext.rb +3 -0
- data/lib/ddtrace/contrib/active_support/notifications/event.rb +10 -0
- data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +2 -2
- data/lib/ddtrace/contrib/aws/instrumentation.rb +6 -1
- data/lib/ddtrace/contrib/aws/patcher.rb +0 -1
- data/lib/ddtrace/contrib/aws/services.rb +1 -0
- data/lib/ddtrace/contrib/configurable.rb +2 -0
- data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +6 -5
- data/lib/ddtrace/contrib/cucumber/configuration/settings.rb +38 -0
- data/lib/ddtrace/contrib/cucumber/ext.rb +19 -0
- data/lib/ddtrace/contrib/cucumber/formatter.rb +104 -0
- data/lib/ddtrace/contrib/cucumber/instrumentation.rb +24 -0
- data/lib/ddtrace/contrib/cucumber/integration.rb +40 -0
- data/lib/ddtrace/contrib/cucumber/patcher.rb +23 -0
- data/lib/ddtrace/contrib/dalli/instrumentation.rb +4 -0
- data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +2 -0
- data/lib/ddtrace/contrib/delayed_job/ext.rb +2 -0
- data/lib/ddtrace/contrib/delayed_job/plugin.rb +39 -15
- data/lib/ddtrace/contrib/elasticsearch/patcher.rb +4 -0
- data/lib/ddtrace/contrib/ethon/easy_patch.rb +5 -3
- data/lib/ddtrace/contrib/ethon/ext.rb +1 -0
- data/lib/ddtrace/contrib/ethon/multi_patch.rb +4 -0
- data/lib/ddtrace/contrib/excon/middleware.rb +11 -1
- data/lib/ddtrace/contrib/faraday/middleware.rb +4 -0
- data/lib/ddtrace/contrib/faraday/patcher.rb +1 -1
- data/lib/ddtrace/contrib/grape/configuration/settings.rb +7 -0
- data/lib/ddtrace/contrib/grape/endpoint.rb +53 -18
- data/lib/ddtrace/contrib/grape/ext.rb +1 -0
- data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +5 -1
- data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +4 -0
- data/lib/ddtrace/contrib/http/instrumentation.rb +6 -2
- data/lib/ddtrace/contrib/httprb/instrumentation.rb +6 -3
- data/lib/ddtrace/contrib/kafka/event.rb +1 -1
- data/lib/ddtrace/contrib/mongodb/subscribers.rb +4 -0
- data/lib/ddtrace/contrib/mysql2/instrumentation.rb +4 -0
- data/lib/ddtrace/contrib/presto/instrumentation.rb +3 -0
- data/lib/ddtrace/contrib/qless/configuration/settings.rb +35 -0
- data/lib/ddtrace/contrib/qless/ext.rb +20 -0
- data/lib/ddtrace/contrib/qless/integration.rb +38 -0
- data/lib/ddtrace/contrib/qless/patcher.rb +35 -0
- data/lib/ddtrace/contrib/qless/qless_job.rb +72 -0
- data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +32 -0
- data/lib/ddtrace/contrib/que/configuration/settings.rb +43 -0
- data/lib/ddtrace/contrib/que/ext.rb +30 -0
- data/lib/ddtrace/contrib/que/integration.rb +42 -0
- data/lib/ddtrace/contrib/que/patcher.rb +24 -0
- data/lib/ddtrace/contrib/que/tracer.rb +57 -0
- data/lib/ddtrace/contrib/racecar/event.rb +4 -0
- data/lib/ddtrace/contrib/racecar/events.rb +2 -0
- data/lib/ddtrace/contrib/racecar/events/consume.rb +27 -0
- data/lib/ddtrace/contrib/racecar/ext.rb +1 -0
- data/lib/ddtrace/contrib/rack/middlewares.rb +2 -0
- data/lib/ddtrace/contrib/rails/configuration/settings.rb +5 -0
- data/lib/ddtrace/contrib/rails/ext.rb +1 -0
- data/lib/ddtrace/contrib/rails/log_injection.rb +81 -0
- data/lib/ddtrace/contrib/rails/middlewares.rb +7 -2
- data/lib/ddtrace/contrib/rails/patcher.rb +29 -0
- data/lib/ddtrace/contrib/redis/configuration/resolver.rb +3 -1
- data/lib/ddtrace/contrib/redis/configuration/settings.rb +5 -0
- data/lib/ddtrace/contrib/redis/ext.rb +1 -0
- data/lib/ddtrace/contrib/redis/patcher.rb +20 -3
- data/lib/ddtrace/contrib/redis/quantize.rb +27 -0
- data/lib/ddtrace/contrib/redis/tags.rb +9 -1
- data/lib/ddtrace/contrib/resque/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/resque/integration.rb +1 -1
- data/lib/ddtrace/contrib/resque/resque_job.rb +1 -1
- data/lib/ddtrace/contrib/rest_client/request_patch.rb +4 -0
- data/lib/ddtrace/contrib/rspec/configuration/settings.rb +38 -0
- data/lib/ddtrace/contrib/rspec/example.rb +61 -0
- data/lib/ddtrace/contrib/rspec/example_group.rb +61 -0
- data/lib/ddtrace/contrib/rspec/ext.rb +19 -0
- data/lib/ddtrace/contrib/rspec/integration.rb +41 -0
- data/lib/ddtrace/contrib/rspec/patcher.rb +25 -0
- data/lib/ddtrace/contrib/sequel/database.rb +3 -1
- data/lib/ddtrace/contrib/sequel/dataset.rb +3 -2
- data/lib/ddtrace/contrib/sequel/ext.rb +1 -0
- data/lib/ddtrace/contrib/sequel/utils.rb +16 -5
- data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/shoryuken/tracer.rb +4 -1
- data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +4 -1
- data/lib/ddtrace/contrib/sinatra/env.rb +5 -4
- data/lib/ddtrace/contrib/sinatra/tracer.rb +21 -42
- data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +50 -23
- data/lib/ddtrace/contrib/sneakers/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/sneakers/tracer.rb +17 -20
- data/lib/ddtrace/contrib/status_code_matcher.rb +67 -0
- data/lib/ddtrace/ext/app_types.rb +1 -0
- data/lib/ddtrace/ext/ci.rb +264 -0
- data/lib/ddtrace/ext/distributed.rb +8 -2
- data/lib/ddtrace/ext/git.rb +12 -0
- data/lib/ddtrace/ext/integration.rb +8 -0
- data/lib/ddtrace/ext/runtime.rb +2 -0
- data/lib/ddtrace/ext/test.rb +24 -0
- data/lib/ddtrace/opentracer/distributed_headers.rb +1 -1
- data/lib/ddtrace/propagation/grpc_propagator.rb +18 -6
- data/lib/ddtrace/runtime/identity.rb +4 -5
- data/lib/ddtrace/runtime/metrics.rb +6 -2
- data/lib/ddtrace/sampler.rb +2 -2
- data/lib/ddtrace/sampling/rate_limiter.rb +65 -16
- data/lib/ddtrace/span.rb +152 -27
- data/lib/ddtrace/tracer.rb +25 -13
- data/lib/ddtrace/transport/http/adapters/net.rb +8 -2
- data/lib/ddtrace/transport/http/statistics.rb +14 -1
- data/lib/ddtrace/transport/traces.rb +7 -2
- data/lib/ddtrace/utils.rb +16 -13
- data/lib/ddtrace/utils/forking.rb +52 -0
- data/lib/ddtrace/version.rb +1 -1
- data/lib/ddtrace/workers/async.rb +2 -2
- data/lib/ddtrace/workers/loop.rb +1 -1
- data/lib/ddtrace/workers/polling.rb +1 -1
- data/lib/ddtrace/workers/runtime_metrics.rb +7 -3
- data/lib/ddtrace/writer.rb +19 -1
- metadata +147 -42
data/lib/ddtrace/tracer.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'pp'
|
2
1
|
require 'thread'
|
3
2
|
require 'logger'
|
4
3
|
require 'pathname'
|
@@ -8,6 +7,7 @@ require 'ddtrace/span'
|
|
8
7
|
require 'ddtrace/context'
|
9
8
|
require 'ddtrace/logger'
|
10
9
|
require 'ddtrace/writer'
|
10
|
+
require 'ddtrace/runtime/identity'
|
11
11
|
require 'ddtrace/sampler'
|
12
12
|
require 'ddtrace/sampling'
|
13
13
|
require 'ddtrace/correlation'
|
@@ -60,8 +60,8 @@ module Datadog
|
|
60
60
|
#
|
61
61
|
# This method makes use of a \ContextProvider that is automatically set during the tracer
|
62
62
|
# initialization, or while using a library instrumentation.
|
63
|
-
def call_context
|
64
|
-
@provider.context
|
63
|
+
def call_context(key = nil)
|
64
|
+
@provider.context(key)
|
65
65
|
end
|
66
66
|
|
67
67
|
# Initialize a new \Tracer used to create, sample and submit spans that measure the
|
@@ -186,8 +186,7 @@ module Datadog
|
|
186
186
|
# * +start_time+: when the span actually starts (defaults to \now)
|
187
187
|
# * +tags+: extra tags which should be added to the span.
|
188
188
|
def start_span(name, options = {})
|
189
|
-
start_time = options
|
190
|
-
|
189
|
+
start_time = options[:start_time]
|
191
190
|
tags = options.fetch(:tags, {})
|
192
191
|
|
193
192
|
span_options = options.select do |k, _v|
|
@@ -203,6 +202,7 @@ module Datadog
|
|
203
202
|
# root span
|
204
203
|
@sampler.sample!(span)
|
205
204
|
span.set_tag('system.pid', Process.pid)
|
205
|
+
span.set_tag(Datadog::Ext::Runtime::TAG_ID, Datadog::Runtime::Identity.id)
|
206
206
|
|
207
207
|
if ctx && ctx.trace_id
|
208
208
|
span.trace_id = ctx.trace_id
|
@@ -212,9 +212,10 @@ module Datadog
|
|
212
212
|
# child span
|
213
213
|
span.parent = parent # sets service, trace_id, parent_id, sampled
|
214
214
|
end
|
215
|
+
|
215
216
|
span.set_tags(@tags) unless @tags.empty?
|
216
217
|
span.set_tags(tags) unless tags.empty?
|
217
|
-
span.start_time
|
218
|
+
span.start(start_time)
|
218
219
|
|
219
220
|
# this could at some point be optional (start_active_span vs start_manual_span)
|
220
221
|
ctx.add_span(span) unless ctx.nil?
|
@@ -288,8 +289,19 @@ module Datadog
|
|
288
289
|
# and it is user code which should be executed no matter what.
|
289
290
|
# It's not a problem since we re-raise it afterwards so for example a
|
290
291
|
# SignalException::Interrupt would still bubble up.
|
292
|
+
# rubocop:disable Metrics/BlockNesting
|
291
293
|
rescue Exception => e
|
292
|
-
(options[:on_error]
|
294
|
+
if (on_error_handler = options[:on_error]) && on_error_handler.respond_to?(:call)
|
295
|
+
begin
|
296
|
+
on_error_handler.call(span, e)
|
297
|
+
rescue
|
298
|
+
Datadog.logger.debug('Custom on_error handler failed, falling back to default')
|
299
|
+
DEFAULT_ON_ERROR.call(span, e)
|
300
|
+
end
|
301
|
+
else
|
302
|
+
Datadog.logger.debug('Custom on_error handler must be a callable, falling back to default') if on_error_handler
|
303
|
+
DEFAULT_ON_ERROR.call(span, e)
|
304
|
+
end
|
293
305
|
raise e
|
294
306
|
ensure
|
295
307
|
span.finish unless span.nil?
|
@@ -325,18 +337,18 @@ module Datadog
|
|
325
337
|
end
|
326
338
|
|
327
339
|
# Return the current active span or +nil+.
|
328
|
-
def active_span
|
329
|
-
call_context.current_span
|
340
|
+
def active_span(key = nil)
|
341
|
+
call_context(key).current_span
|
330
342
|
end
|
331
343
|
|
332
344
|
# Return the current active root span or +nil+.
|
333
|
-
def active_root_span
|
334
|
-
call_context.current_root_span
|
345
|
+
def active_root_span(key = nil)
|
346
|
+
call_context(key).current_root_span
|
335
347
|
end
|
336
348
|
|
337
349
|
# Return a CorrelationIdentifier for active span
|
338
|
-
def active_correlation
|
339
|
-
Datadog::Correlation.identifier_from_context(call_context)
|
350
|
+
def active_correlation(key = nil)
|
351
|
+
Datadog::Correlation.identifier_from_context(call_context(key))
|
340
352
|
end
|
341
353
|
|
342
354
|
# Send the trace to the writer to enqueue the spans list in the agent
|
@@ -20,8 +20,14 @@ module Datadog
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def open
|
23
|
-
#
|
24
|
-
|
23
|
+
# DEV Initializing +Net::HTTP+ directly help us avoid expensive
|
24
|
+
# options processing done in +Net::HTTP.start+:
|
25
|
+
# https://github.com/ruby/ruby/blob/b2d96abb42abbe2e01f010ffc9ac51f0f9a50002/lib/net/http.rb#L614-L618
|
26
|
+
req = ::Net::HTTP.new(hostname, port, nil)
|
27
|
+
|
28
|
+
req.open_timeout = req.read_timeout = timeout
|
29
|
+
|
30
|
+
req.start do |http|
|
25
31
|
yield(http)
|
26
32
|
end
|
27
33
|
end
|
@@ -18,11 +18,24 @@ module Datadog
|
|
18
18
|
# Add status code tag to api.responses metric
|
19
19
|
if metrics.key?(:api_responses)
|
20
20
|
(metrics[:api_responses].options[:tags] ||= []).tap do |tags|
|
21
|
-
tags <<
|
21
|
+
tags << metrics_tag_value(response.code)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
# The most common status code on a healthy tracer
|
30
|
+
STATUS_CODE_200 = 'status_code:200'.freeze
|
31
|
+
|
32
|
+
def metrics_tag_value(status_code)
|
33
|
+
if status_code == 200
|
34
|
+
STATUS_CODE_200 # DEV Saves string concatenation/creation for common case
|
35
|
+
else
|
36
|
+
"status_code:#{status_code}"
|
37
|
+
end
|
38
|
+
end
|
26
39
|
end
|
27
40
|
end
|
28
41
|
end
|
@@ -57,7 +57,12 @@ module Datadog
|
|
57
57
|
# @return [Enumerable[Array[Bytes,Integer]]] list of encoded chunks: each containing a byte array and
|
58
58
|
# number of traces
|
59
59
|
def encode_in_chunks(traces)
|
60
|
-
encoded_traces = traces.
|
60
|
+
encoded_traces = if traces.respond_to?(:filter_map)
|
61
|
+
# DEV Supported since Ruby 2.7, saves an intermediate object creation
|
62
|
+
traces.filter_map { |t| encode_one(t) }
|
63
|
+
else
|
64
|
+
traces.map { |t| encode_one(t) }.reject(&:nil?)
|
65
|
+
end
|
61
66
|
|
62
67
|
Datadog::Chunker.chunk_by_size(encoded_traces, max_size).map do |chunk|
|
63
68
|
[encoder.join(chunk), chunk.size]
|
@@ -86,7 +91,7 @@ module Datadog
|
|
86
91
|
module_function
|
87
92
|
|
88
93
|
def encode_trace(encoder, trace)
|
89
|
-
encoder.encode(trace
|
94
|
+
encoder.encode(trace)
|
90
95
|
end
|
91
96
|
end
|
92
97
|
|
data/lib/ddtrace/utils.rb
CHANGED
@@ -1,32 +1,31 @@
|
|
1
1
|
require 'ddtrace/utils/database'
|
2
|
+
require 'ddtrace/utils/forking'
|
2
3
|
|
3
4
|
module Datadog
|
4
5
|
# Utils contains low-level utilities, typically to provide pseudo-random trace IDs.
|
5
6
|
module Utils
|
6
|
-
|
7
|
+
extend Utils::Forking
|
8
|
+
|
9
|
+
EMPTY_STRING = ''.encode(::Encoding::UTF_8).freeze
|
7
10
|
# We use a custom random number generator because we want no interference
|
8
11
|
# with the default one. Using the default prng, we could break code that
|
9
12
|
# would rely on srand/rand sequences.
|
10
13
|
|
11
14
|
# Return a span id
|
12
15
|
def self.next_id
|
13
|
-
reset!
|
14
|
-
|
15
|
-
@rnd.rand(Datadog::Span::MAX_ID)
|
16
|
+
after_fork! { reset! }
|
17
|
+
id_rng.rand(Datadog::Span::RUBY_MAX_ID)
|
16
18
|
end
|
17
19
|
|
18
|
-
def self.
|
19
|
-
@
|
20
|
-
@rnd = Random.new
|
20
|
+
def self.id_rng
|
21
|
+
@id_rng ||= Random.new
|
21
22
|
end
|
22
23
|
|
23
|
-
def self.
|
24
|
-
|
24
|
+
def self.reset!
|
25
|
+
@id_rng = Random.new
|
25
26
|
end
|
26
27
|
|
27
|
-
private_class_method :
|
28
|
-
|
29
|
-
reset!
|
28
|
+
private_class_method :id_rng, :reset!
|
30
29
|
|
31
30
|
def self.truncate(value, size, omission = '...'.freeze)
|
32
31
|
string = value.to_s
|
@@ -53,13 +52,17 @@ module Datadog
|
|
53
52
|
str.encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: '')
|
54
53
|
elsif str.encoding == ::Encoding::UTF_8
|
55
54
|
str
|
55
|
+
elsif str.empty?
|
56
|
+
# DEV Optimization as `nil.to_s` is a very common source for an empty string,
|
57
|
+
# DEV but it comes encoded as US_ASCII.
|
58
|
+
EMPTY_STRING
|
56
59
|
else
|
57
60
|
str.encode(::Encoding::UTF_8)
|
58
61
|
end
|
59
62
|
rescue => e
|
60
63
|
Datadog.logger.debug("Error encoding string in UTF-8: #{e}")
|
61
64
|
|
62
|
-
options.fetch(:placeholder,
|
65
|
+
options.fetch(:placeholder, EMPTY_STRING)
|
63
66
|
end
|
64
67
|
end
|
65
68
|
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module Datadog
|
2
|
+
module Utils
|
3
|
+
# Helper methods for managing forking behavior
|
4
|
+
module Forking
|
5
|
+
def self.included(base)
|
6
|
+
base.send(:prepend, ClassExtensions) if base.is_a?(Class)
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.extended(base)
|
10
|
+
# Explicitly update PID here because there's a case where
|
11
|
+
# the code path that lazily updates the PID may not be exercised
|
12
|
+
# until after a fork occurs, thus causing the event to be missed.
|
13
|
+
# By eagerly setting this, we avoid this scenario.
|
14
|
+
base.update_fork_pid!
|
15
|
+
end
|
16
|
+
|
17
|
+
def after_fork!
|
18
|
+
if forked?
|
19
|
+
yield
|
20
|
+
update_fork_pid!
|
21
|
+
true
|
22
|
+
else
|
23
|
+
false
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def forked?
|
28
|
+
Process.pid != fork_pid
|
29
|
+
end
|
30
|
+
|
31
|
+
def update_fork_pid!
|
32
|
+
@fork_pid = Process.pid
|
33
|
+
end
|
34
|
+
|
35
|
+
def fork_pid
|
36
|
+
@fork_pid ||= Process.pid
|
37
|
+
end
|
38
|
+
|
39
|
+
# Adds additional functionality for Classes that implement Forking
|
40
|
+
module ClassExtensions
|
41
|
+
# Addresses an edge case where forking before invoking #update_fork_pid! on the
|
42
|
+
# object will cause forking to not be detected in the fork when it should have.
|
43
|
+
#
|
44
|
+
# This wrapper prevents this by initializing the fork PID when the object is created.
|
45
|
+
def initialize(*args, &block)
|
46
|
+
super
|
47
|
+
update_fork_pid!
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
data/lib/ddtrace/version.rb
CHANGED
@@ -42,7 +42,7 @@ module Datadog
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def run_async?
|
45
|
-
|
45
|
+
return false unless instance_variable_defined?(:@run_async)
|
46
46
|
@run_async == true
|
47
47
|
end
|
48
48
|
|
@@ -55,7 +55,7 @@ module Datadog
|
|
55
55
|
end
|
56
56
|
|
57
57
|
def error?
|
58
|
-
|
58
|
+
return false unless instance_variable_defined?(:@error)
|
59
59
|
!@error.nil?
|
60
60
|
end
|
61
61
|
|
data/lib/ddtrace/workers/loop.rb
CHANGED
@@ -12,6 +12,10 @@ module Datadog
|
|
12
12
|
extend Forwardable
|
13
13
|
include Workers::Polling
|
14
14
|
|
15
|
+
# In seconds
|
16
|
+
DEFAULT_FLUSH_INTERVAL = 10
|
17
|
+
DEFAULT_BACK_OFF_MAX = 30
|
18
|
+
|
15
19
|
attr_reader \
|
16
20
|
:metrics
|
17
21
|
|
@@ -22,9 +26,9 @@ module Datadog
|
|
22
26
|
self.fork_policy = options.fetch(:fork_policy, Workers::Async::Thread::FORK_POLICY_STOP)
|
23
27
|
|
24
28
|
# Workers::IntervalLoop settings
|
25
|
-
self.
|
26
|
-
self.
|
27
|
-
self.
|
29
|
+
self.loop_base_interval = options.fetch(:interval, DEFAULT_FLUSH_INTERVAL)
|
30
|
+
self.loop_back_off_ratio = options[:back_off_ratio] if options.key?(:back_off_ratio)
|
31
|
+
self.loop_back_off_max = options.fetch(:back_off_max, DEFAULT_BACK_OFF_MAX)
|
28
32
|
|
29
33
|
self.enabled = options.fetch(:enabled, false)
|
30
34
|
end
|
data/lib/ddtrace/writer.rb
CHANGED
@@ -42,13 +42,22 @@ module Datadog
|
|
42
42
|
|
43
43
|
# one worker for traces
|
44
44
|
@worker = nil
|
45
|
+
|
46
|
+
# Once stopped, this writer instance cannot be restarted.
|
47
|
+
# This allow for graceful shutdown, while preventing
|
48
|
+
# the host application from inadvertently start new
|
49
|
+
# threads during shutdown.
|
50
|
+
@stopped = false
|
45
51
|
end
|
46
52
|
|
47
53
|
def start
|
48
54
|
@mutex_after_fork.synchronize do
|
55
|
+
return false if @stopped
|
56
|
+
|
49
57
|
pid = Process.pid
|
50
58
|
return if @worker && pid == @pid
|
51
59
|
@pid = pid
|
60
|
+
|
52
61
|
start_worker
|
53
62
|
true
|
54
63
|
end
|
@@ -67,14 +76,23 @@ module Datadog
|
|
67
76
|
@worker.start
|
68
77
|
end
|
69
78
|
|
79
|
+
# Gracefully shuts down this writer.
|
80
|
+
#
|
81
|
+
# Once stopped methods calls won't fail, but
|
82
|
+
# no internal work will be performed.
|
83
|
+
#
|
84
|
+
# It is not possible to restart a stopped writer instance.
|
70
85
|
def stop
|
71
86
|
@mutex_after_fork.synchronize { stop_worker }
|
72
87
|
end
|
73
88
|
|
74
89
|
def stop_worker
|
90
|
+
@stopped = true
|
91
|
+
|
75
92
|
return if @worker.nil?
|
76
93
|
@worker.stop
|
77
94
|
@worker = nil
|
95
|
+
|
78
96
|
true
|
79
97
|
end
|
80
98
|
|
@@ -136,7 +154,7 @@ module Datadog
|
|
136
154
|
|
137
155
|
if worker_local
|
138
156
|
worker_local.enqueue_trace(trace)
|
139
|
-
|
157
|
+
elsif !@stopped
|
140
158
|
Datadog.logger.debug('Writer either failed to start or was stopped before #write could complete')
|
141
159
|
end
|
142
160
|
end
|
metadata
CHANGED
@@ -1,22 +1,22 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ddtrace
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.44.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:
|
11
|
+
date: 2021-01-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
+
name: msgpack
|
14
15
|
requirement: !ruby/object:Gem::Requirement
|
15
16
|
requirements:
|
16
17
|
- - ">="
|
17
18
|
- !ruby/object:Gem::Version
|
18
19
|
version: '0'
|
19
|
-
name: msgpack
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -25,12 +25,12 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
+
name: dogstatsd-ruby
|
28
29
|
requirement: !ruby/object:Gem::Requirement
|
29
30
|
requirements:
|
30
31
|
- - ">="
|
31
32
|
- !ruby/object:Gem::Version
|
32
33
|
version: 3.3.0
|
33
|
-
name: dogstatsd-ruby
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -39,12 +39,12 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 3.3.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
+
name: opentracing
|
42
43
|
requirement: !ruby/object:Gem::Requirement
|
43
44
|
requirements:
|
44
45
|
- - ">="
|
45
46
|
- !ruby/object:Gem::Version
|
46
47
|
version: 0.4.1
|
47
|
-
name: opentracing
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -53,12 +53,26 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 0.4.1
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
+
name: concurrent-ruby
|
56
57
|
requirement: !ruby/object:Gem::Requirement
|
57
58
|
requirements:
|
58
59
|
- - ">="
|
59
60
|
- !ruby/object:Gem::Version
|
60
|
-
version: '
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
61
70
|
name: rake
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '10.5'
|
62
76
|
type: :development
|
63
77
|
prerelease: false
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -67,12 +81,12 @@ dependencies:
|
|
67
81
|
- !ruby/object:Gem::Version
|
68
82
|
version: '10.5'
|
69
83
|
- !ruby/object:Gem::Dependency
|
84
|
+
name: rubocop
|
70
85
|
requirement: !ruby/object:Gem::Requirement
|
71
86
|
requirements:
|
72
87
|
- - '='
|
73
88
|
- !ruby/object:Gem::Version
|
74
89
|
version: 0.49.1
|
75
|
-
name: rubocop
|
76
90
|
type: :development
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -81,12 +95,12 @@ dependencies:
|
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: 0.49.1
|
83
97
|
- !ruby/object:Gem::Dependency
|
98
|
+
name: rspec
|
84
99
|
requirement: !ruby/object:Gem::Requirement
|
85
100
|
requirements:
|
86
101
|
- - "~>"
|
87
102
|
- !ruby/object:Gem::Version
|
88
103
|
version: '3.0'
|
89
|
-
name: rspec
|
90
104
|
type: :development
|
91
105
|
prerelease: false
|
92
106
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -95,12 +109,12 @@ dependencies:
|
|
95
109
|
- !ruby/object:Gem::Version
|
96
110
|
version: '3.0'
|
97
111
|
- !ruby/object:Gem::Dependency
|
112
|
+
name: rspec-collection_matchers
|
98
113
|
requirement: !ruby/object:Gem::Requirement
|
99
114
|
requirements:
|
100
115
|
- - "~>"
|
101
116
|
- !ruby/object:Gem::Version
|
102
117
|
version: '1.1'
|
103
|
-
name: rspec-collection_matchers
|
104
118
|
type: :development
|
105
119
|
prerelease: false
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -109,12 +123,26 @@ dependencies:
|
|
109
123
|
- !ruby/object:Gem::Version
|
110
124
|
version: '1.1'
|
111
125
|
- !ruby/object:Gem::Dependency
|
126
|
+
name: ruby-prof
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '1.4'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '1.4'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: minitest
|
112
141
|
requirement: !ruby/object:Gem::Requirement
|
113
142
|
requirements:
|
114
143
|
- - '='
|
115
144
|
- !ruby/object:Gem::Version
|
116
145
|
version: 5.10.1
|
117
|
-
name: minitest
|
118
146
|
type: :development
|
119
147
|
prerelease: false
|
120
148
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -123,12 +151,12 @@ dependencies:
|
|
123
151
|
- !ruby/object:Gem::Version
|
124
152
|
version: 5.10.1
|
125
153
|
- !ruby/object:Gem::Dependency
|
154
|
+
name: minitest-around
|
126
155
|
requirement: !ruby/object:Gem::Requirement
|
127
156
|
requirements:
|
128
157
|
- - '='
|
129
158
|
- !ruby/object:Gem::Version
|
130
159
|
version: 0.5.0
|
131
|
-
name: minitest-around
|
132
160
|
type: :development
|
133
161
|
prerelease: false
|
134
162
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -137,12 +165,12 @@ dependencies:
|
|
137
165
|
- !ruby/object:Gem::Version
|
138
166
|
version: 0.5.0
|
139
167
|
- !ruby/object:Gem::Dependency
|
168
|
+
name: minitest-stub_any_instance
|
140
169
|
requirement: !ruby/object:Gem::Requirement
|
141
170
|
requirements:
|
142
171
|
- - '='
|
143
172
|
- !ruby/object:Gem::Version
|
144
173
|
version: 1.0.2
|
145
|
-
name: minitest-stub_any_instance
|
146
174
|
type: :development
|
147
175
|
prerelease: false
|
148
176
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -151,82 +179,82 @@ dependencies:
|
|
151
179
|
- !ruby/object:Gem::Version
|
152
180
|
version: 1.0.2
|
153
181
|
- !ruby/object:Gem::Dependency
|
182
|
+
name: pimpmychangelog
|
154
183
|
requirement: !ruby/object:Gem::Requirement
|
155
184
|
requirements:
|
156
|
-
- - "
|
185
|
+
- - ">="
|
157
186
|
- !ruby/object:Gem::Version
|
158
|
-
version:
|
159
|
-
name: appraisal
|
187
|
+
version: 0.1.2
|
160
188
|
type: :development
|
161
189
|
prerelease: false
|
162
190
|
version_requirements: !ruby/object:Gem::Requirement
|
163
191
|
requirements:
|
164
|
-
- - "
|
192
|
+
- - ">="
|
165
193
|
- !ruby/object:Gem::Version
|
166
|
-
version:
|
194
|
+
version: 0.1.2
|
167
195
|
- !ruby/object:Gem::Dependency
|
196
|
+
name: appraisal
|
168
197
|
requirement: !ruby/object:Gem::Requirement
|
169
198
|
requirements:
|
170
199
|
- - "~>"
|
171
200
|
- !ruby/object:Gem::Version
|
172
|
-
version: '
|
173
|
-
name: yard
|
201
|
+
version: '2.2'
|
174
202
|
type: :development
|
175
203
|
prerelease: false
|
176
204
|
version_requirements: !ruby/object:Gem::Requirement
|
177
205
|
requirements:
|
178
206
|
- - "~>"
|
179
207
|
- !ruby/object:Gem::Version
|
180
|
-
version: '
|
208
|
+
version: '2.2'
|
181
209
|
- !ruby/object:Gem::Dependency
|
210
|
+
name: yard
|
182
211
|
requirement: !ruby/object:Gem::Requirement
|
183
212
|
requirements:
|
184
213
|
- - "~>"
|
185
214
|
- !ruby/object:Gem::Version
|
186
|
-
version: '
|
187
|
-
name: webmock
|
215
|
+
version: '0.9'
|
188
216
|
type: :development
|
189
217
|
prerelease: false
|
190
218
|
version_requirements: !ruby/object:Gem::Requirement
|
191
219
|
requirements:
|
192
220
|
- - "~>"
|
193
221
|
- !ruby/object:Gem::Version
|
194
|
-
version: '
|
222
|
+
version: '0.9'
|
195
223
|
- !ruby/object:Gem::Dependency
|
224
|
+
name: webmock
|
196
225
|
requirement: !ruby/object:Gem::Requirement
|
197
226
|
requirements:
|
198
227
|
- - ">="
|
199
228
|
- !ruby/object:Gem::Version
|
200
|
-
version:
|
201
|
-
name: builder
|
229
|
+
version: 3.10.0
|
202
230
|
type: :development
|
203
231
|
prerelease: false
|
204
232
|
version_requirements: !ruby/object:Gem::Requirement
|
205
233
|
requirements:
|
206
234
|
- - ">="
|
207
235
|
- !ruby/object:Gem::Version
|
208
|
-
version:
|
236
|
+
version: 3.10.0
|
209
237
|
- !ruby/object:Gem::Dependency
|
238
|
+
name: builder
|
210
239
|
requirement: !ruby/object:Gem::Requirement
|
211
240
|
requirements:
|
212
|
-
- - "
|
241
|
+
- - ">="
|
213
242
|
- !ruby/object:Gem::Version
|
214
|
-
version: '
|
215
|
-
name: jdbc-sqlite3
|
243
|
+
version: '0'
|
216
244
|
type: :development
|
217
245
|
prerelease: false
|
218
246
|
version_requirements: !ruby/object:Gem::Requirement
|
219
247
|
requirements:
|
220
|
-
- - "
|
248
|
+
- - ">="
|
221
249
|
- !ruby/object:Gem::Version
|
222
|
-
version: '
|
250
|
+
version: '0'
|
223
251
|
- !ruby/object:Gem::Dependency
|
252
|
+
name: climate_control
|
224
253
|
requirement: !ruby/object:Gem::Requirement
|
225
254
|
requirements:
|
226
255
|
- - "~>"
|
227
256
|
- !ruby/object:Gem::Version
|
228
257
|
version: 0.2.0
|
229
|
-
name: climate_control
|
230
258
|
type: :development
|
231
259
|
prerelease: false
|
232
260
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -235,12 +263,12 @@ dependencies:
|
|
235
263
|
- !ruby/object:Gem::Version
|
236
264
|
version: 0.2.0
|
237
265
|
- !ruby/object:Gem::Dependency
|
266
|
+
name: addressable
|
238
267
|
requirement: !ruby/object:Gem::Requirement
|
239
268
|
requirements:
|
240
269
|
- - "~>"
|
241
270
|
- !ruby/object:Gem::Version
|
242
271
|
version: 2.4.0
|
243
|
-
name: addressable
|
244
272
|
type: :development
|
245
273
|
prerelease: false
|
246
274
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -249,12 +277,12 @@ dependencies:
|
|
249
277
|
- !ruby/object:Gem::Version
|
250
278
|
version: 2.4.0
|
251
279
|
- !ruby/object:Gem::Dependency
|
280
|
+
name: benchmark-ips
|
252
281
|
requirement: !ruby/object:Gem::Requirement
|
253
282
|
requirements:
|
254
283
|
- - "~>"
|
255
284
|
- !ruby/object:Gem::Version
|
256
285
|
version: '2.8'
|
257
|
-
name: benchmark-ips
|
258
286
|
type: :development
|
259
287
|
prerelease: false
|
260
288
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -263,12 +291,12 @@ dependencies:
|
|
263
291
|
- !ruby/object:Gem::Version
|
264
292
|
version: '2.8'
|
265
293
|
- !ruby/object:Gem::Dependency
|
294
|
+
name: benchmark-memory
|
266
295
|
requirement: !ruby/object:Gem::Requirement
|
267
296
|
requirements:
|
268
297
|
- - "~>"
|
269
298
|
- !ruby/object:Gem::Version
|
270
299
|
version: '0.1'
|
271
|
-
name: benchmark-memory
|
272
300
|
type: :development
|
273
301
|
prerelease: false
|
274
302
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -277,12 +305,12 @@ dependencies:
|
|
277
305
|
- !ruby/object:Gem::Version
|
278
306
|
version: '0.1'
|
279
307
|
- !ruby/object:Gem::Dependency
|
308
|
+
name: memory_profiler
|
280
309
|
requirement: !ruby/object:Gem::Requirement
|
281
310
|
requirements:
|
282
311
|
- - "~>"
|
283
312
|
- !ruby/object:Gem::Version
|
284
313
|
version: '0.9'
|
285
|
-
name: memory_profiler
|
286
314
|
type: :development
|
287
315
|
prerelease: false
|
288
316
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -291,40 +319,82 @@ dependencies:
|
|
291
319
|
- !ruby/object:Gem::Version
|
292
320
|
version: '0.9'
|
293
321
|
- !ruby/object:Gem::Dependency
|
322
|
+
name: redcarpet
|
294
323
|
requirement: !ruby/object:Gem::Requirement
|
295
324
|
requirements:
|
296
325
|
- - "~>"
|
297
326
|
- !ruby/object:Gem::Version
|
298
|
-
version:
|
327
|
+
version: '3.4'
|
328
|
+
type: :development
|
329
|
+
prerelease: false
|
330
|
+
version_requirements: !ruby/object:Gem::Requirement
|
331
|
+
requirements:
|
332
|
+
- - "~>"
|
333
|
+
- !ruby/object:Gem::Version
|
334
|
+
version: '3.4'
|
335
|
+
- !ruby/object:Gem::Dependency
|
299
336
|
name: pry
|
337
|
+
requirement: !ruby/object:Gem::Requirement
|
338
|
+
requirements:
|
339
|
+
- - "~>"
|
340
|
+
- !ruby/object:Gem::Version
|
341
|
+
version: 0.12.2
|
300
342
|
type: :development
|
301
343
|
prerelease: false
|
302
344
|
version_requirements: !ruby/object:Gem::Requirement
|
303
345
|
requirements:
|
304
346
|
- - "~>"
|
305
347
|
- !ruby/object:Gem::Version
|
306
|
-
version: 0.
|
348
|
+
version: 0.12.2
|
307
349
|
- !ruby/object:Gem::Dependency
|
350
|
+
name: pry-nav
|
308
351
|
requirement: !ruby/object:Gem::Requirement
|
309
352
|
requirements:
|
310
353
|
- - "~>"
|
311
354
|
- !ruby/object:Gem::Version
|
312
|
-
version: 0.
|
355
|
+
version: 0.3.0
|
356
|
+
type: :development
|
357
|
+
prerelease: false
|
358
|
+
version_requirements: !ruby/object:Gem::Requirement
|
359
|
+
requirements:
|
360
|
+
- - "~>"
|
361
|
+
- !ruby/object:Gem::Version
|
362
|
+
version: 0.3.0
|
363
|
+
- !ruby/object:Gem::Dependency
|
313
364
|
name: pry-stack_explorer
|
365
|
+
requirement: !ruby/object:Gem::Requirement
|
366
|
+
requirements:
|
367
|
+
- - "~>"
|
368
|
+
- !ruby/object:Gem::Version
|
369
|
+
version: 0.4.9
|
314
370
|
type: :development
|
315
371
|
prerelease: false
|
316
372
|
version_requirements: !ruby/object:Gem::Requirement
|
317
373
|
requirements:
|
318
374
|
- - "~>"
|
319
375
|
- !ruby/object:Gem::Version
|
320
|
-
version: 0.4.9
|
376
|
+
version: 0.4.9
|
321
377
|
- !ruby/object:Gem::Dependency
|
378
|
+
name: simplecov
|
322
379
|
requirement: !ruby/object:Gem::Requirement
|
323
380
|
requirements:
|
324
381
|
- - "~>"
|
325
382
|
- !ruby/object:Gem::Version
|
326
|
-
version: '
|
383
|
+
version: '0.17'
|
384
|
+
type: :development
|
385
|
+
prerelease: false
|
386
|
+
version_requirements: !ruby/object:Gem::Requirement
|
387
|
+
requirements:
|
388
|
+
- - "~>"
|
389
|
+
- !ruby/object:Gem::Version
|
390
|
+
version: '0.17'
|
391
|
+
- !ruby/object:Gem::Dependency
|
327
392
|
name: warning
|
393
|
+
requirement: !ruby/object:Gem::Requirement
|
394
|
+
requirements:
|
395
|
+
- - "~>"
|
396
|
+
- !ruby/object:Gem::Version
|
397
|
+
version: '1'
|
328
398
|
type: :development
|
329
399
|
prerelease: false
|
330
400
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -351,14 +421,18 @@ files:
|
|
351
421
|
- ".circleci/images/primary/Dockerfile-2.5.6"
|
352
422
|
- ".circleci/images/primary/Dockerfile-2.6.4"
|
353
423
|
- ".circleci/images/primary/Dockerfile-2.7.0"
|
424
|
+
- ".circleci/images/primary/Dockerfile-3.0.0"
|
354
425
|
- ".circleci/images/primary/Dockerfile-jruby-9.2"
|
355
426
|
- ".dockerignore"
|
356
427
|
- ".env"
|
357
428
|
- ".github/CODEOWNERS"
|
429
|
+
- ".github/workflows/add-milestone-to-pull-requests.yml"
|
430
|
+
- ".github/workflows/create-next-milestone.yml"
|
358
431
|
- ".gitignore"
|
359
432
|
- ".gitlab-ci.yml"
|
360
433
|
- ".rspec"
|
361
434
|
- ".rubocop.yml"
|
435
|
+
- ".simplecov"
|
362
436
|
- ".yardopts"
|
363
437
|
- Appraisals
|
364
438
|
- CHANGELOG.md
|
@@ -472,6 +546,12 @@ files:
|
|
472
546
|
- lib/ddtrace/contrib/configuration/resolver.rb
|
473
547
|
- lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb
|
474
548
|
- lib/ddtrace/contrib/configuration/settings.rb
|
549
|
+
- lib/ddtrace/contrib/cucumber/configuration/settings.rb
|
550
|
+
- lib/ddtrace/contrib/cucumber/ext.rb
|
551
|
+
- lib/ddtrace/contrib/cucumber/formatter.rb
|
552
|
+
- lib/ddtrace/contrib/cucumber/instrumentation.rb
|
553
|
+
- lib/ddtrace/contrib/cucumber/integration.rb
|
554
|
+
- lib/ddtrace/contrib/cucumber/patcher.rb
|
475
555
|
- lib/ddtrace/contrib/dalli/configuration/settings.rb
|
476
556
|
- lib/ddtrace/contrib/dalli/ext.rb
|
477
557
|
- lib/ddtrace/contrib/dalli/instrumentation.rb
|
@@ -574,10 +654,22 @@ files:
|
|
574
654
|
- lib/ddtrace/contrib/presto/instrumentation.rb
|
575
655
|
- lib/ddtrace/contrib/presto/integration.rb
|
576
656
|
- lib/ddtrace/contrib/presto/patcher.rb
|
657
|
+
- lib/ddtrace/contrib/qless/configuration/settings.rb
|
658
|
+
- lib/ddtrace/contrib/qless/ext.rb
|
659
|
+
- lib/ddtrace/contrib/qless/integration.rb
|
660
|
+
- lib/ddtrace/contrib/qless/patcher.rb
|
661
|
+
- lib/ddtrace/contrib/qless/qless_job.rb
|
662
|
+
- lib/ddtrace/contrib/qless/tracer_cleaner.rb
|
663
|
+
- lib/ddtrace/contrib/que/configuration/settings.rb
|
664
|
+
- lib/ddtrace/contrib/que/ext.rb
|
665
|
+
- lib/ddtrace/contrib/que/integration.rb
|
666
|
+
- lib/ddtrace/contrib/que/patcher.rb
|
667
|
+
- lib/ddtrace/contrib/que/tracer.rb
|
577
668
|
- lib/ddtrace/contrib/racecar/configuration/settings.rb
|
578
669
|
- lib/ddtrace/contrib/racecar/event.rb
|
579
670
|
- lib/ddtrace/contrib/racecar/events.rb
|
580
671
|
- lib/ddtrace/contrib/racecar/events/batch.rb
|
672
|
+
- lib/ddtrace/contrib/racecar/events/consume.rb
|
581
673
|
- lib/ddtrace/contrib/racecar/events/message.rb
|
582
674
|
- lib/ddtrace/contrib/racecar/ext.rb
|
583
675
|
- lib/ddtrace/contrib/racecar/integration.rb
|
@@ -592,6 +684,7 @@ files:
|
|
592
684
|
- lib/ddtrace/contrib/rails/ext.rb
|
593
685
|
- lib/ddtrace/contrib/rails/framework.rb
|
594
686
|
- lib/ddtrace/contrib/rails/integration.rb
|
687
|
+
- lib/ddtrace/contrib/rails/log_injection.rb
|
595
688
|
- lib/ddtrace/contrib/rails/middlewares.rb
|
596
689
|
- lib/ddtrace/contrib/rails/patcher.rb
|
597
690
|
- lib/ddtrace/contrib/rails/railtie.rb
|
@@ -621,6 +714,12 @@ files:
|
|
621
714
|
- lib/ddtrace/contrib/rest_client/integration.rb
|
622
715
|
- lib/ddtrace/contrib/rest_client/patcher.rb
|
623
716
|
- lib/ddtrace/contrib/rest_client/request_patch.rb
|
717
|
+
- lib/ddtrace/contrib/rspec/configuration/settings.rb
|
718
|
+
- lib/ddtrace/contrib/rspec/example.rb
|
719
|
+
- lib/ddtrace/contrib/rspec/example_group.rb
|
720
|
+
- lib/ddtrace/contrib/rspec/ext.rb
|
721
|
+
- lib/ddtrace/contrib/rspec/integration.rb
|
722
|
+
- lib/ddtrace/contrib/rspec/patcher.rb
|
624
723
|
- lib/ddtrace/contrib/sequel/configuration/settings.rb
|
625
724
|
- lib/ddtrace/contrib/sequel/database.rb
|
626
725
|
- lib/ddtrace/contrib/sequel/dataset.rb
|
@@ -653,6 +752,7 @@ files:
|
|
653
752
|
- lib/ddtrace/contrib/sneakers/integration.rb
|
654
753
|
- lib/ddtrace/contrib/sneakers/patcher.rb
|
655
754
|
- lib/ddtrace/contrib/sneakers/tracer.rb
|
755
|
+
- lib/ddtrace/contrib/status_code_matcher.rb
|
656
756
|
- lib/ddtrace/contrib/sucker_punch/configuration/settings.rb
|
657
757
|
- lib/ddtrace/contrib/sucker_punch/exception_handler.rb
|
658
758
|
- lib/ddtrace/contrib/sucker_punch/ext.rb
|
@@ -673,13 +773,16 @@ files:
|
|
673
773
|
- lib/ddtrace/event.rb
|
674
774
|
- lib/ddtrace/ext/analytics.rb
|
675
775
|
- lib/ddtrace/ext/app_types.rb
|
776
|
+
- lib/ddtrace/ext/ci.rb
|
676
777
|
- lib/ddtrace/ext/correlation.rb
|
677
778
|
- lib/ddtrace/ext/diagnostics.rb
|
678
779
|
- lib/ddtrace/ext/distributed.rb
|
679
780
|
- lib/ddtrace/ext/environment.rb
|
680
781
|
- lib/ddtrace/ext/errors.rb
|
681
782
|
- lib/ddtrace/ext/forced_tracing.rb
|
783
|
+
- lib/ddtrace/ext/git.rb
|
682
784
|
- lib/ddtrace/ext/http.rb
|
785
|
+
- lib/ddtrace/ext/integration.rb
|
683
786
|
- lib/ddtrace/ext/manual_tracing.rb
|
684
787
|
- lib/ddtrace/ext/metrics.rb
|
685
788
|
- lib/ddtrace/ext/net.rb
|
@@ -687,6 +790,7 @@ files:
|
|
687
790
|
- lib/ddtrace/ext/runtime.rb
|
688
791
|
- lib/ddtrace/ext/sampling.rb
|
689
792
|
- lib/ddtrace/ext/sql.rb
|
793
|
+
- lib/ddtrace/ext/test.rb
|
690
794
|
- lib/ddtrace/ext/transport.rb
|
691
795
|
- lib/ddtrace/forced_tracing.rb
|
692
796
|
- lib/ddtrace/logger.rb
|
@@ -765,6 +869,7 @@ files:
|
|
765
869
|
- lib/ddtrace/transport/traces.rb
|
766
870
|
- lib/ddtrace/utils.rb
|
767
871
|
- lib/ddtrace/utils/database.rb
|
872
|
+
- lib/ddtrace/utils/forking.rb
|
768
873
|
- lib/ddtrace/utils/time.rb
|
769
874
|
- lib/ddtrace/vendor/active_record/connection_specification.rb
|
770
875
|
- lib/ddtrace/version.rb
|
@@ -798,7 +903,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
798
903
|
- !ruby/object:Gem::Version
|
799
904
|
version: 2.0.0
|
800
905
|
requirements: []
|
801
|
-
rubygems_version: 3.
|
906
|
+
rubygems_version: 3.2.3
|
802
907
|
signing_key:
|
803
908
|
specification_version: 4
|
804
909
|
summary: Datadog tracing code for your Ruby applications
|