ddtrace 0.33.1 → 0.34.0
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/.circleci/config.yml +3 -0
- data/Appraisals +29 -5
- data/CHANGELOG.md +23 -1
- data/Rakefile +72 -11
- data/docker-compose.yml +20 -0
- data/docs/GettingStarted.md +63 -10
- data/lib/ddtrace.rb +4 -0
- data/lib/ddtrace/analytics.rb +7 -0
- data/lib/ddtrace/configuration/base.rb +2 -1
- data/lib/ddtrace/configuration/option.rb +9 -1
- data/lib/ddtrace/configuration/option_definition.rb +0 -4
- data/lib/ddtrace/configuration/settings.rb +78 -23
- data/lib/ddtrace/contrib/action_cable/events/perform_action.rb +3 -0
- data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +4 -0
- data/lib/ddtrace/contrib/action_view/events/render_partial.rb +3 -0
- data/lib/ddtrace/contrib/action_view/events/render_template.rb +3 -0
- data/lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb +3 -0
- data/lib/ddtrace/contrib/action_view/instrumentation/template_renderer.rb +6 -0
- data/lib/ddtrace/contrib/active_model_serializers/event.rb +3 -0
- data/lib/ddtrace/contrib/active_record/events/instantiation.rb +3 -0
- data/lib/ddtrace/contrib/analytics.rb +4 -0
- data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +39 -0
- data/lib/ddtrace/contrib/delayed_job/plugin.rb +4 -0
- data/lib/ddtrace/contrib/ethon/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/ethon/easy_patch.rb +22 -13
- data/lib/ddtrace/contrib/ethon/integration.rb +5 -0
- data/lib/ddtrace/contrib/excon/integration.rb +5 -0
- data/lib/ddtrace/contrib/excon/middleware.rb +12 -9
- data/lib/ddtrace/contrib/faraday/integration.rb +5 -0
- data/lib/ddtrace/contrib/faraday/middleware.rb +20 -32
- data/lib/ddtrace/contrib/faraday/patcher.rb +6 -1
- data/lib/ddtrace/contrib/faraday/rack_builder.rb +18 -0
- data/lib/ddtrace/contrib/grape/endpoint.rb +9 -0
- data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +3 -0
- data/lib/ddtrace/contrib/http/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/http/instrumentation.rb +65 -21
- data/lib/ddtrace/contrib/http/integration.rb +5 -0
- data/lib/ddtrace/contrib/http_annotation_helper.rb +10 -0
- data/lib/ddtrace/contrib/presto/configuration/settings.rb +8 -6
- data/lib/ddtrace/contrib/presto/instrumentation.rb +8 -8
- data/lib/ddtrace/contrib/racecar/event.rb +4 -0
- data/lib/ddtrace/contrib/rack/middlewares.rb +4 -0
- data/lib/ddtrace/contrib/rake/instrumentation.rb +4 -0
- data/lib/ddtrace/contrib/resque/resque_job.rb +4 -0
- data/lib/ddtrace/contrib/shoryuken/tracer.rb +4 -0
- data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +4 -0
- data/lib/ddtrace/contrib/sinatra/tracer.rb +3 -0
- data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +3 -0
- data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +14 -0
- data/lib/ddtrace/correlation.rb +12 -5
- data/lib/ddtrace/environment.rb +4 -0
- data/lib/ddtrace/event.rb +52 -0
- data/lib/ddtrace/ext/analytics.rb +1 -0
- data/lib/ddtrace/ext/correlation.rb +10 -0
- data/lib/ddtrace/ext/environment.rb +13 -0
- data/lib/ddtrace/metrics.rb +7 -0
- data/lib/ddtrace/opentelemetry/extensions.rb +13 -0
- data/lib/ddtrace/opentelemetry/span.rb +33 -0
- data/lib/ddtrace/span.rb +2 -1
- data/lib/ddtrace/tracer.rb +13 -3
- data/lib/ddtrace/version.rb +2 -2
- data/lib/ddtrace/worker.rb +20 -0
- data/lib/ddtrace/workers/async.rb +165 -0
- data/lib/ddtrace/workers/loop.rb +105 -0
- data/lib/ddtrace/workers/polling.rb +48 -0
- data/lib/ddtrace/workers/queue.rb +39 -0
- metadata +15 -2
@@ -0,0 +1,105 @@
|
|
1
|
+
module Datadog
|
2
|
+
module Workers
|
3
|
+
# Adds looping behavior to workers, with a sleep
|
4
|
+
# interval between each loop.
|
5
|
+
module IntervalLoop
|
6
|
+
BACK_OFF_RATIO = 1.2
|
7
|
+
BACK_OFF_MAX = 5
|
8
|
+
BASE_INTERVAL = 1
|
9
|
+
|
10
|
+
def self.included(base)
|
11
|
+
base.send(:prepend, PrependedMethods)
|
12
|
+
end
|
13
|
+
|
14
|
+
# Methods that must be prepended
|
15
|
+
module PrependedMethods
|
16
|
+
def perform(*args)
|
17
|
+
perform_loop { super(*args) }
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def stop_loop
|
22
|
+
mutex.synchronize do
|
23
|
+
return false unless run_loop?
|
24
|
+
@run_loop = false
|
25
|
+
shutdown.signal
|
26
|
+
end
|
27
|
+
|
28
|
+
true
|
29
|
+
end
|
30
|
+
|
31
|
+
def work_pending?
|
32
|
+
run_loop?
|
33
|
+
end
|
34
|
+
|
35
|
+
def run_loop?
|
36
|
+
@run_loop = false unless instance_variable_defined?(:@run_loop)
|
37
|
+
@run_loop == true
|
38
|
+
end
|
39
|
+
|
40
|
+
def loop_base_interval
|
41
|
+
@loop_base_interval ||= BASE_INTERVAL
|
42
|
+
end
|
43
|
+
|
44
|
+
def loop_back_off_ratio
|
45
|
+
@loop_back_off_ratio ||= BACK_OFF_RATIO
|
46
|
+
end
|
47
|
+
|
48
|
+
def loop_back_off_max
|
49
|
+
@loop_back_off_max ||= BACK_OFF_MAX
|
50
|
+
end
|
51
|
+
|
52
|
+
def loop_wait_time
|
53
|
+
@loop_wait_time ||= loop_base_interval
|
54
|
+
end
|
55
|
+
|
56
|
+
def loop_back_off?
|
57
|
+
false
|
58
|
+
end
|
59
|
+
|
60
|
+
def loop_back_off!(amount = nil)
|
61
|
+
@loop_wait_time = amount || [loop_wait_time * BACK_OFF_RATIO, BACK_OFF_MAX].min
|
62
|
+
end
|
63
|
+
|
64
|
+
protected
|
65
|
+
|
66
|
+
attr_writer \
|
67
|
+
:loop_back_off_max,
|
68
|
+
:loop_back_off_ratio,
|
69
|
+
:loop_base_interval
|
70
|
+
|
71
|
+
def mutex
|
72
|
+
@mutex ||= Mutex.new
|
73
|
+
end
|
74
|
+
|
75
|
+
private
|
76
|
+
|
77
|
+
def perform_loop
|
78
|
+
@run_loop = true
|
79
|
+
|
80
|
+
loop do
|
81
|
+
if work_pending?
|
82
|
+
# Run the task
|
83
|
+
yield
|
84
|
+
|
85
|
+
# Reset the wait interval
|
86
|
+
loop_back_off!(loop_base_interval)
|
87
|
+
elsif loop_back_off?
|
88
|
+
# Back off the wait interval a bit
|
89
|
+
loop_back_off!
|
90
|
+
end
|
91
|
+
|
92
|
+
# Wait for an interval, unless shutdown has been signaled.
|
93
|
+
mutex.synchronize do
|
94
|
+
return unless run_loop? || work_pending?
|
95
|
+
shutdown.wait(mutex, loop_wait_time) if run_loop?
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
def shutdown
|
101
|
+
@shutdown ||= ConditionVariable.new
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'ddtrace/workers/async'
|
2
|
+
require 'ddtrace/workers/loop'
|
3
|
+
|
4
|
+
module Datadog
|
5
|
+
module Workers
|
6
|
+
# Adds polling (async looping) behavior to workers
|
7
|
+
module Polling
|
8
|
+
SHUTDOWN_TIMEOUT = 1
|
9
|
+
|
10
|
+
def self.included(base)
|
11
|
+
base.send(:include, Workers::IntervalLoop)
|
12
|
+
base.send(:include, Workers::Async::Thread)
|
13
|
+
base.send(:prepend, PrependedMethods)
|
14
|
+
end
|
15
|
+
|
16
|
+
# Methods that must be prepended
|
17
|
+
module PrependedMethods
|
18
|
+
def perform(*args)
|
19
|
+
super if enabled?
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def stop(force_stop = false, timeout = SHUTDOWN_TIMEOUT)
|
24
|
+
if running?
|
25
|
+
# Attempt graceful stop and wait
|
26
|
+
stop_loop
|
27
|
+
graceful = join(timeout)
|
28
|
+
|
29
|
+
# If timeout and force stop...
|
30
|
+
!graceful && force_stop ? terminate : graceful
|
31
|
+
else
|
32
|
+
false
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def enabled?
|
37
|
+
@enabled = true unless instance_variable_defined?(:@enabled)
|
38
|
+
@enabled
|
39
|
+
end
|
40
|
+
|
41
|
+
# Allow worker to be started
|
42
|
+
def enabled=(value)
|
43
|
+
# Coerce to boolean
|
44
|
+
@enabled = (value == true)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module Datadog
|
2
|
+
module Workers
|
3
|
+
# Adds queue behavior to workers, with a buffer
|
4
|
+
# to which items can be queued then dequeued.
|
5
|
+
module Queue
|
6
|
+
def self.included(base)
|
7
|
+
base.send(:prepend, PrependedMethods)
|
8
|
+
end
|
9
|
+
|
10
|
+
# Methods that must be prepended
|
11
|
+
module PrependedMethods
|
12
|
+
def perform(*args)
|
13
|
+
super(*dequeue) if work_pending?
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def buffer
|
18
|
+
@buffer ||= []
|
19
|
+
end
|
20
|
+
|
21
|
+
def enqueue(*args)
|
22
|
+
buffer.push(args)
|
23
|
+
end
|
24
|
+
|
25
|
+
def dequeue
|
26
|
+
buffer.shift
|
27
|
+
end
|
28
|
+
|
29
|
+
def work_pending?
|
30
|
+
!buffer.empty?
|
31
|
+
end
|
32
|
+
|
33
|
+
protected
|
34
|
+
|
35
|
+
attr_writer \
|
36
|
+
:buffer
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
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.
|
4
|
+
version: 0.34.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: 2020-03-
|
11
|
+
date: 2020-03-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: msgpack
|
@@ -424,6 +424,7 @@ files:
|
|
424
424
|
- lib/ddtrace/contrib/concurrent_ruby/patcher.rb
|
425
425
|
- lib/ddtrace/contrib/configurable.rb
|
426
426
|
- lib/ddtrace/contrib/configuration/resolver.rb
|
427
|
+
- lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb
|
427
428
|
- lib/ddtrace/contrib/configuration/settings.rb
|
428
429
|
- lib/ddtrace/contrib/dalli/configuration/settings.rb
|
429
430
|
- lib/ddtrace/contrib/dalli/ext.rb
|
@@ -459,6 +460,7 @@ files:
|
|
459
460
|
- lib/ddtrace/contrib/faraday/integration.rb
|
460
461
|
- lib/ddtrace/contrib/faraday/middleware.rb
|
461
462
|
- lib/ddtrace/contrib/faraday/patcher.rb
|
463
|
+
- lib/ddtrace/contrib/faraday/rack_builder.rb
|
462
464
|
- lib/ddtrace/contrib/grape/configuration/settings.rb
|
463
465
|
- lib/ddtrace/contrib/grape/endpoint.rb
|
464
466
|
- lib/ddtrace/contrib/grape/ext.rb
|
@@ -483,6 +485,7 @@ files:
|
|
483
485
|
- lib/ddtrace/contrib/http/instrumentation.rb
|
484
486
|
- lib/ddtrace/contrib/http/integration.rb
|
485
487
|
- lib/ddtrace/contrib/http/patcher.rb
|
488
|
+
- lib/ddtrace/contrib/http_annotation_helper.rb
|
486
489
|
- lib/ddtrace/contrib/integration.rb
|
487
490
|
- lib/ddtrace/contrib/mongodb/configuration/settings.rb
|
488
491
|
- lib/ddtrace/contrib/mongodb/ext.rb
|
@@ -593,10 +596,13 @@ files:
|
|
593
596
|
- lib/ddtrace/encoding.rb
|
594
597
|
- lib/ddtrace/environment.rb
|
595
598
|
- lib/ddtrace/error.rb
|
599
|
+
- lib/ddtrace/event.rb
|
596
600
|
- lib/ddtrace/ext/analytics.rb
|
597
601
|
- lib/ddtrace/ext/app_types.rb
|
602
|
+
- lib/ddtrace/ext/correlation.rb
|
598
603
|
- lib/ddtrace/ext/diagnostics.rb
|
599
604
|
- lib/ddtrace/ext/distributed.rb
|
605
|
+
- lib/ddtrace/ext/environment.rb
|
600
606
|
- lib/ddtrace/ext/errors.rb
|
601
607
|
- lib/ddtrace/ext/forced_tracing.rb
|
602
608
|
- lib/ddtrace/ext/http.rb
|
@@ -612,6 +618,8 @@ files:
|
|
612
618
|
- lib/ddtrace/logger.rb
|
613
619
|
- lib/ddtrace/metrics.rb
|
614
620
|
- lib/ddtrace/monkey.rb
|
621
|
+
- lib/ddtrace/opentelemetry/extensions.rb
|
622
|
+
- lib/ddtrace/opentelemetry/span.rb
|
615
623
|
- lib/ddtrace/opentracer.rb
|
616
624
|
- lib/ddtrace/opentracer/binary_propagator.rb
|
617
625
|
- lib/ddtrace/opentracer/carrier.rb
|
@@ -686,7 +694,12 @@ files:
|
|
686
694
|
- lib/ddtrace/utils/time.rb
|
687
695
|
- lib/ddtrace/vendor/active_record/connection_specification.rb
|
688
696
|
- lib/ddtrace/version.rb
|
697
|
+
- lib/ddtrace/worker.rb
|
689
698
|
- lib/ddtrace/workers.rb
|
699
|
+
- lib/ddtrace/workers/async.rb
|
700
|
+
- lib/ddtrace/workers/loop.rb
|
701
|
+
- lib/ddtrace/workers/polling.rb
|
702
|
+
- lib/ddtrace/workers/queue.rb
|
690
703
|
- lib/ddtrace/writer.rb
|
691
704
|
- tasks/release_gem.rake
|
692
705
|
homepage: https://github.com/DataDog/dd-trace-rb
|