datadog 2.34.0 → 2.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 +4 -4
- data/CHANGELOG.md +114 -6
- data/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +68 -31
- data/ext/datadog_profiling_native_extension/collectors_discrete_dynamic_sampler.c +1 -1
- data/ext/datadog_profiling_native_extension/collectors_idle_sampling_helper.c +1 -1
- data/ext/datadog_profiling_native_extension/collectors_stack.c +37 -18
- data/ext/datadog_profiling_native_extension/collectors_stack.h +8 -2
- data/ext/datadog_profiling_native_extension/collectors_thread_context.c +435 -314
- data/ext/datadog_profiling_native_extension/collectors_thread_context.h +9 -7
- data/ext/datadog_profiling_native_extension/datadog_ruby_common.c +7 -8
- data/ext/datadog_profiling_native_extension/datadog_ruby_common.h +0 -12
- data/ext/datadog_profiling_native_extension/extconf.rb +2 -2
- data/ext/datadog_profiling_native_extension/gvl_profiling_helper.c +4 -43
- data/ext/datadog_profiling_native_extension/gvl_profiling_helper.h +15 -47
- data/ext/datadog_profiling_native_extension/heap_recorder.c +44 -26
- data/ext/datadog_profiling_native_extension/private_vm_api_access.c +14 -35
- data/ext/datadog_profiling_native_extension/profiling.c +41 -4
- data/ext/datadog_profiling_native_extension/ruby_helpers.c +33 -34
- data/ext/datadog_profiling_native_extension/stack_recorder.c +30 -14
- data/ext/datadog_profiling_native_extension/stack_recorder.h +1 -0
- data/ext/datadog_profiling_native_extension/unsafe_api_calls_check.h +4 -2
- data/ext/libdatadog_api/datadog_ruby_common.c +7 -8
- data/ext/libdatadog_api/datadog_ruby_common.h +0 -12
- data/ext/libdatadog_extconf_helpers.rb +1 -1
- data/lib/datadog/ai_guard/configuration.rb +1 -0
- data/lib/datadog/ai_guard/contrib/rack/request_middleware.rb +53 -39
- data/lib/datadog/ai_guard/evaluation.rb +6 -1
- data/lib/datadog/ai_guard/ext.rb +12 -1
- data/lib/datadog/appsec/api_security/route_extractor.rb +9 -0
- data/lib/datadog/appsec/component.rb +1 -1
- data/lib/datadog/appsec/configuration.rb +7 -0
- data/lib/datadog/appsec/contrib/aws_lambda/waf_addresses.rb +37 -4
- data/lib/datadog/appsec/contrib/graphql/gateway/multiplex.rb +64 -19
- data/lib/datadog/appsec/contrib/graphql/integration.rb +1 -0
- data/lib/datadog/appsec/contrib/rack/buffered_input.rb +83 -0
- data/lib/datadog/appsec/contrib/rack/gateway/request.rb +41 -3
- data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +20 -7
- data/lib/datadog/appsec/contrib/rack/input_peeker.rb +92 -0
- data/lib/datadog/appsec/contrib/rack/request_middleware.rb +9 -40
- data/lib/datadog/appsec/contrib/rails/gateway/request.rb +33 -0
- data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +17 -1
- data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +20 -3
- data/lib/datadog/appsec/default_header_tags.rb +52 -0
- data/lib/datadog/core/configuration/components.rb +1 -0
- data/lib/datadog/core/configuration/settings.rb +11 -8
- data/lib/datadog/core/configuration/supported_configurations.rb +2 -0
- data/lib/datadog/core/environment/process.rb +4 -2
- data/lib/datadog/core/remote/component.rb +1 -1
- data/lib/datadog/core/telemetry/event/app_started.rb +0 -21
- data/lib/datadog/core/utils/at_fork_monkey_patch.rb +1 -1
- data/lib/datadog/core/utils/{array.rb → enumerable_compat.rb} +2 -2
- data/lib/datadog/core/utils/forking.rb +3 -1
- data/lib/datadog/core/utils/spawn_monkey_patch.rb +3 -1
- data/lib/datadog/core.rb +3 -0
- data/lib/datadog/di/base.rb +4 -1
- data/lib/datadog/di/component.rb +1 -1
- data/lib/datadog/error_tracking/collector.rb +2 -1
- data/lib/datadog/error_tracking/component.rb +2 -2
- data/lib/datadog/kit/tracing/method_tracer.rb +4 -1
- data/lib/datadog/opentelemetry/sdk/propagator.rb +9 -3
- data/lib/datadog/opentelemetry/sdk/span_processor.rb +4 -1
- data/lib/datadog/profiling/collectors/thread_context.rb +1 -4
- data/lib/datadog/profiling/component.rb +15 -25
- data/lib/datadog/profiling/ext/dir_monkey_patches.rb +6 -5
- data/lib/datadog/profiling/stack_recorder.rb +0 -4
- data/lib/datadog/ruby_version.rb +25 -0
- data/lib/datadog/symbol_database/component.rb +306 -98
- data/lib/datadog/symbol_database/extractor.rb +226 -87
- data/lib/datadog/tracing/configuration/ext.rb +13 -0
- data/lib/datadog/tracing/configuration/settings.rb +17 -0
- data/lib/datadog/tracing/contrib/action_cable/events/broadcast.rb +4 -1
- data/lib/datadog/tracing/contrib/action_cable/events/perform_action.rb +4 -1
- data/lib/datadog/tracing/contrib/action_cable/events/transmit.rb +4 -1
- data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +4 -1
- data/lib/datadog/tracing/contrib/action_mailer/event.rb +4 -1
- data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +1 -0
- data/lib/datadog/tracing/contrib/action_view/events/render_partial.rb +4 -1
- data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +4 -1
- data/lib/datadog/tracing/contrib/active_job/events/discard.rb +4 -1
- data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +4 -1
- data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +4 -1
- data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +4 -1
- data/lib/datadog/tracing/contrib/active_job/events/perform.rb +4 -1
- data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +4 -1
- data/lib/datadog/tracing/contrib/active_record/events/sql.rb +1 -0
- data/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb +1 -0
- data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +1 -0
- data/lib/datadog/tracing/contrib/aws/instrumentation.rb +1 -0
- data/lib/datadog/tracing/contrib/configuration/resolver.rb +7 -0
- data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +1 -0
- data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +2 -0
- data/lib/datadog/tracing/contrib/delayed_job/server_internal_tracer/worker.rb +1 -0
- data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +2 -2
- data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +1 -0
- data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +1 -0
- data/lib/datadog/tracing/contrib/excon/middleware.rb +1 -0
- data/lib/datadog/tracing/contrib/ext.rb +3 -0
- data/lib/datadog/tracing/contrib/faraday/middleware.rb +1 -0
- data/lib/datadog/tracing/contrib/grape/endpoint.rb +3 -0
- data/lib/datadog/tracing/contrib/graphql/unified_trace.rb +1 -0
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +1 -0
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +1 -0
- data/lib/datadog/tracing/contrib/grpc/distributed/propagation.rb +2 -0
- data/lib/datadog/tracing/contrib/grpc.rb +1 -0
- data/lib/datadog/tracing/contrib/hanami/action_tracer.rb +1 -0
- data/lib/datadog/tracing/contrib/hanami/renderer_policy_tracing.rb +1 -0
- data/lib/datadog/tracing/contrib/hanami/router_tracing.rb +1 -0
- data/lib/datadog/tracing/contrib/http/distributed/propagation.rb +2 -0
- data/lib/datadog/tracing/contrib/http/instrumentation.rb +1 -0
- data/lib/datadog/tracing/contrib/http.rb +1 -0
- data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +1 -0
- data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +1 -0
- data/lib/datadog/tracing/contrib/kafka/event.rb +1 -0
- data/lib/datadog/tracing/contrib/karafka/distributed/propagation.rb +2 -0
- data/lib/datadog/tracing/contrib/karafka.rb +1 -0
- data/lib/datadog/tracing/contrib/mongodb/parsers.rb +5 -5
- data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +2 -0
- data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +1 -0
- data/lib/datadog/tracing/contrib/opensearch/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/opensearch/quantize.rb +2 -2
- data/lib/datadog/tracing/contrib/pg/instrumentation.rb +1 -0
- data/lib/datadog/tracing/contrib/presto/instrumentation.rb +3 -0
- data/lib/datadog/tracing/contrib/propagation/sql_comment/ext.rb +3 -0
- data/lib/datadog/tracing/contrib/propagation/sql_comment/mode.rb +2 -2
- data/lib/datadog/tracing/contrib/que/tracer.rb +1 -0
- data/lib/datadog/tracing/contrib/racecar/event.rb +1 -0
- data/lib/datadog/tracing/contrib/rack/header_tagging.rb +23 -0
- data/lib/datadog/tracing/contrib/rack/middlewares.rb +4 -1
- data/lib/datadog/tracing/contrib/rack/route_inference.rb +3 -1
- data/lib/datadog/tracing/contrib/rack/trace_proxy_middleware.rb +2 -0
- data/lib/datadog/tracing/contrib/rails/runner.rb +2 -0
- data/lib/datadog/tracing/contrib/rake/instrumentation.rb +4 -2
- data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +2 -0
- data/lib/datadog/tracing/contrib/resque/resque_job.rb +1 -0
- data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +1 -0
- data/lib/datadog/tracing/contrib/roda/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/roda/instrumentation.rb +4 -1
- data/lib/datadog/tracing/contrib/sequel/database.rb +1 -0
- data/lib/datadog/tracing/contrib/sequel/dataset.rb +1 -0
- data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +1 -0
- data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +1 -0
- data/lib/datadog/tracing/contrib/sidekiq/distributed/propagation.rb +2 -0
- data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/heartbeat.rb +2 -0
- data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/job_fetch.rb +1 -0
- data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/redis_info.rb +1 -0
- data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/scheduled_poller.rb +2 -0
- data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/stop.rb +1 -0
- data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +3 -2
- data/lib/datadog/tracing/contrib/sidekiq.rb +1 -0
- data/lib/datadog/tracing/contrib/sinatra/tracer.rb +1 -0
- data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +1 -0
- data/lib/datadog/tracing/contrib/sneakers/tracer.rb +1 -0
- data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +1 -0
- data/lib/datadog/tracing/contrib/trilogy/instrumentation.rb +1 -0
- data/lib/datadog/tracing/contrib/utils/quantization/{hash.rb → hash_formatter.rb} +1 -1
- data/lib/datadog/tracing/contrib/waterdrop/distributed/propagation.rb +2 -0
- data/lib/datadog/tracing/contrib/waterdrop.rb +1 -0
- data/lib/datadog/tracing/distributed/propagation.rb +33 -1
- data/lib/datadog/tracing/distributed/trace_context.rb +11 -2
- data/lib/datadog/tracing/metadata/ext.rb +7 -0
- data/lib/datadog/tracing/trace_digest.rb +7 -0
- data/lib/datadog/tracing/trace_operation.rb +4 -1
- data/lib/datadog/tracing/tracer.rb +4 -0
- data/lib/datadog/tracing/transport/traces.rb +2 -2
- data/lib/datadog/version.rb +1 -1
- data/lib/datadog.rb +4 -1
- metadata +13 -11
|
@@ -53,6 +53,7 @@ module Datadog
|
|
|
53
53
|
name,
|
|
54
54
|
service: Datadog.configuration.tracing[:rails][:service_name],
|
|
55
55
|
tags: {
|
|
56
|
+
Tracing::Metadata::Ext::TAG_SVC_SRC => Ext::TAG_COMPONENT,
|
|
56
57
|
Tracing::Metadata::Ext::TAG_COMPONENT => Ext::TAG_COMPONENT,
|
|
57
58
|
Tracing::Metadata::Ext::TAG_OPERATION => operation,
|
|
58
59
|
}
|
|
@@ -94,6 +95,7 @@ module Datadog
|
|
|
94
95
|
service: Datadog.configuration.tracing[:rails][:service_name],
|
|
95
96
|
resource: resource,
|
|
96
97
|
tags: {
|
|
98
|
+
Tracing::Metadata::Ext::TAG_SVC_SRC => Ext::TAG_COMPONENT,
|
|
97
99
|
Tracing::Metadata::Ext::TAG_COMPONENT => Ext::TAG_COMPONENT,
|
|
98
100
|
Tracing::Metadata::Ext::TAG_OPERATION => operation,
|
|
99
101
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
require_relative '../../metadata/ext'
|
|
4
4
|
require_relative '../analytics'
|
|
5
5
|
require_relative 'ext'
|
|
6
|
-
require_relative '../utils/quantization/
|
|
6
|
+
require_relative '../utils/quantization/hash_formatter'
|
|
7
7
|
|
|
8
8
|
module Datadog
|
|
9
9
|
module Tracing
|
|
@@ -53,6 +53,7 @@ module Datadog
|
|
|
53
53
|
|
|
54
54
|
def annotate_invoke!(span, args)
|
|
55
55
|
span.resource = name
|
|
56
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
56
57
|
# Set analytics sample rate
|
|
57
58
|
if Contrib::Analytics.enabled?(configuration[:analytics_enabled])
|
|
58
59
|
Contrib::Analytics.set_sample_rate(span, configuration[:analytics_sample_rate])
|
|
@@ -71,6 +72,7 @@ module Datadog
|
|
|
71
72
|
|
|
72
73
|
def annotate_execute!(span, args)
|
|
73
74
|
span.resource = name
|
|
75
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
74
76
|
span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
|
|
75
77
|
span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_EXECUTE)
|
|
76
78
|
span.set_tag(Ext::TAG_EXECUTE_ARGS, quantize_args(args.to_hash)) unless args.nil?
|
|
@@ -80,7 +82,7 @@ module Datadog
|
|
|
80
82
|
|
|
81
83
|
def quantize_args(args)
|
|
82
84
|
quantize_options = configuration[:quantize][:args]
|
|
83
|
-
Contrib::Utils::Quantization::
|
|
85
|
+
Contrib::Utils::Quantization::HashFormatter.format(args, quantize_options)
|
|
84
86
|
end
|
|
85
87
|
|
|
86
88
|
def enabled?
|
|
@@ -26,6 +26,7 @@ module Datadog
|
|
|
26
26
|
class << self
|
|
27
27
|
def call(client, command, service_name, command_args)
|
|
28
28
|
Tracing.trace(Redis::Ext::SPAN_COMMAND, type: Redis::Ext::TYPE, service: service_name) do |span|
|
|
29
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Redis::Ext::TAG_COMPONENT)
|
|
29
30
|
raw_command = get_command(command, true)
|
|
30
31
|
span.resource = command_args ? raw_command : get_command(command, false)
|
|
31
32
|
|
|
@@ -37,6 +38,7 @@ module Datadog
|
|
|
37
38
|
|
|
38
39
|
def call_pipelined(client, commands, service_name, command_args)
|
|
39
40
|
Tracing.trace(Redis::Ext::SPAN_COMMAND, type: Redis::Ext::TYPE, service: service_name) do |span|
|
|
41
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Redis::Ext::TAG_COMPONENT)
|
|
40
42
|
raw_command = get_pipeline_commands(commands, true)
|
|
41
43
|
span.resource = command_args ? raw_command : get_pipeline_commands(commands, false)
|
|
42
44
|
|
|
@@ -35,6 +35,7 @@ module Datadog
|
|
|
35
35
|
return yield unless datadog_configuration && Tracing.enabled?
|
|
36
36
|
|
|
37
37
|
Tracing.trace(Ext::SPAN_JOB, **span_options) do |span|
|
|
38
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
38
39
|
span.resource = args.first.is_a?(Hash) && args.first['job_class'] || name
|
|
39
40
|
span.type = Tracing::Metadata::Ext::AppTypes::TYPE_WORKER
|
|
40
41
|
|
|
@@ -25,7 +25,10 @@ module Datadog
|
|
|
25
25
|
begin
|
|
26
26
|
request_method = request.request_method.to_s.upcase
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
if configuration[:service_name]
|
|
29
|
+
span.service = configuration[:service_name]
|
|
30
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
31
|
+
end
|
|
29
32
|
|
|
30
33
|
span.type = Tracing::Metadata::Ext::HTTP::TYPE_INBOUND
|
|
31
34
|
|
|
@@ -20,6 +20,7 @@ module Datadog
|
|
|
20
20
|
type: Tracing::Metadata::Ext::AppTypes::TYPE_WORKER,
|
|
21
21
|
on_error: @on_error
|
|
22
22
|
) do |span|
|
|
23
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
23
24
|
span.set_tag(Contrib::Ext::Messaging::TAG_SYSTEM, Ext::TAG_MESSAGING_SYSTEM)
|
|
24
25
|
|
|
25
26
|
span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
|
|
@@ -24,6 +24,7 @@ module Datadog
|
|
|
24
24
|
resource = job_resource(job)
|
|
25
25
|
|
|
26
26
|
Datadog::Tracing.trace(Ext::SPAN_PUSH, service: @sidekiq_service) do |span, trace_op|
|
|
27
|
+
span.set_tag(Datadog::Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
27
28
|
if Tracing::Distributed::PropagationPolicy.enabled?(
|
|
28
29
|
global_config: configuration,
|
|
29
30
|
trace: trace_op
|
|
@@ -20,6 +20,7 @@ module Datadog
|
|
|
20
20
|
def initialize(
|
|
21
21
|
propagation_style_inject:,
|
|
22
22
|
propagation_style_extract:,
|
|
23
|
+
propagation_behavior_extract:,
|
|
23
24
|
propagation_extract_first:
|
|
24
25
|
)
|
|
25
26
|
super(
|
|
@@ -38,6 +39,7 @@ module Datadog
|
|
|
38
39
|
},
|
|
39
40
|
propagation_style_inject: propagation_style_inject,
|
|
40
41
|
propagation_style_extract: propagation_style_extract,
|
|
42
|
+
propagation_behavior_extract: propagation_behavior_extract,
|
|
41
43
|
propagation_extract_first: propagation_extract_first
|
|
42
44
|
)
|
|
43
45
|
end
|
|
@@ -13,6 +13,7 @@ module Datadog
|
|
|
13
13
|
configuration = Datadog.configuration.tracing[:sidekiq]
|
|
14
14
|
|
|
15
15
|
Datadog::Tracing.trace(Ext::SPAN_HEARTBEAT, service: configuration[:service_name]) do |span|
|
|
16
|
+
span.set_tag(Datadog::Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
16
17
|
span.type = Datadog::Tracing::Metadata::Ext::AppTypes::TYPE_WORKER
|
|
17
18
|
|
|
18
19
|
span.set_tag(Contrib::Ext::Messaging::TAG_SYSTEM, Ext::TAG_COMPONENT)
|
|
@@ -38,6 +39,7 @@ module Datadog
|
|
|
38
39
|
configuration = Datadog.configuration.tracing[:sidekiq]
|
|
39
40
|
|
|
40
41
|
Datadog::Tracing.trace(Ext::SPAN_HEARTBEAT, service: configuration[:service_name]) do |span|
|
|
42
|
+
span.set_tag(Datadog::Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
41
43
|
span.type = Datadog::Tracing::Metadata::Ext::AppTypes::TYPE_WORKER
|
|
42
44
|
|
|
43
45
|
span.set_tag(Contrib::Ext::Messaging::TAG_SYSTEM, Ext::TAG_COMPONENT)
|
|
@@ -13,6 +13,7 @@ module Datadog
|
|
|
13
13
|
configuration = Datadog.configuration.tracing[:sidekiq]
|
|
14
14
|
|
|
15
15
|
Datadog::Tracing.trace(Ext::SPAN_JOB_FETCH, service: configuration[:service_name]) do |span|
|
|
16
|
+
span.set_tag(Datadog::Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
16
17
|
span.type = Datadog::Tracing::Metadata::Ext::AppTypes::TYPE_WORKER
|
|
17
18
|
|
|
18
19
|
span.set_tag(Contrib::Ext::Messaging::TAG_SYSTEM, Ext::TAG_COMPONENT)
|
|
@@ -11,6 +11,7 @@ module Datadog
|
|
|
11
11
|
configuration = Datadog.configuration.tracing[:sidekiq]
|
|
12
12
|
|
|
13
13
|
Datadog::Tracing.trace(Ext::SPAN_REDIS_INFO, service: configuration[:service_name]) do |span|
|
|
14
|
+
span.set_tag(Datadog::Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
14
15
|
span.type = Datadog::Tracing::Metadata::Ext::AppTypes::TYPE_WORKER
|
|
15
16
|
|
|
16
17
|
span.set_tag(Contrib::Ext::Messaging::TAG_SYSTEM, Ext::TAG_COMPONENT)
|
|
@@ -12,6 +12,7 @@ module Datadog
|
|
|
12
12
|
configuration = Datadog.configuration.tracing[:sidekiq]
|
|
13
13
|
|
|
14
14
|
Datadog::Tracing.trace(Ext::SPAN_SCHEDULED_PUSH, service: configuration[:service_name]) do |span|
|
|
15
|
+
span.set_tag(Datadog::Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
15
16
|
span.type = Datadog::Tracing::Metadata::Ext::AppTypes::TYPE_WORKER
|
|
16
17
|
|
|
17
18
|
span.set_tag(Contrib::Ext::Messaging::TAG_SYSTEM, Ext::TAG_COMPONENT)
|
|
@@ -34,6 +35,7 @@ module Datadog
|
|
|
34
35
|
configuration = Datadog.configuration.tracing[:sidekiq]
|
|
35
36
|
|
|
36
37
|
Datadog::Tracing.trace(Ext::SPAN_SCHEDULED_WAIT, service: configuration[:service_name]) do |span|
|
|
38
|
+
span.set_tag(Datadog::Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
37
39
|
span.type = Datadog::Tracing::Metadata::Ext::AppTypes::TYPE_WORKER
|
|
38
40
|
|
|
39
41
|
span.set_tag(Contrib::Ext::Messaging::TAG_SYSTEM, Ext::TAG_COMPONENT)
|
|
@@ -11,6 +11,7 @@ module Datadog
|
|
|
11
11
|
configuration = Datadog.configuration.tracing[:sidekiq]
|
|
12
12
|
|
|
13
13
|
Datadog::Tracing.trace(Ext::SPAN_STOP, service: configuration[:service_name]) do |span|
|
|
14
|
+
span.set_tag(Datadog::Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
14
15
|
span.type = Datadog::Tracing::Metadata::Ext::AppTypes::TYPE_WORKER
|
|
15
16
|
|
|
16
17
|
span.set_tag(Contrib::Ext::Messaging::TAG_SYSTEM, Ext::TAG_COMPONENT)
|
|
@@ -4,7 +4,7 @@ require_relative '../../metadata/ext'
|
|
|
4
4
|
require_relative '../analytics'
|
|
5
5
|
require_relative 'ext'
|
|
6
6
|
require_relative 'utils'
|
|
7
|
-
require_relative '../utils/quantization/
|
|
7
|
+
require_relative '../utils/quantization/hash_formatter'
|
|
8
8
|
require_relative 'distributed/propagation'
|
|
9
9
|
|
|
10
10
|
module Datadog
|
|
@@ -36,6 +36,7 @@ module Datadog
|
|
|
36
36
|
type: Datadog::Tracing::Metadata::Ext::AppTypes::TYPE_WORKER,
|
|
37
37
|
on_error: @on_error
|
|
38
38
|
) do |span|
|
|
39
|
+
span.set_tag(Datadog::Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
39
40
|
span.resource = resource
|
|
40
41
|
|
|
41
42
|
span.set_tag(Contrib::Ext::Messaging::TAG_SYSTEM, Ext::TAG_COMPONENT)
|
|
@@ -68,7 +69,7 @@ module Datadog
|
|
|
68
69
|
|
|
69
70
|
args = job['args']
|
|
70
71
|
if args && !args.empty?
|
|
71
|
-
span.set_tag(Ext::TAG_JOB_ARGS, Contrib::Utils::Quantization::
|
|
72
|
+
span.set_tag(Ext::TAG_JOB_ARGS, Contrib::Utils::Quantization::HashFormatter.format(args, (@quantize[:args] || {})))
|
|
72
73
|
end
|
|
73
74
|
|
|
74
75
|
yield
|
|
@@ -28,6 +28,7 @@ module Datadog
|
|
|
28
28
|
@propagation = Sidekiq::Distributed::Propagation.new(
|
|
29
29
|
propagation_style_inject: tracing.propagation_style_inject,
|
|
30
30
|
propagation_style_extract: tracing.propagation_style_extract,
|
|
31
|
+
propagation_behavior_extract: tracing.propagation_behavior_extract,
|
|
31
32
|
propagation_extract_first: tracing.propagation_extract_first
|
|
32
33
|
)
|
|
33
34
|
end
|
|
@@ -57,6 +57,7 @@ module Datadog
|
|
|
57
57
|
type: Tracing::Metadata::Ext::HTTP::TYPE_INBOUND,
|
|
58
58
|
resource: "#{request.request_method} #{datadog_route}",
|
|
59
59
|
) do |span, trace|
|
|
60
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
60
61
|
span.set_tag(Ext::TAG_APP_NAME, settings.name || settings.superclass.name)
|
|
61
62
|
span.set_tag(Ext::TAG_ROUTE_PATH, datadog_route)
|
|
62
63
|
|
|
@@ -28,6 +28,7 @@ module Datadog
|
|
|
28
28
|
service: configuration[:service_name],
|
|
29
29
|
type: Tracing::Metadata::Ext::HTTP::TYPE_INBOUND
|
|
30
30
|
) do |span|
|
|
31
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
31
32
|
# this is kept nil until we set a correct one (either in the route or with a fallback in the ensure below)
|
|
32
33
|
# the nil signals that there's no good one yet and is also seen by profiler, when sampling the resource
|
|
33
34
|
span.resource = nil
|
|
@@ -22,6 +22,7 @@ module Datadog
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
Tracing.trace(Ext::SPAN_JOB, **trace_options) do |request_span|
|
|
25
|
+
request_span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
25
26
|
request_span.set_tag(Contrib::Ext::Messaging::TAG_SYSTEM, Ext::TAG_MESSAGING_SYSTEM)
|
|
26
27
|
|
|
27
28
|
request_span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
|
|
@@ -86,6 +86,7 @@ module Datadog
|
|
|
86
86
|
|
|
87
87
|
def __with_instrumentation(name)
|
|
88
88
|
Datadog::Tracing.trace(name, service: datadog_configuration[:service_name]) do |span|
|
|
89
|
+
span.set_tag(Datadog::Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
89
90
|
span.type = Datadog::Tracing::Metadata::Ext::AppTypes::TYPE_WORKER
|
|
90
91
|
span.set_tag(Datadog::Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
|
|
91
92
|
span.set_tag(Ext::TAG_QUEUE, to_s)
|
|
@@ -23,6 +23,7 @@ module Datadog
|
|
|
23
23
|
service = Datadog.configuration_for(self, :service_name) || datadog_configuration[:service_name]
|
|
24
24
|
|
|
25
25
|
Tracing.trace(Ext::SPAN_QUERY, service: service) do |span, trace_op|
|
|
26
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
26
27
|
span.resource = sql
|
|
27
28
|
span.type = Tracing::Metadata::Ext::SQL::TYPE
|
|
28
29
|
|
|
@@ -19,6 +19,7 @@ module Datadog
|
|
|
19
19
|
def initialize(
|
|
20
20
|
propagation_style_inject:,
|
|
21
21
|
propagation_style_extract:,
|
|
22
|
+
propagation_behavior_extract:,
|
|
22
23
|
propagation_extract_first:
|
|
23
24
|
)
|
|
24
25
|
super(
|
|
@@ -37,6 +38,7 @@ module Datadog
|
|
|
37
38
|
},
|
|
38
39
|
propagation_style_inject: propagation_style_inject,
|
|
39
40
|
propagation_style_extract: propagation_style_extract,
|
|
41
|
+
propagation_behavior_extract: propagation_behavior_extract,
|
|
40
42
|
propagation_extract_first: propagation_extract_first
|
|
41
43
|
)
|
|
42
44
|
end
|
|
@@ -32,6 +32,7 @@ module Datadog
|
|
|
32
32
|
@propagation = WaterDrop::Distributed::Propagation.new(
|
|
33
33
|
propagation_style_inject: tracing.propagation_style_inject,
|
|
34
34
|
propagation_style_extract: tracing.propagation_style_extract,
|
|
35
|
+
propagation_behavior_extract: tracing.propagation_behavior_extract,
|
|
35
36
|
propagation_extract_first: tracing.propagation_extract_first
|
|
36
37
|
)
|
|
37
38
|
end
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
require_relative '../configuration/ext'
|
|
4
4
|
require_relative '../trace_digest'
|
|
5
5
|
require_relative '../trace_operation'
|
|
6
|
+
require_relative '../span_link'
|
|
6
7
|
require_relative '../../core/telemetry/logger'
|
|
7
8
|
require_relative 'baggage'
|
|
8
9
|
|
|
@@ -13,6 +14,8 @@ module Datadog
|
|
|
13
14
|
class Propagation
|
|
14
15
|
# @param propagation_styles [Hash<String,Object>]
|
|
15
16
|
# a map of propagation styles to their corresponding implementations
|
|
17
|
+
# @param propagation_behavior_extract [String]
|
|
18
|
+
# the behavior to apply when extracting distributed trace data
|
|
16
19
|
# @param propagation_style_inject [Array<String>]
|
|
17
20
|
# a list of styles to use when injecting distributed trace data
|
|
18
21
|
# @param propagation_style_extract [Array<String>]
|
|
@@ -23,9 +26,11 @@ module Datadog
|
|
|
23
26
|
propagation_styles:,
|
|
24
27
|
propagation_style_inject:,
|
|
25
28
|
propagation_style_extract:,
|
|
29
|
+
propagation_behavior_extract:,
|
|
26
30
|
propagation_extract_first:
|
|
27
31
|
)
|
|
28
32
|
@propagation_styles = propagation_styles
|
|
33
|
+
@propagation_behavior_extract = propagation_behavior_extract
|
|
29
34
|
@propagation_extract_first = propagation_extract_first
|
|
30
35
|
@propagation_style_inject = propagation_style_inject.map { |style| propagation_styles[style] }
|
|
31
36
|
@propagation_style_extract = propagation_style_extract.map { |style| propagation_styles[style] }
|
|
@@ -97,12 +102,20 @@ module Datadog
|
|
|
97
102
|
return unless data
|
|
98
103
|
return if data.empty?
|
|
99
104
|
|
|
105
|
+
if @propagation_behavior_extract == Tracing::Configuration::Ext::Distributed::PROPAGATION_BEHAVIOR_EXTRACT_IGNORE
|
|
106
|
+
return nil
|
|
107
|
+
end
|
|
108
|
+
|
|
100
109
|
extracted_trace_digest = nil
|
|
110
|
+
# Name of the propagation style that first produced a trace context.
|
|
111
|
+
# Used as the `context_headers` span-link attribute when restarting a trace.
|
|
112
|
+
extracted_style_name = nil
|
|
101
113
|
|
|
102
114
|
@propagation_style_extract.each do |propagator|
|
|
103
115
|
# First extraction?
|
|
104
116
|
unless extracted_trace_digest
|
|
105
117
|
extracted_trace_digest = propagator.extract(data)
|
|
118
|
+
extracted_style_name = @propagation_styles.key(propagator) if extracted_trace_digest
|
|
106
119
|
next
|
|
107
120
|
end
|
|
108
121
|
|
|
@@ -145,7 +158,26 @@ module Datadog
|
|
|
145
158
|
# Handle baggage after all other styles if present
|
|
146
159
|
extracted_trace_digest = propagate_baggage(data, extracted_trace_digest) if @baggage_propagator
|
|
147
160
|
|
|
148
|
-
|
|
161
|
+
# Default mode: Current digest continues the upstream trace.
|
|
162
|
+
return extracted_trace_digest if @propagation_behavior_extract != Tracing::Configuration::Ext::Distributed::PROPAGATION_BEHAVIOR_EXTRACT_RESTART || extracted_trace_digest&.trace_id.nil?
|
|
163
|
+
|
|
164
|
+
# Restart mode: start a new local digest and create a Span Link on
|
|
165
|
+
# the service-entry span with the original propagation data.
|
|
166
|
+
link = SpanLink.new(
|
|
167
|
+
extracted_trace_digest,
|
|
168
|
+
attributes: {
|
|
169
|
+
'reason' => 'propagation_behavior_extract',
|
|
170
|
+
'context_headers' => extracted_style_name,
|
|
171
|
+
}
|
|
172
|
+
)
|
|
173
|
+
baggage_tags = extracted_trace_digest.trace_distributed_tags&.select { |k, _| k.start_with?('baggage.') }
|
|
174
|
+
baggage_tags = nil if baggage_tags&.empty?
|
|
175
|
+
TraceDigest.new(
|
|
176
|
+
span_links: [link],
|
|
177
|
+
baggage: extracted_trace_digest.baggage,
|
|
178
|
+
trace_distributed_tags: baggage_tags,
|
|
179
|
+
span_remote: false,
|
|
180
|
+
)
|
|
149
181
|
end
|
|
150
182
|
|
|
151
183
|
private
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require_relative '../../core/utils'
|
|
4
|
+
require_relative 'helpers'
|
|
5
|
+
|
|
3
6
|
module Datadog
|
|
4
7
|
module Tracing
|
|
5
8
|
module Distributed
|
|
@@ -282,8 +285,11 @@ module Datadog
|
|
|
282
285
|
trace_flags & TRACE_FLAGS_SAMPLED
|
|
283
286
|
end
|
|
284
287
|
|
|
285
|
-
# @return [
|
|
286
|
-
#
|
|
288
|
+
# @return [nil] when the tracestate is absent or has no vendor entries.
|
|
289
|
+
# @return [String] when no `dd=` entry is present, the joined vendor list.
|
|
290
|
+
# @return [Array(String, Integer, String, String, Hash, String)] when a `dd=`
|
|
291
|
+
# entry is present: [tracestate without `dd=`, sampling_priority, origin,
|
|
292
|
+
# ts_parent_id, tags, unknown_fields]. All elements past the first may be nil.
|
|
287
293
|
def extract_tracestate(tracestate)
|
|
288
294
|
vendors = split_tracestate(tracestate)
|
|
289
295
|
return unless vendors && !vendors.empty?
|
|
@@ -395,6 +401,9 @@ module Datadog
|
|
|
395
401
|
tracestate = tracestate.chop
|
|
396
402
|
end
|
|
397
403
|
|
|
404
|
+
tracestate = ::Datadog::Core::Utils.utf8_encode(tracestate, placeholder: nil)
|
|
405
|
+
return unless tracestate
|
|
406
|
+
|
|
398
407
|
vendors = tracestate.split(',', TRACESTATE_MAX_LIST_MEMBERS + 1)
|
|
399
408
|
if vendors.length > TRACESTATE_MAX_LIST_MEMBERS || remove_last_member
|
|
400
409
|
vendors.pop
|
|
@@ -36,6 +36,13 @@ module Datadog
|
|
|
36
36
|
# Set to the global service name when a span's service is overridden
|
|
37
37
|
TAG_BASE_SERVICE = '_dd.base_service'
|
|
38
38
|
|
|
39
|
+
# Set to the source of a span's service override: the component name for Datadog-instrumented spans
|
|
40
|
+
# (e.g. 'redis', 'pg'), or {SVC_SRC_MANUAL} for manually-instrumented spans
|
|
41
|
+
TAG_SVC_SRC = '_dd.svc_src'
|
|
42
|
+
|
|
43
|
+
# Value for {TAG_SVC_SRC} indicating that a span was manually instrumented via the Tracing API
|
|
44
|
+
SVC_SRC_MANUAL = 'm'
|
|
45
|
+
|
|
39
46
|
# Defines constants for trace analytics
|
|
40
47
|
# @public_api
|
|
41
48
|
module Analytics
|
|
@@ -22,6 +22,9 @@ module Datadog
|
|
|
22
22
|
# @!attribute [r] span_type
|
|
23
23
|
# The type of the currently active span.
|
|
24
24
|
# @return [String]
|
|
25
|
+
# @!attribute [r] span_links
|
|
26
|
+
# Span links associated with this trace context.
|
|
27
|
+
# @return [Array<Datadog::Tracing::SpanLink>, nil]
|
|
25
28
|
# @!attribute [r] trace_distributed_tags
|
|
26
29
|
# Datadog-specific tags that support richer distributed tracing association.
|
|
27
30
|
# @return [Hash<String,String>]
|
|
@@ -91,6 +94,7 @@ module Datadog
|
|
|
91
94
|
:span_resource,
|
|
92
95
|
:span_service,
|
|
93
96
|
:span_type,
|
|
97
|
+
:span_links,
|
|
94
98
|
:trace_distributed_tags,
|
|
95
99
|
:trace_hostname,
|
|
96
100
|
:trace_id,
|
|
@@ -114,6 +118,7 @@ module Datadog
|
|
|
114
118
|
span_resource: nil,
|
|
115
119
|
span_service: nil,
|
|
116
120
|
span_type: nil,
|
|
121
|
+
span_links: nil,
|
|
117
122
|
trace_distributed_tags: nil,
|
|
118
123
|
trace_hostname: nil,
|
|
119
124
|
trace_id: nil,
|
|
@@ -136,6 +141,7 @@ module Datadog
|
|
|
136
141
|
@span_resource = span_resource && span_resource.dup.freeze
|
|
137
142
|
@span_service = span_service && span_service.dup.freeze
|
|
138
143
|
@span_type = span_type && span_type.dup.freeze
|
|
144
|
+
@span_links = span_links && span_links.dup.freeze
|
|
139
145
|
@trace_distributed_tags = trace_distributed_tags && trace_distributed_tags.dup.freeze
|
|
140
146
|
@trace_hostname = trace_hostname && trace_hostname.dup.freeze
|
|
141
147
|
@trace_id = trace_id
|
|
@@ -167,6 +173,7 @@ module Datadog
|
|
|
167
173
|
span_resource: span_resource,
|
|
168
174
|
span_service: span_service,
|
|
169
175
|
span_type: span_type,
|
|
176
|
+
span_links: span_links,
|
|
170
177
|
trace_distributed_tags: trace_distributed_tags,
|
|
171
178
|
trace_hostname: trace_hostname,
|
|
172
179
|
trace_id: trace_id,
|
|
@@ -58,6 +58,7 @@ module Datadog
|
|
|
58
58
|
|
|
59
59
|
# Creates a new TraceOperation.
|
|
60
60
|
#
|
|
61
|
+
# @param span_links [Array<Datadog::Tracing::SpanLink>, nil] links to attach to the local root span.
|
|
61
62
|
# @param auto_finish [Boolean] when true, automatically finishes the trace when the local root span finishes.
|
|
62
63
|
# When false, the trace remains unfinished until {#finish!} is called.
|
|
63
64
|
# This is useful when this {TraceOperation} represents the continuation of a remote {TraceDigest},
|
|
@@ -72,6 +73,7 @@ module Datadog
|
|
|
72
73
|
name: nil,
|
|
73
74
|
origin: nil,
|
|
74
75
|
parent_span_id: nil,
|
|
76
|
+
span_links: nil,
|
|
75
77
|
rate_limiter_rate: nil,
|
|
76
78
|
resource: nil,
|
|
77
79
|
rule_sample_rate: nil,
|
|
@@ -98,7 +100,7 @@ module Datadog
|
|
|
98
100
|
@parent_span_id = parent_span_id
|
|
99
101
|
@sampled = sampled.nil? || sampled
|
|
100
102
|
@remote_parent = remote_parent
|
|
101
|
-
|
|
103
|
+
@span_links = span_links
|
|
102
104
|
# Tags
|
|
103
105
|
@agent_sample_rate = agent_sample_rate
|
|
104
106
|
@hostname = hostname
|
|
@@ -318,6 +320,7 @@ module Datadog
|
|
|
318
320
|
events: span_events,
|
|
319
321
|
on_error: on_error,
|
|
320
322
|
parent_id: parent_id,
|
|
323
|
+
links: (@root_span.nil? ? @span_links : nil),
|
|
321
324
|
resource: resource || op_name,
|
|
322
325
|
service: service,
|
|
323
326
|
start_time: start_time,
|
|
@@ -387,6 +387,7 @@ module Datadog
|
|
|
387
387
|
origin: digest.trace_origin,
|
|
388
388
|
parent_span_id: digest.span_id,
|
|
389
389
|
sampling_priority: sampling_priority,
|
|
390
|
+
span_links: digest.span_links,
|
|
390
391
|
# Distributed tags are just regular trace tags with special meaning to Datadog
|
|
391
392
|
tags: digest.trace_distributed_tags,
|
|
392
393
|
trace_state: digest.trace_state,
|
|
@@ -420,6 +421,9 @@ module Datadog
|
|
|
420
421
|
events.span_before_finish.subscribe do |event_span_op, _event_trace_op|
|
|
421
422
|
if event_span_op.service && event_span_op.service != @default_service
|
|
422
423
|
event_span_op.set_tag(Tracing::Metadata::Ext::TAG_BASE_SERVICE, @default_service)
|
|
424
|
+
event_span_op.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Tracing::Metadata::Ext::SVC_SRC_MANUAL) unless event_span_op.get_tag(Tracing::Metadata::Ext::TAG_SVC_SRC)
|
|
425
|
+
else
|
|
426
|
+
event_span_op.send(:meta).delete(Tracing::Metadata::Ext::TAG_SVC_SRC)
|
|
423
427
|
end
|
|
424
428
|
end
|
|
425
429
|
|
|
@@ -4,7 +4,7 @@ require_relative '../../core/chunker'
|
|
|
4
4
|
require_relative '../../core/transport/parcel'
|
|
5
5
|
require_relative '../../core/transport/request'
|
|
6
6
|
require_relative '../../core/transport/transport'
|
|
7
|
-
require_relative '../../core/utils/
|
|
7
|
+
require_relative '../../core/utils/enumerable_compat'
|
|
8
8
|
require_relative 'http/client'
|
|
9
9
|
require_relative 'serializable_trace'
|
|
10
10
|
require_relative 'trace_formatter'
|
|
@@ -62,7 +62,7 @@ module Datadog
|
|
|
62
62
|
# @return [Enumerable[Array[Bytes,Integer]]] list of encoded chunks: each containing a byte array and
|
|
63
63
|
# number of traces
|
|
64
64
|
def encode_in_chunks(traces)
|
|
65
|
-
encoded_traces = Core::Utils::
|
|
65
|
+
encoded_traces = Core::Utils::EnumerableCompat.filter_map(traces) do |trace|
|
|
66
66
|
encode_one(trace)
|
|
67
67
|
end
|
|
68
68
|
|
data/lib/datadog/version.rb
CHANGED
data/lib/datadog.rb
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
# Load core first so shared helpers (e.g. Datadog::RubyVersion) are available at require-time
|
|
4
|
+
require_relative 'datadog/core'
|
|
5
|
+
|
|
3
6
|
# Load tracing
|
|
4
7
|
require_relative 'datadog/tracing'
|
|
5
8
|
require_relative 'datadog/tracing/contrib'
|
|
@@ -16,7 +19,7 @@ require_relative 'datadog/open_feature'
|
|
|
16
19
|
# trace point. Activate DI automatically on supported Ruby versions but
|
|
17
20
|
# always load its settings so that, for example, turning DI off when
|
|
18
21
|
# we are on Ruby 2.5 does not produce exceptions.
|
|
19
|
-
require_relative 'datadog/di/boot' if
|
|
22
|
+
require_relative 'datadog/di/boot' if Datadog::RubyVersion.is?('>= 2.6') && RUBY_ENGINE != 'jruby'
|
|
20
23
|
|
|
21
24
|
require_relative 'datadog/error_tracking'
|
|
22
25
|
require_relative 'datadog/kit'
|