ddtrace 0.34.1 → 0.36.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 +5 -5
- data/.circleci/config.yml +58 -9
- data/.circleci/images/primary/Dockerfile-jruby-9.2 +77 -0
- data/.rubocop.yml +4 -0
- data/Appraisals +9 -7
- data/CHANGELOG.md +89 -3
- data/Rakefile +11 -2
- data/ddtrace.gemspec +5 -3
- data/docker-compose.yml +35 -0
- data/docs/DevelopmentGuide.md +1 -1
- data/docs/GettingStarted.md +89 -36
- data/lib/ddtrace.rb +1 -1
- data/lib/ddtrace/buffer.rb +9 -9
- data/lib/ddtrace/chunker.rb +34 -0
- data/lib/ddtrace/configuration.rb +28 -5
- data/lib/ddtrace/configuration/base.rb +1 -1
- data/lib/ddtrace/configuration/components.rb +154 -0
- data/lib/ddtrace/configuration/options.rb +1 -1
- data/lib/ddtrace/configuration/settings.rb +131 -63
- data/lib/ddtrace/context.rb +6 -6
- data/lib/ddtrace/context_flush.rb +1 -1
- data/lib/ddtrace/contrib/action_cable/instrumentation.rb +1 -1
- data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +2 -2
- data/lib/ddtrace/contrib/action_view/events/render_partial.rb +1 -1
- data/lib/ddtrace/contrib/action_view/events/render_template.rb +1 -1
- data/lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb +1 -1
- data/lib/ddtrace/contrib/action_view/instrumentation/template_renderer.rb +2 -2
- data/lib/ddtrace/contrib/action_view/patcher.rb +1 -1
- data/lib/ddtrace/contrib/active_record/events/instantiation.rb +1 -1
- data/lib/ddtrace/contrib/active_record/events/sql.rb +1 -1
- data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +2 -2
- data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +2 -2
- data/lib/ddtrace/contrib/analytics.rb +1 -1
- data/lib/ddtrace/contrib/configuration/settings.rb +1 -1
- data/lib/ddtrace/contrib/dalli/patcher.rb +1 -1
- data/lib/ddtrace/contrib/dalli/quantize.rb +1 -1
- data/lib/ddtrace/contrib/elasticsearch/patcher.rb +1 -1
- data/lib/ddtrace/contrib/excon/middleware.rb +2 -2
- data/lib/ddtrace/contrib/extensions.rb +29 -5
- data/lib/ddtrace/contrib/faraday/patcher.rb +1 -1
- data/lib/ddtrace/contrib/grape/endpoint.rb +5 -5
- data/lib/ddtrace/contrib/grape/patcher.rb +1 -1
- data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +1 -1
- data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +2 -2
- data/lib/ddtrace/contrib/grpc/patcher.rb +1 -1
- data/lib/ddtrace/contrib/http/circuit_breaker.rb +8 -32
- data/lib/ddtrace/contrib/http/instrumentation.rb +2 -2
- data/lib/ddtrace/contrib/mongodb/subscribers.rb +2 -2
- data/lib/ddtrace/contrib/patchable.rb +1 -1
- data/lib/ddtrace/contrib/patcher.rb +3 -3
- data/lib/ddtrace/contrib/presto/instrumentation.rb +3 -3
- data/lib/ddtrace/contrib/presto/patcher.rb +1 -1
- data/lib/ddtrace/contrib/rack/middlewares.rb +2 -2
- data/lib/ddtrace/contrib/rack/patcher.rb +2 -2
- data/lib/ddtrace/contrib/rack/request_queue.rb +1 -1
- data/lib/ddtrace/contrib/rails/configuration/settings.rb +14 -0
- data/lib/ddtrace/contrib/rails/framework.rb +54 -48
- data/lib/ddtrace/contrib/rails/integration.rb +1 -1
- data/lib/ddtrace/contrib/rake/instrumentation.rb +2 -2
- data/lib/ddtrace/contrib/redis/quantize.rb +1 -1
- data/lib/ddtrace/contrib/resque/resque_job.rb +2 -2
- data/lib/ddtrace/contrib/sidekiq/tracing.rb +1 -1
- data/lib/ddtrace/contrib/sinatra/env.rb +20 -0
- data/lib/ddtrace/contrib/sinatra/ext.rb +6 -0
- data/lib/ddtrace/contrib/sinatra/patcher.rb +1 -0
- data/lib/ddtrace/contrib/sinatra/tracer.rb +98 -35
- data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +16 -13
- data/lib/ddtrace/correlation.rb +9 -6
- data/lib/ddtrace/diagnostics/health.rb +2 -6
- data/lib/ddtrace/encoding.rb +13 -39
- data/lib/ddtrace/event.rb +1 -1
- data/lib/ddtrace/ext/correlation.rb +1 -0
- data/lib/ddtrace/ext/diagnostics.rb +2 -0
- data/lib/ddtrace/ext/environment.rb +1 -0
- data/lib/ddtrace/ext/forced_tracing.rb +1 -1
- data/lib/ddtrace/logger.rb +3 -44
- data/lib/ddtrace/metrics.rb +5 -5
- data/lib/ddtrace/monkey.rb +1 -1
- data/lib/ddtrace/opentracer/global_tracer.rb +1 -1
- data/lib/ddtrace/pin.rb +18 -17
- data/lib/ddtrace/pipeline.rb +1 -1
- data/lib/ddtrace/propagation/http_propagator.rb +2 -2
- data/lib/ddtrace/runtime/cgroup.rb +1 -1
- data/lib/ddtrace/runtime/container.rb +1 -1
- data/lib/ddtrace/runtime/metrics.rb +5 -2
- data/lib/ddtrace/sampler.rb +2 -2
- data/lib/ddtrace/sampling/rule.rb +1 -1
- data/lib/ddtrace/sampling/rule_sampler.rb +1 -1
- data/lib/ddtrace/span.rb +4 -4
- data/lib/ddtrace/sync_writer.rb +3 -8
- data/lib/ddtrace/tracer.rb +26 -31
- data/lib/ddtrace/transport/http.rb +1 -1
- data/lib/ddtrace/transport/http/api/instance.rb +4 -0
- data/lib/ddtrace/transport/http/builder.rb +3 -5
- data/lib/ddtrace/transport/http/client.rb +7 -64
- data/lib/ddtrace/transport/http/response.rb +1 -1
- data/lib/ddtrace/transport/http/statistics.rb +1 -1
- data/lib/ddtrace/transport/http/traces.rb +10 -7
- data/lib/ddtrace/transport/io.rb +1 -1
- data/lib/ddtrace/transport/io/client.rb +2 -2
- data/lib/ddtrace/transport/io/response.rb +3 -1
- data/lib/ddtrace/transport/io/traces.rb +50 -3
- data/lib/ddtrace/transport/parcel.rb +0 -4
- data/lib/ddtrace/transport/statistics.rb +2 -2
- data/lib/ddtrace/transport/traces.rb +160 -10
- data/lib/ddtrace/utils.rb +1 -1
- data/lib/ddtrace/version.rb +2 -2
- data/lib/ddtrace/workers.rb +5 -13
- data/lib/ddtrace/workers/async.rb +2 -2
- data/lib/ddtrace/workers/runtime_metrics.rb +47 -0
- data/lib/ddtrace/workers/trace_writer.rb +199 -0
- data/lib/ddtrace/writer.rb +20 -27
- metadata +22 -32
|
@@ -19,23 +19,22 @@ module Datadog
|
|
|
19
19
|
tracer.provider.context = context if context.trace_id
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
tracer.trace(
|
|
24
|
-
Ext::SPAN_REQUEST,
|
|
25
|
-
service: configuration[:service_name],
|
|
26
|
-
span_type: Datadog::Ext::HTTP::TYPE_INBOUND
|
|
27
|
-
) do |span|
|
|
28
|
-
Sinatra::Env.set_datadog_span(env, span)
|
|
22
|
+
Sinatra::Env.set_middleware_start_time(env)
|
|
29
23
|
|
|
24
|
+
# Run application stack
|
|
25
|
+
response = @app.call(env)
|
|
26
|
+
ensure
|
|
27
|
+
# Augment current Sinatra middleware span if we are the top-most Sinatra app on the Rack stack.
|
|
28
|
+
span = Sinatra::Env.datadog_span(env)
|
|
29
|
+
if span
|
|
30
30
|
Sinatra::Env.request_header_tags(env, configuration[:headers][:request]).each do |name, value|
|
|
31
31
|
span.set_tag(name, value) if span.get_tag(name).nil?
|
|
32
32
|
end
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
span.set_tag(name, value) if span.get_tag(name).nil?
|
|
34
|
+
if response && (headers = response[1])
|
|
35
|
+
Sinatra::Headers.response_header_tags(headers, configuration[:headers][:response]).each do |name, value|
|
|
36
|
+
span.set_tag(name, value) if span.get_tag(name).nil?
|
|
37
|
+
end
|
|
39
38
|
end
|
|
40
39
|
|
|
41
40
|
# Set analytics sample rate
|
|
@@ -44,7 +43,11 @@ module Datadog
|
|
|
44
43
|
# Measure service stats
|
|
45
44
|
Contrib::Analytics.set_measured(span)
|
|
46
45
|
|
|
47
|
-
|
|
46
|
+
span.finish
|
|
47
|
+
|
|
48
|
+
# Remove span from env, so other Sinatra apps mounted on this same
|
|
49
|
+
# Rack stack do not modify it with their own information.
|
|
50
|
+
Sinatra::Env.set_datadog_span(env, nil)
|
|
48
51
|
end
|
|
49
52
|
end
|
|
50
53
|
|
data/lib/ddtrace/correlation.rb
CHANGED
|
@@ -6,21 +6,24 @@ module Datadog
|
|
|
6
6
|
# e.g. Retrieve a correlation to the current trace for logging, etc.
|
|
7
7
|
module Correlation
|
|
8
8
|
# Struct representing correlation
|
|
9
|
-
Identifier = Struct.new(:trace_id, :span_id, :env, :version) do
|
|
9
|
+
Identifier = Struct.new(:trace_id, :span_id, :env, :service, :version) do
|
|
10
10
|
def initialize(*args)
|
|
11
11
|
super
|
|
12
12
|
self.trace_id = trace_id || 0
|
|
13
13
|
self.span_id = span_id || 0
|
|
14
14
|
self.env = env || Datadog.configuration.env
|
|
15
|
+
self.service = service || Datadog.configuration.service
|
|
15
16
|
self.version = version || Datadog.configuration.version
|
|
16
17
|
end
|
|
17
18
|
|
|
18
19
|
def to_s
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
attributes = []
|
|
21
|
+
attributes << "#{Ext::Correlation::ATTR_ENV}=#{env}" unless env.nil?
|
|
22
|
+
attributes << "#{Ext::Correlation::ATTR_SERVICE}=#{service}" unless service.nil?
|
|
23
|
+
attributes << "#{Ext::Correlation::ATTR_VERSION}=#{version}" unless version.nil?
|
|
24
|
+
attributes << "#{Ext::Correlation::ATTR_TRACE_ID}=#{trace_id}"
|
|
25
|
+
attributes << "#{Ext::Correlation::ATTR_SPAN_ID}=#{span_id}"
|
|
26
|
+
attributes.join(' ')
|
|
24
27
|
end
|
|
25
28
|
end.freeze
|
|
26
29
|
|
|
@@ -19,6 +19,8 @@ module Datadog
|
|
|
19
19
|
count :queue_accepted_lengths, Ext::Diagnostics::Health::Metrics::METRIC_QUEUE_ACCEPTED_LENGTHS
|
|
20
20
|
count :queue_dropped, Ext::Diagnostics::Health::Metrics::METRIC_QUEUE_DROPPED
|
|
21
21
|
count :traces_filtered, Ext::Diagnostics::Health::Metrics::METRIC_TRACES_FILTERED
|
|
22
|
+
count :transport_trace_too_large, Ext::Diagnostics::Health::Metrics::METRIC_TRANSPORT_TRACE_TOO_LARGE
|
|
23
|
+
count :transport_chunked, Ext::Diagnostics::Health::Metrics::METRIC_TRANSPORT_CHUNKED
|
|
22
24
|
count :writer_cpu_time, Ext::Diagnostics::Health::Metrics::METRIC_WRITER_CPU_TIME
|
|
23
25
|
|
|
24
26
|
gauge :queue_length, Ext::Diagnostics::Health::Metrics::METRIC_QUEUE_LENGTH
|
|
@@ -26,12 +28,6 @@ module Datadog
|
|
|
26
28
|
gauge :queue_spans, Ext::Diagnostics::Health::Metrics::METRIC_QUEUE_SPANS
|
|
27
29
|
gauge :sampling_service_cache_length, Ext::Diagnostics::Health::Metrics::METRIC_SAMPLING_SERVICE_CACHE_LENGTH
|
|
28
30
|
end
|
|
29
|
-
|
|
30
|
-
module_function
|
|
31
|
-
|
|
32
|
-
def metrics
|
|
33
|
-
Datadog.configuration.diagnostics.health_metrics
|
|
34
|
-
end
|
|
35
31
|
end
|
|
36
32
|
end
|
|
37
33
|
end
|
data/lib/ddtrace/encoding.rb
CHANGED
|
@@ -10,19 +10,12 @@ module Datadog
|
|
|
10
10
|
raise NotImplementedError
|
|
11
11
|
end
|
|
12
12
|
|
|
13
|
-
#
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
def encode_traces(traces)
|
|
17
|
-
to_send = []
|
|
18
|
-
traces.each do |trace|
|
|
19
|
-
to_send << trace.map(&:to_hash)
|
|
20
|
-
end
|
|
21
|
-
encode(to_send)
|
|
13
|
+
# Concatenates a list of elements previously encoded by +#encode+.
|
|
14
|
+
def join(encoded_elements)
|
|
15
|
+
raise NotImplementedError
|
|
22
16
|
end
|
|
23
17
|
|
|
24
|
-
#
|
|
25
|
-
# This method must be implemented and should only be used by the internal functions.
|
|
18
|
+
# Serializes a single trace into a String suitable for network transmission.
|
|
26
19
|
def encode(_)
|
|
27
20
|
raise NotImplementedError
|
|
28
21
|
end
|
|
@@ -44,34 +37,8 @@ module Datadog
|
|
|
44
37
|
JSON.dump(obj)
|
|
45
38
|
end
|
|
46
39
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
extend JSONEncoder
|
|
50
|
-
|
|
51
|
-
ENCODED_IDS = [
|
|
52
|
-
:trace_id,
|
|
53
|
-
:span_id,
|
|
54
|
-
:parent_id
|
|
55
|
-
].freeze
|
|
56
|
-
|
|
57
|
-
module_function
|
|
58
|
-
|
|
59
|
-
def encode_traces(traces)
|
|
60
|
-
trace_hashes = traces.collect do |trace|
|
|
61
|
-
# Convert each trace to hash
|
|
62
|
-
trace.map(&:to_hash).tap do |spans|
|
|
63
|
-
# Convert IDs to hexadecimal
|
|
64
|
-
spans.each do |span|
|
|
65
|
-
ENCODED_IDS.each do |id|
|
|
66
|
-
span[id] = span[id].to_s(16) if span.key?(id)
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
# Wrap traces & encode them
|
|
73
|
-
encode(traces: trace_hashes)
|
|
74
|
-
end
|
|
40
|
+
def join(encoded_data)
|
|
41
|
+
"[#{encoded_data.join(',')}]"
|
|
75
42
|
end
|
|
76
43
|
end
|
|
77
44
|
|
|
@@ -90,6 +57,13 @@ module Datadog
|
|
|
90
57
|
def encode(obj)
|
|
91
58
|
MessagePack.pack(obj)
|
|
92
59
|
end
|
|
60
|
+
|
|
61
|
+
def join(encoded_data)
|
|
62
|
+
packer = MessagePack::Packer.new
|
|
63
|
+
packer.write_array_header(encoded_data.size)
|
|
64
|
+
|
|
65
|
+
(packer.buffer.to_a + encoded_data).join
|
|
66
|
+
end
|
|
93
67
|
end
|
|
94
68
|
end
|
|
95
69
|
end
|
data/lib/ddtrace/event.rb
CHANGED
|
@@ -41,7 +41,7 @@ module Datadog
|
|
|
41
41
|
begin
|
|
42
42
|
block.call(*args)
|
|
43
43
|
rescue StandardError => e
|
|
44
|
-
Datadog
|
|
44
|
+
Datadog.logger.debug("Error while handling '#{key}' for '#{name}' event: #{e.message}")
|
|
45
45
|
end
|
|
46
46
|
end
|
|
47
47
|
|
|
@@ -23,6 +23,8 @@ module Datadog
|
|
|
23
23
|
METRIC_QUEUE_SPANS = 'datadog.tracer.queue.spans'.freeze
|
|
24
24
|
METRIC_SAMPLING_SERVICE_CACHE_LENGTH = 'datadog.tracer.sampling.service_cache_length'.freeze
|
|
25
25
|
METRIC_TRACES_FILTERED = 'datadog.tracer.traces.filtered'.freeze
|
|
26
|
+
METRIC_TRANSPORT_CHUNKED = 'datadog.tracer.transport.chunked'.freeze
|
|
27
|
+
METRIC_TRANSPORT_TRACE_TOO_LARGE = 'datadog.tracer.transport.trace_too_large'.freeze
|
|
26
28
|
METRIC_WRITER_CPU_TIME = 'datadog.tracer.writer.cpu_time'.freeze
|
|
27
29
|
end
|
|
28
30
|
end
|
|
@@ -12,7 +12,7 @@ module Datadog
|
|
|
12
12
|
|
|
13
13
|
# Only log each deprecation warning once (safeguard against log spam)
|
|
14
14
|
unless @deprecation_warning_shown
|
|
15
|
-
Datadog
|
|
15
|
+
Datadog.logger.warn(
|
|
16
16
|
'forced tracing: Datadog::Ext::ForcedTracing has been renamed to Datadog::Ext::ManualTracing'
|
|
17
17
|
)
|
|
18
18
|
@deprecation_warning_shown = true
|
data/lib/ddtrace/logger.rb
CHANGED
|
@@ -1,57 +1,16 @@
|
|
|
1
1
|
require 'logger'
|
|
2
2
|
|
|
3
3
|
module Datadog
|
|
4
|
-
LOG_PREFIX = 'ddtrace'.freeze
|
|
5
|
-
|
|
6
4
|
# A custom logger with minor enhancements:
|
|
7
5
|
# - progname defaults to ddtrace to clearly identify Datadog dd-trace-rb related messages
|
|
8
6
|
# - adds last caller stack-trace info to know where the message comes from
|
|
9
7
|
class Logger < ::Logger
|
|
10
|
-
|
|
11
|
-
# namespace. This logger outputs to +STDOUT+ by default, and is considered thread-safe.
|
|
12
|
-
class << self
|
|
13
|
-
def log
|
|
14
|
-
unless defined? @logger
|
|
15
|
-
@logger = Datadog::Logger.new(STDOUT)
|
|
16
|
-
@logger.level = Logger::WARN
|
|
17
|
-
end
|
|
18
|
-
@logger
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
# Override the default logger with a custom one.
|
|
22
|
-
def log=(logger)
|
|
23
|
-
return unless logger
|
|
24
|
-
return unless logger.respond_to? :methods
|
|
25
|
-
return unless logger.respond_to? :error
|
|
26
|
-
if logger.respond_to? :methods
|
|
27
|
-
unimplemented = new(STDOUT).methods - logger.methods
|
|
28
|
-
unless unimplemented.empty?
|
|
29
|
-
logger.error("logger #{logger} does not implement #{unimplemented}")
|
|
30
|
-
return
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
@logger = logger
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
# Activate the debug mode providing more information related to tracer usage
|
|
37
|
-
# Default to Warn level unless using custom logger
|
|
38
|
-
def debug_logging=(value)
|
|
39
|
-
if value
|
|
40
|
-
log.level = Logger::DEBUG
|
|
41
|
-
elsif log.is_a?(Datadog::Logger)
|
|
42
|
-
log.level = Logger::WARN
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
# Return if the debug mode is activated or not
|
|
47
|
-
def debug_logging
|
|
48
|
-
log.level == Logger::DEBUG
|
|
49
|
-
end
|
|
50
|
-
end
|
|
8
|
+
PREFIX = 'ddtrace'.freeze
|
|
51
9
|
|
|
52
10
|
def initialize(*args, &block)
|
|
53
11
|
super
|
|
54
|
-
self.progname =
|
|
12
|
+
self.progname = PREFIX
|
|
13
|
+
self.level = ::Logger::WARN
|
|
55
14
|
end
|
|
56
15
|
|
|
57
16
|
def add(severity, message = nil, progname = nil, &block)
|
data/lib/ddtrace/metrics.rb
CHANGED
|
@@ -63,7 +63,7 @@ module Datadog
|
|
|
63
63
|
|
|
64
64
|
statsd.count(stat, value, metric_options(options))
|
|
65
65
|
rescue StandardError => e
|
|
66
|
-
Datadog
|
|
66
|
+
Datadog.logger.error("Failed to send count stat. Cause: #{e.message} Source: #{e.backtrace.first}")
|
|
67
67
|
end
|
|
68
68
|
|
|
69
69
|
def distribution(stat, value = nil, options = nil, &block)
|
|
@@ -73,7 +73,7 @@ module Datadog
|
|
|
73
73
|
|
|
74
74
|
statsd.distribution(stat, value, metric_options(options))
|
|
75
75
|
rescue StandardError => e
|
|
76
|
-
Datadog
|
|
76
|
+
Datadog.logger.error("Failed to send distribution stat. Cause: #{e.message} Source: #{e.backtrace.first}")
|
|
77
77
|
end
|
|
78
78
|
|
|
79
79
|
def increment(stat, options = nil)
|
|
@@ -82,7 +82,7 @@ module Datadog
|
|
|
82
82
|
|
|
83
83
|
statsd.increment(stat, metric_options(options))
|
|
84
84
|
rescue StandardError => e
|
|
85
|
-
Datadog
|
|
85
|
+
Datadog.logger.error("Failed to send increment stat. Cause: #{e.message} Source: #{e.backtrace.first}")
|
|
86
86
|
end
|
|
87
87
|
|
|
88
88
|
def gauge(stat, value = nil, options = nil, &block)
|
|
@@ -92,7 +92,7 @@ module Datadog
|
|
|
92
92
|
|
|
93
93
|
statsd.gauge(stat, value, metric_options(options))
|
|
94
94
|
rescue StandardError => e
|
|
95
|
-
Datadog
|
|
95
|
+
Datadog.logger.error("Failed to send gauge stat. Cause: #{e.message} Source: #{e.backtrace.first}")
|
|
96
96
|
end
|
|
97
97
|
|
|
98
98
|
def time(stat, options = nil)
|
|
@@ -108,7 +108,7 @@ module Datadog
|
|
|
108
108
|
distribution(stat, ((finished - start) * 1000), options)
|
|
109
109
|
end
|
|
110
110
|
rescue StandardError => e
|
|
111
|
-
Datadog
|
|
111
|
+
Datadog.logger.error("Failed to send time stat. Cause: #{e.message} Source: #{e.backtrace.first}")
|
|
112
112
|
end
|
|
113
113
|
end
|
|
114
114
|
|
data/lib/ddtrace/monkey.rb
CHANGED
data/lib/ddtrace/pin.rb
CHANGED
|
@@ -12,26 +12,34 @@ module Datadog
|
|
|
12
12
|
obj.datadog_pin
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
attr_reader :service_name
|
|
16
15
|
attr_accessor :app
|
|
17
|
-
attr_accessor :tags
|
|
18
16
|
attr_accessor :app_type
|
|
19
|
-
attr_accessor :name
|
|
20
|
-
attr_accessor :tracer
|
|
21
17
|
attr_accessor :config
|
|
18
|
+
attr_accessor :name
|
|
19
|
+
attr_accessor :service_name
|
|
20
|
+
attr_accessor :tags
|
|
21
|
+
attr_writer :tracer
|
|
22
|
+
attr_accessor :writer
|
|
23
|
+
|
|
24
|
+
alias service= service_name=
|
|
25
|
+
alias service service_name
|
|
22
26
|
|
|
23
27
|
def initialize(service_name, options = {})
|
|
24
28
|
@app = options[:app]
|
|
25
|
-
@tags = options[:tags]
|
|
26
29
|
@app_type = options[:app_type]
|
|
27
|
-
@name = nil # this would rarely be overriden as it's really span-specific
|
|
28
|
-
@tracer = options[:tracer] || Datadog.tracer
|
|
29
30
|
@config = options[:config]
|
|
30
|
-
|
|
31
|
+
@name = nil # this would rarely be overriden as it's really span-specific
|
|
32
|
+
@service_name = service_name
|
|
33
|
+
@tags = options[:tags]
|
|
34
|
+
@tracer = options[:tracer]
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def tracer
|
|
38
|
+
@tracer || Datadog.tracer
|
|
31
39
|
end
|
|
32
40
|
|
|
33
41
|
def enabled?
|
|
34
|
-
return
|
|
42
|
+
return tracer.enabled if tracer
|
|
35
43
|
false
|
|
36
44
|
end
|
|
37
45
|
|
|
@@ -56,13 +64,6 @@ module Datadog
|
|
|
56
64
|
obj.datadog_pin = self
|
|
57
65
|
end
|
|
58
66
|
|
|
59
|
-
def service_name=(name)
|
|
60
|
-
@service_name = name
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
alias service= service_name=
|
|
64
|
-
alias service service_name
|
|
65
|
-
|
|
66
67
|
def to_s
|
|
67
68
|
"Pin(service:#{service},app:#{app},app_type:#{app_type},name:#{name})"
|
|
68
69
|
end
|
|
@@ -107,7 +108,7 @@ module Datadog
|
|
|
107
108
|
def log_deprecation_warning(method_name)
|
|
108
109
|
# Only log each deprecation warning once (safeguard against log spam)
|
|
109
110
|
do_once(method_name) do
|
|
110
|
-
Datadog
|
|
111
|
+
Datadog.logger.warn("#{method_name}:#{DEPRECATION_WARNING}")
|
|
111
112
|
end
|
|
112
113
|
end
|
|
113
114
|
end
|
data/lib/ddtrace/pipeline.rb
CHANGED
|
@@ -19,7 +19,7 @@ module Datadog
|
|
|
19
19
|
def self.inject!(context, env)
|
|
20
20
|
# Prevent propagation from being attempted if context provided is nil.
|
|
21
21
|
if context.nil?
|
|
22
|
-
::Datadog
|
|
22
|
+
::Datadog.logger.debug('Cannot inject context into env to propagate over HTTP: context is nil.'.freeze)
|
|
23
23
|
return
|
|
24
24
|
end
|
|
25
25
|
|
|
@@ -58,7 +58,7 @@ module Datadog
|
|
|
58
58
|
# Return an empty/new context if we have a mismatch in values extracted
|
|
59
59
|
msg = "#{context.trace_id} != #{extracted_context.trace_id} && " \
|
|
60
60
|
"#{context.span_id} != #{extracted_context.span_id}"
|
|
61
|
-
::Datadog
|
|
61
|
+
::Datadog.logger.debug("Cannot extract context from HTTP: extracted contexts differ, #{msg}".freeze)
|
|
62
62
|
# DEV: This will return from `self.extract` not this `each` block
|
|
63
63
|
return ::Datadog::Context.new
|
|
64
64
|
end
|
|
@@ -27,7 +27,7 @@ module Datadog
|
|
|
27
27
|
end
|
|
28
28
|
end
|
|
29
29
|
rescue StandardError => e
|
|
30
|
-
Datadog
|
|
30
|
+
Datadog.logger.error("Error while parsing cgroup. Cause: #{e.message} Location: #{e.backtrace.first}")
|
|
31
31
|
end
|
|
32
32
|
end
|
|
33
33
|
end
|