ddtrace 1.19.0 → 1.20.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.
Files changed (125) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +33 -1
  3. data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +38 -23
  4. data/ext/ddtrace_profiling_native_extension/collectors_discrete_dynamic_sampler.c +349 -0
  5. data/ext/ddtrace_profiling_native_extension/collectors_discrete_dynamic_sampler.h +89 -0
  6. data/ext/ddtrace_profiling_native_extension/extconf.rb +3 -0
  7. data/ext/ddtrace_profiling_native_extension/helpers.h +4 -0
  8. data/ext/ddtrace_profiling_native_extension/profiling.c +16 -0
  9. data/ext/ddtrace_profiling_native_extension/time_helpers.h +2 -0
  10. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +2 -1
  11. data/lib/datadog/core/configuration/settings.rb +22 -7
  12. data/lib/datadog/core/environment/class_count.rb +6 -6
  13. data/lib/datadog/core/remote/component.rb +25 -12
  14. data/lib/datadog/core/remote/ext.rb +1 -0
  15. data/lib/datadog/core/remote/tie/tracing.rb +39 -0
  16. data/lib/datadog/core/remote/tie.rb +27 -0
  17. data/lib/datadog/opentelemetry/sdk/propagator.rb +3 -2
  18. data/lib/datadog/opentelemetry.rb +3 -0
  19. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +0 -2
  20. data/lib/datadog/profiling/component.rb +3 -17
  21. data/lib/datadog/tracing/configuration/ext.rb +0 -1
  22. data/lib/datadog/tracing/configuration/settings.rb +2 -1
  23. data/lib/datadog/tracing/contrib/action_cable/configuration/settings.rb +1 -0
  24. data/lib/datadog/tracing/contrib/action_cable/ext.rb +1 -0
  25. data/lib/datadog/tracing/contrib/action_mailer/configuration/settings.rb +1 -0
  26. data/lib/datadog/tracing/contrib/action_mailer/ext.rb +1 -0
  27. data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +1 -0
  28. data/lib/datadog/tracing/contrib/action_pack/ext.rb +1 -0
  29. data/lib/datadog/tracing/contrib/action_view/configuration/settings.rb +1 -0
  30. data/lib/datadog/tracing/contrib/action_view/ext.rb +1 -0
  31. data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +1 -0
  32. data/lib/datadog/tracing/contrib/active_job/ext.rb +1 -0
  33. data/lib/datadog/tracing/contrib/active_model_serializers/configuration/settings.rb +1 -0
  34. data/lib/datadog/tracing/contrib/active_model_serializers/ext.rb +1 -0
  35. data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +1 -0
  36. data/lib/datadog/tracing/contrib/active_record/ext.rb +1 -0
  37. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +1 -0
  38. data/lib/datadog/tracing/contrib/active_support/ext.rb +1 -0
  39. data/lib/datadog/tracing/contrib/analytics.rb +0 -1
  40. data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +1 -0
  41. data/lib/datadog/tracing/contrib/aws/ext.rb +1 -0
  42. data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +1 -0
  43. data/lib/datadog/tracing/contrib/dalli/ext.rb +1 -0
  44. data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +1 -0
  45. data/lib/datadog/tracing/contrib/delayed_job/ext.rb +1 -0
  46. data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +1 -0
  47. data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +1 -0
  48. data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +1 -0
  49. data/lib/datadog/tracing/contrib/ethon/ext.rb +1 -0
  50. data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +1 -0
  51. data/lib/datadog/tracing/contrib/excon/ext.rb +1 -0
  52. data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +7 -0
  53. data/lib/datadog/tracing/contrib/faraday/ext.rb +1 -0
  54. data/lib/datadog/tracing/contrib/faraday/middleware.rb +1 -1
  55. data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +1 -0
  56. data/lib/datadog/tracing/contrib/grape/ext.rb +1 -0
  57. data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +1 -0
  58. data/lib/datadog/tracing/contrib/graphql/ext.rb +1 -0
  59. data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +1 -0
  60. data/lib/datadog/tracing/contrib/grpc/ext.rb +1 -0
  61. data/lib/datadog/tracing/contrib/http/configuration/settings.rb +1 -0
  62. data/lib/datadog/tracing/contrib/http/distributed/fetcher.rb +2 -2
  63. data/lib/datadog/tracing/contrib/http/ext.rb +1 -0
  64. data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +1 -0
  65. data/lib/datadog/tracing/contrib/httpclient/ext.rb +1 -0
  66. data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +1 -0
  67. data/lib/datadog/tracing/contrib/httprb/ext.rb +1 -0
  68. data/lib/datadog/tracing/contrib/kafka/configuration/settings.rb +1 -0
  69. data/lib/datadog/tracing/contrib/kafka/ext.rb +1 -0
  70. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +1 -0
  71. data/lib/datadog/tracing/contrib/mongodb/ext.rb +1 -0
  72. data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +1 -0
  73. data/lib/datadog/tracing/contrib/mysql2/ext.rb +1 -0
  74. data/lib/datadog/tracing/contrib/opensearch/configuration/settings.rb +1 -0
  75. data/lib/datadog/tracing/contrib/opensearch/ext.rb +1 -0
  76. data/lib/datadog/tracing/contrib/pg/configuration/settings.rb +1 -0
  77. data/lib/datadog/tracing/contrib/pg/ext.rb +1 -0
  78. data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +1 -0
  79. data/lib/datadog/tracing/contrib/presto/ext.rb +1 -0
  80. data/lib/datadog/tracing/contrib/qless/configuration/settings.rb +1 -0
  81. data/lib/datadog/tracing/contrib/qless/ext.rb +1 -0
  82. data/lib/datadog/tracing/contrib/que/configuration/settings.rb +1 -0
  83. data/lib/datadog/tracing/contrib/que/ext.rb +1 -0
  84. data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +1 -0
  85. data/lib/datadog/tracing/contrib/racecar/ext.rb +1 -0
  86. data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +1 -0
  87. data/lib/datadog/tracing/contrib/rack/ext.rb +1 -0
  88. data/lib/datadog/tracing/contrib/rack/middlewares.rb +9 -2
  89. data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +1 -0
  90. data/lib/datadog/tracing/contrib/rails/ext.rb +1 -0
  91. data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +1 -0
  92. data/lib/datadog/tracing/contrib/rake/ext.rb +1 -0
  93. data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +1 -0
  94. data/lib/datadog/tracing/contrib/redis/ext.rb +1 -0
  95. data/lib/datadog/tracing/contrib/redis/instrumentation.rb +2 -2
  96. data/lib/datadog/tracing/contrib/redis/patcher.rb +34 -21
  97. data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +1 -0
  98. data/lib/datadog/tracing/contrib/resque/ext.rb +1 -0
  99. data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +1 -0
  100. data/lib/datadog/tracing/contrib/rest_client/ext.rb +1 -0
  101. data/lib/datadog/tracing/contrib/roda/configuration/settings.rb +1 -0
  102. data/lib/datadog/tracing/contrib/roda/ext.rb +1 -0
  103. data/lib/datadog/tracing/contrib/sequel/configuration/settings.rb +1 -0
  104. data/lib/datadog/tracing/contrib/sequel/ext.rb +1 -0
  105. data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +1 -0
  106. data/lib/datadog/tracing/contrib/shoryuken/ext.rb +1 -0
  107. data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +1 -0
  108. data/lib/datadog/tracing/contrib/sidekiq/ext.rb +1 -0
  109. data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +1 -0
  110. data/lib/datadog/tracing/contrib/sinatra/ext.rb +1 -0
  111. data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +1 -0
  112. data/lib/datadog/tracing/contrib/sneakers/ext.rb +1 -0
  113. data/lib/datadog/tracing/contrib/stripe/configuration/settings.rb +1 -0
  114. data/lib/datadog/tracing/contrib/stripe/ext.rb +1 -0
  115. data/lib/datadog/tracing/contrib/sucker_punch/configuration/settings.rb +1 -0
  116. data/lib/datadog/tracing/contrib/sucker_punch/ext.rb +1 -0
  117. data/lib/datadog/tracing/contrib/trilogy/configuration/settings.rb +58 -0
  118. data/lib/datadog/tracing/contrib/trilogy/ext.rb +27 -0
  119. data/lib/datadog/tracing/contrib/trilogy/instrumentation.rb +94 -0
  120. data/lib/datadog/tracing/contrib/trilogy/integration.rb +43 -0
  121. data/lib/datadog/tracing/contrib/trilogy/patcher.rb +31 -0
  122. data/lib/datadog/tracing/contrib.rb +1 -0
  123. data/lib/datadog/tracing.rb +8 -2
  124. data/lib/ddtrace/version.rb +1 -1
  125. metadata +14 -5
@@ -8,6 +8,7 @@ module Datadog
8
8
  # @public_api Changing resource names, tag names, or environment variables creates breaking changes.
9
9
  module Ext
10
10
  ENV_ENABLED = 'DD_TRACE_ACTIVE_MODEL_SERIALIZERS_ENABLED'
11
+ # @!visibility private
11
12
  ENV_ANALYTICS_ENABLED = 'DD_TRACE_ACTIVE_MODEL_SERIALIZERS_ANALYTICS_ENABLED'
12
13
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_ACTIVE_MODEL_SERIALIZERS_ANALYTICS_SAMPLE_RATE'
13
14
  SPAN_RENDER = 'active_model_serializers.render'
@@ -18,6 +18,7 @@ module Datadog
18
18
  o.default true
19
19
  end
20
20
 
21
+ # @!visibility private
21
22
  option :analytics_enabled do |o|
22
23
  o.type :bool
23
24
  o.env Ext::ENV_ANALYTICS_ENABLED
@@ -8,6 +8,7 @@ module Datadog
8
8
  # @public_api Changing resource names, tag names, or environment variables creates breaking changes.
9
9
  module Ext
10
10
  ENV_ENABLED = 'DD_TRACE_ACTIVE_RECORD_ENABLED'
11
+ # @!visibility private
11
12
  ENV_ANALYTICS_ENABLED = 'DD_TRACE_ACTIVE_RECORD_ANALYTICS_ENABLED'
12
13
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_ACTIVE_RECORD_ANALYTICS_SAMPLE_RATE'
13
14
  SERVICE_NAME = 'active_record'
@@ -17,6 +17,7 @@ module Datadog
17
17
  o.default true
18
18
  end
19
19
 
20
+ # @!visibility private
20
21
  option :analytics_enabled do |o|
21
22
  o.type :bool
22
23
  o.env Ext::ENV_ANALYTICS_ENABLED
@@ -8,6 +8,7 @@ module Datadog
8
8
  # @public_api Changing resource names, tag names, or environment variables creates breaking changes.
9
9
  module Ext
10
10
  ENV_ENABLED = 'DD_TRACE_ACTIVE_SUPPORT_ENABLED'
11
+ # @!visibility private
11
12
  ENV_ANALYTICS_ENABLED = 'DD_TRACE_ACTIVE_SUPPORT_ANALYTICS_ENABLED'
12
13
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_ACTIVE_SUPPORT_ANALYTICS_SAMPLE_RATE'
13
14
  QUANTIZE_CACHE_MAX_KEY_SIZE = 300
@@ -6,7 +6,6 @@ module Datadog
6
6
  module Tracing
7
7
  module Contrib
8
8
  # Defines analytics behavior for integrations
9
- # @public_api
10
9
  module Analytics
11
10
  module_function
12
11
 
@@ -18,6 +18,7 @@ module Datadog
18
18
  o.default true
19
19
  end
20
20
 
21
+ # @!visibility private
21
22
  option :analytics_enabled do |o|
22
23
  o.type :bool
23
24
  o.env Ext::ENV_ANALYTICS_ENABLED
@@ -10,6 +10,7 @@ module Datadog
10
10
  ENV_ENABLED = 'DD_TRACE_AWS_ENABLED'
11
11
  ENV_SERVICE_NAME = 'DD_TRACE_AWS_SERVICE_NAME'
12
12
  ENV_PEER_SERVICE = 'DD_TRACE_AWS_PEER_SERVICE'
13
+ # @!visibility private
13
14
  ENV_ANALYTICS_ENABLED = 'DD_TRACE_AWS_ANALYTICS_ENABLED'
14
15
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_AWS_ANALYTICS_SAMPLE_RATE'
15
16
  DEFAULT_PEER_SERVICE_NAME = 'aws'
@@ -17,6 +17,7 @@ module Datadog
17
17
  o.default true
18
18
  end
19
19
 
20
+ # @!visibility private
20
21
  option :analytics_enabled do |o|
21
22
  o.type :bool
22
23
  o.env Ext::ENV_ANALYTICS_ENABLED
@@ -12,6 +12,7 @@ module Datadog
12
12
  # DEV: If add support for the `memcached` gem (not popular as of 2023), we'll have issues with span naming
13
13
  # DEV: conflicts.
14
14
  ENV_ENABLED = 'DD_TRACE_DALLI_ENABLED'
15
+ # @!visibility private
15
16
  ENV_ANALYTICS_ENABLED = 'DD_TRACE_DALLI_ANALYTICS_ENABLED'
16
17
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_DALLI_ANALYTICS_SAMPLE_RATE'
17
18
  # DEV: This is named `*_MEMCACHED_*` because the spans it refer to are `memcached.*` and this variable
@@ -18,6 +18,7 @@ module Datadog
18
18
  o.default true
19
19
  end
20
20
 
21
+ # @!visibility private
21
22
  option :analytics_enabled do |o|
22
23
  o.type :bool
23
24
  o.env Ext::ENV_ANALYTICS_ENABLED
@@ -8,6 +8,7 @@ module Datadog
8
8
  # @public_api Changing resource names, tag names, or environment variables creates breaking changes.
9
9
  module Ext
10
10
  ENV_ENABLED = 'DD_TRACE_DELAYED_JOB_ENABLED'
11
+ # @!visibility private
11
12
  ENV_ANALYTICS_ENABLED = 'DD_TRACE_DELAYED_JOB_ANALYTICS_ENABLED'
12
13
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_DELAYED_JOB_ANALYTICS_SAMPLE_RATE'
13
14
  SPAN_JOB = 'delayed_job'
@@ -17,6 +17,7 @@ module Datadog
17
17
  o.default true
18
18
  end
19
19
 
20
+ # @!visibility private
20
21
  option :analytics_enabled do |o|
21
22
  o.type :bool
22
23
  o.env Ext::ENV_ANALYTICS_ENABLED
@@ -10,6 +10,7 @@ module Datadog
10
10
  ENV_ENABLED = 'DD_TRACE_ELASTICSEARCH_ENABLED'
11
11
  ENV_SERVICE_NAME = 'DD_TRACE_ELASTICSEARCH_SERVICE_NAME'
12
12
  ENV_PEER_SERVICE = 'DD_TRACE_ELASTICSEARCH_PEER_SERVICE'
13
+ # @!visibility private
13
14
  ENV_ANALYTICS_ENABLED = 'DD_TRACE_ELASTICSEARCH_ANALYTICS_ENABLED'
14
15
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_ELASTICSEARCH_ANALYTICS_SAMPLE_RATE'
15
16
  DEFAULT_PEER_SERVICE_NAME = 'elasticsearch'
@@ -17,6 +17,7 @@ module Datadog
17
17
  o.default true
18
18
  end
19
19
 
20
+ # @!visibility private
20
21
  option :analytics_enabled do |o|
21
22
  o.type :bool
22
23
  o.env Ext::ENV_ANALYTICS_ENABLED
@@ -11,6 +11,7 @@ module Datadog
11
11
  ENV_SERVICE_NAME = 'DD_TRACE_ETHON_SERVICE_NAME'
12
12
  ENV_PEER_SERVICE = 'DD_TRACE_ETHON_PEER_SERVICE'
13
13
 
14
+ # @!visibility private
14
15
  ENV_ANALYTICS_ENABLED = 'DD_TRACE_ETHON_ANALYTICS_ENABLED'
15
16
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_ETHON_ANALYTICS_SAMPLE_RATE'
16
17
  DEFAULT_PEER_SERVICE_NAME = 'ethon'
@@ -17,6 +17,7 @@ module Datadog
17
17
  o.default true
18
18
  end
19
19
 
20
+ # @!visibility private
20
21
  option :analytics_enabled do |o|
21
22
  o.type :bool
22
23
  o.env Ext::ENV_ANALYTICS_ENABLED
@@ -11,6 +11,7 @@ module Datadog
11
11
  ENV_SERVICE_NAME = 'DD_TRACE_EXCON_SERVICE_NAME'
12
12
  ENV_PEER_SERVICE = 'DD_TRACE_EXCON_PEER_SERVICE'
13
13
 
14
+ # @!visibility private
14
15
  ENV_ANALYTICS_ENABLED = 'DD_TRACE_EXCON_ANALYTICS_ENABLED'
15
16
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_EXCON_ANALYTICS_SAMPLE_RATE'
16
17
  DEFAULT_PEER_SERVICE_NAME = 'excon'
@@ -21,6 +21,7 @@ module Datadog
21
21
  o.default true
22
22
  end
23
23
 
24
+ # @!visibility private
24
25
  option :analytics_enabled do |o|
25
26
  o.type :bool
26
27
  o.env Ext::ENV_ANALYTICS_ENABLED
@@ -34,10 +35,16 @@ module Datadog
34
35
  end
35
36
 
36
37
  option :distributed_tracing, default: true, type: :bool
38
+
37
39
  option :error_handler do |o|
38
40
  o.type :proc
39
41
  o.default_proc(&DEFAULT_ERROR_HANDLER)
40
42
  end
43
+
44
+ option :on_error do |o|
45
+ o.type :proc, nilable: true
46
+ end
47
+
41
48
  option :split_by_domain, default: false, type: :bool
42
49
 
43
50
  option :service_name do |o|
@@ -11,6 +11,7 @@ module Datadog
11
11
  ENV_SERVICE_NAME = 'DD_TRACE_FARADAY_SERVICE_NAME'
12
12
  ENV_PEER_SERVICE = 'DD_TRACE_FARADAY_PEER_SERVICE'
13
13
 
14
+ # @!visibility private
14
15
  ENV_ANALYTICS_ENABLED = 'DD_TRACE_FARADAY_ANALYTICS_ENABLED'
15
16
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_FARADAY_ANALYTICS_SAMPLE_RATE'
16
17
  DEFAULT_PEER_SERVICE_NAME = 'faraday'
@@ -24,7 +24,7 @@ module Datadog
24
24
  # Do this once to reduce expensive regex calls.
25
25
  request_options = build_request_options!(env)
26
26
 
27
- Tracing.trace(Ext::SPAN_REQUEST) do |span, trace|
27
+ Tracing.trace(Ext::SPAN_REQUEST, on_error: request_options[:on_error]) do |span, trace|
28
28
  annotate!(span, env, request_options)
29
29
  propagate!(trace, span, env) if request_options[:distributed_tracing] && Tracing.enabled?
30
30
  app.call(env).on_complete { |resp| handle_response(span, resp, request_options) }
@@ -18,6 +18,7 @@ module Datadog
18
18
  o.default true
19
19
  end
20
20
 
21
+ # @!visibility private
21
22
  option :analytics_enabled do |o|
22
23
  o.type :bool, nilable: true
23
24
  o.env Ext::ENV_ANALYTICS_ENABLED
@@ -8,6 +8,7 @@ module Datadog
8
8
  # @public_api Changing resource names, tag names, or environment variables creates breaking changes.
9
9
  module Ext
10
10
  ENV_ENABLED = 'DD_TRACE_GRAPE_ENABLED'
11
+ # @!visibility private
11
12
  ENV_ANALYTICS_ENABLED = 'DD_TRACE_GRAPE_ANALYTICS_ENABLED'
12
13
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_GRAPE_ANALYTICS_SAMPLE_RATE'
13
14
  SPAN_ENDPOINT_RENDER = 'grape.endpoint_render'
@@ -17,6 +17,7 @@ module Datadog
17
17
  o.default true
18
18
  end
19
19
 
20
+ # @!visibility private
20
21
  option :analytics_enabled do |o|
21
22
  o.type :bool, nilable: true
22
23
  o.env Ext::ENV_ANALYTICS_ENABLED
@@ -8,6 +8,7 @@ module Datadog
8
8
  # @public_api Changing resource names, tag names, or environment variables creates breaking changes.
9
9
  module Ext
10
10
  ENV_ENABLED = 'DD_TRACE_GRAPHQL_ENABLED'
11
+ # @!visibility private
11
12
  ENV_ANALYTICS_ENABLED = 'DD_TRACE_GRAPHQL_ANALYTICS_ENABLED'
12
13
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_GRAPHQL_ANALYTICS_SAMPLE_RATE'
13
14
  SERVICE_NAME = 'graphql'
@@ -18,6 +18,7 @@ module Datadog
18
18
  o.default true
19
19
  end
20
20
 
21
+ # @!visibility private
21
22
  option :analytics_enabled do |o|
22
23
  o.type :bool
23
24
  o.env Ext::ENV_ANALYTICS_ENABLED
@@ -10,6 +10,7 @@ module Datadog
10
10
  ENV_ENABLED = 'DD_TRACE_GRPC_ENABLED'
11
11
  ENV_SERVICE_NAME = 'DD_TRACE_GRPC_SERVICE_NAME'
12
12
  ENV_PEER_SERVICE = 'DD_TRACE_GRPC_PEER_SERVICE'
13
+ # @!visibility private
13
14
  ENV_ANALYTICS_ENABLED = 'DD_TRACE_GRPC_ANALYTICS_ENABLED'
14
15
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_GRPC_ANALYTICS_SAMPLE_RATE'
15
16
  DEFAULT_PEER_SERVICE_NAME = 'grpc'
@@ -17,6 +17,7 @@ module Datadog
17
17
  o.default true
18
18
  end
19
19
 
20
+ # @!visibility private
20
21
  option :analytics_enabled do |o|
21
22
  o.type :bool
22
23
  o.env Ext::ENV_ANALYTICS_ENABLED
@@ -13,8 +13,8 @@ module Datadog
13
13
  #
14
14
  # In case both variants are present, the verbatim match will be used.
15
15
  class Fetcher < Tracing::Distributed::Fetcher
16
- # DEV: Should we try to parse both verbatim an Rack-formatted headers,
17
- # DEV: given Rack-formatted is the most common format in Ruby?
16
+ # @param [String] name the header name
17
+ # @return [String, nil] the header value or nil if not found
18
18
  def [](name)
19
19
  # Try to fetch with the plain key
20
20
  value = super(name)
@@ -10,6 +10,7 @@ module Datadog
10
10
  ENV_ENABLED = 'DD_TRACE_HTTP_ENABLED'
11
11
  ENV_SERVICE_NAME = 'DD_TRACE_NET_HTTP_SERVICE_NAME'
12
12
  ENV_PEER_SERVICE = 'DD_TRACE_NET_HTTP_PEER_SERVICE'
13
+ # @!visibility private
13
14
  ENV_ANALYTICS_ENABLED = 'DD_TRACE_HTTP_ANALYTICS_ENABLED'
14
15
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_HTTP_ANALYTICS_SAMPLE_RATE'
15
16
  ENV_ERROR_STATUS_CODES = 'DD_TRACE_HTTP_ERROR_STATUS_CODES'
@@ -17,6 +17,7 @@ module Datadog
17
17
  o.default true
18
18
  end
19
19
 
20
+ # @!visibility private
20
21
  option :analytics_enabled do |o|
21
22
  o.type :bool
22
23
  o.env Ext::ENV_ANALYTICS_ENABLED
@@ -11,6 +11,7 @@ module Datadog
11
11
  ENV_SERVICE_NAME = 'DD_TRACE_HTTPCLIENT_SERVICE_NAME'
12
12
  ENV_PEER_SERVICE = 'DD_TRACE_HTTPCLIENT_PEER_SERVICE'
13
13
 
14
+ # @!visibility private
14
15
  ENV_ANALYTICS_ENABLED = 'DD_TRACE_HTTPCLIENT_ANALYTICS_ENABLED'
15
16
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_HTTPCLIENT_ANALYTICS_SAMPLE_RATE'
16
17
  ENV_ERROR_STATUS_CODES = 'DD_TRACE_HTTPCLIENT_ERROR_STATUS_CODES'
@@ -17,6 +17,7 @@ module Datadog
17
17
  o.default true
18
18
  end
19
19
 
20
+ # @!visibility private
20
21
  option :analytics_enabled do |o|
21
22
  o.type :bool
22
23
  o.env Ext::ENV_ANALYTICS_ENABLED
@@ -10,6 +10,7 @@ module Datadog
10
10
  ENV_ENABLED = 'DD_TRACE_HTTPRB_ENABLED'
11
11
  ENV_SERVICE_NAME = 'DD_TRACE_HTTPRB_SERVICE_NAME'
12
12
  ENV_PEER_SERVICE = 'DD_TRACE_HTTPRB_PEER_SERVICE'
13
+ # @!visibility private
13
14
  ENV_ANALYTICS_ENABLED = 'DD_TRACE_HTTPRB_ANALYTICS_ENABLED'
14
15
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_EHTTPRB_ANALYTICS_SAMPLE_RATE'
15
16
  ENV_ERROR_STATUS_CODES = 'DD_TRACE_HTTPCLIENT_ERROR_STATUS_CODES'
@@ -17,6 +17,7 @@ module Datadog
17
17
  o.default true
18
18
  end
19
19
 
20
+ # @!visibility private
20
21
  option :analytics_enabled do |o|
21
22
  o.type :bool
22
23
  o.env Ext::ENV_ANALYTICS_ENABLED
@@ -8,6 +8,7 @@ module Datadog
8
8
  # @public_api Changing resource names, tag names, or environment variables creates breaking changes.
9
9
  module Ext
10
10
  ENV_ENABLED = 'DD_TRACE_KAFKA_ENABLED'
11
+ # @!visibility private
11
12
  ENV_ANALYTICS_ENABLED = 'DD_TRACE_KAFKA_ANALYTICS_ENABLED'
12
13
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_KAFKA_ANALYTICS_SAMPLE_RATE'
13
14
  SPAN_CONNECTION_REQUEST = 'kafka.connection.request'
@@ -19,6 +19,7 @@ module Datadog
19
19
  o.default true
20
20
  end
21
21
 
22
+ # @!visibility private
22
23
  option :analytics_enabled do |o|
23
24
  o.type :bool
24
25
  o.env Ext::ENV_ANALYTICS_ENABLED
@@ -10,6 +10,7 @@ module Datadog
10
10
  ENV_ENABLED = 'DD_TRACE_MONGO_ENABLED'
11
11
  ENV_SERVICE_NAME = 'DD_TRACE_MONGO_SERVICE_NAME'
12
12
  ENV_PEER_SERVICE = 'DD_TRACE_MONGO_PEER_SERVICE'
13
+ # @!visibility private
13
14
  ENV_ANALYTICS_ENABLED = 'DD_TRACE_MONGO_ANALYTICS_ENABLED'
14
15
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_MONGO_ANALYTICS_SAMPLE_RATE'
15
16
  DEFAULT_PEER_SERVICE_NAME = 'mongodb'
@@ -19,6 +19,7 @@ module Datadog
19
19
  o.default true
20
20
  end
21
21
 
22
+ # @!visibility private
22
23
  option :analytics_enabled do |o|
23
24
  o.type :bool
24
25
  o.env Ext::ENV_ANALYTICS_ENABLED
@@ -11,6 +11,7 @@ module Datadog
11
11
  ENV_SERVICE_NAME = 'DD_TRACE_MYSQL2_SERVICE_NAME'
12
12
  ENV_PEER_SERVICE = 'DD_TRACE_MYSQL2_PEER_SERVICE'
13
13
 
14
+ # @!visibility private
14
15
  ENV_ANALYTICS_ENABLED = 'DD_TRACE_MYSQL2_ANALYTICS_ENABLED'
15
16
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_MYSQL2_ANALYTICS_SAMPLE_RATE'
16
17
  DEFAULT_PEER_SERVICE_NAME = 'mysql2'
@@ -17,6 +17,7 @@ module Datadog
17
17
  o.default true
18
18
  end
19
19
 
20
+ # @!visibility private
20
21
  option :analytics_enabled do |o|
21
22
  o.type :bool
22
23
  o.env Ext::ENV_ANALYTICS_ENABLED
@@ -10,6 +10,7 @@ module Datadog
10
10
  ENV_ENABLED = 'DD_TRACE_OPENSEARCH_ENABLED'
11
11
  ENV_SERVICE_NAME = 'DD_TRACE_OPENSEARCH_SERVICE_NAME'
12
12
  ENV_PEER_SERVICE = 'DD_TRACE_OPENSEARCH_PEER_SERVICE'
13
+ # @!visibility private
13
14
  ENV_ANALYTICS_ENABLED = 'DD_TRACE_OPENSEARCH_ANALYTICS_ENABLED'
14
15
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_OPENSEARCH_ANALYTICS_SAMPLE_RATE'
15
16
  DEFAULT_PEER_SERVICE_NAME = 'opensearch'
@@ -19,6 +19,7 @@ module Datadog
19
19
  o.default true
20
20
  end
21
21
 
22
+ # @!visibility private
22
23
  option :analytics_enabled do |o|
23
24
  o.type :bool
24
25
  o.env Ext::ENV_ANALYTICS_ENABLED
@@ -10,6 +10,7 @@ module Datadog
10
10
  ENV_ENABLED = 'DD_TRACE_PG_ENABLED'
11
11
  ENV_SERVICE_NAME = 'DD_TRACE_PG_SERVICE_NAME'
12
12
  ENV_PEER_SERVICE = 'DD_TRACE_PG_PEER_SERVICE'
13
+ # @!visibility private
13
14
  ENV_ANALYTICS_ENABLED = 'DD_TRACE_PG_ANALYTICS_ENABLED'
14
15
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_PG_ANALYTICS_SAMPLE_RATE'
15
16
  DEFAULT_PEER_SERVICE_NAME = 'pg'
@@ -17,6 +17,7 @@ module Datadog
17
17
  o.default true
18
18
  end
19
19
 
20
+ # @!visibility private
20
21
  option :analytics_enabled do |o|
21
22
  o.type :bool
22
23
  o.env Ext::ENV_ANALYTICS_ENABLED
@@ -10,6 +10,7 @@ module Datadog
10
10
  ENV_ENABLED = 'DD_TRACE_PRESTO_ENABLED'
11
11
  ENV_SERVICE_NAME = 'DD_TRACE_PRESTO_SERVICE_NAME'
12
12
  ENV_PEER_SERVICE = 'DD_TRACE_PRESTO_PEER_SERVICE'
13
+ # @!visibility private
13
14
  ENV_ANALYTICS_ENABLED = 'DD_TRACE_PRESTO_ANALYTICS_ENABLED'
14
15
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_PRESTO_ANALYTICS_SAMPLE_RATE'
15
16
  DEFAULT_PEER_SERVICE_NAME = 'presto'
@@ -11,6 +11,7 @@ module Datadog
11
11
  # Custom settings for the Qless integration
12
12
  # @public_api
13
13
  class Settings < Contrib::Configuration::Settings
14
+ # @!visibility private
14
15
  option :analytics_enabled do |o|
15
16
  o.type :bool
16
17
  o.env Ext::ENV_ANALYTICS_ENABLED
@@ -7,6 +7,7 @@ module Datadog
7
7
  # Qless integration constants
8
8
  # @public_api Changing resource names, tag names, or environment variables creates breaking changes.
9
9
  module Ext
10
+ # @!visibility private
10
11
  ENV_ANALYTICS_ENABLED = 'DD_TRACE_QLESS_ANALYTICS_ENABLED'
11
12
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_QLESS_ANALYTICS_SAMPLE_RATE'
12
13
  ENV_TAG_JOB_DATA = 'DD_QLESS_TAG_JOB_DATA'
@@ -20,6 +20,7 @@ module Datadog
20
20
  o.default true
21
21
  end
22
22
 
23
+ # @!visibility private
23
24
  option :analytics_enabled do |o|
24
25
  o.type :bool
25
26
  o.env Ext::ENV_ANALYTICS_ENABLED
@@ -7,6 +7,7 @@ module Datadog
7
7
  # Que integration constants
8
8
  # @public_api Changing resource names, tag names, or environment variables creates breaking changes.
9
9
  module Ext
10
+ # @!visibility private
10
11
  ENV_ANALYTICS_ENABLED = 'DD_TRACE_QUE_ANALYTICS_ENABLED'
11
12
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_QUE_ANALYTICS_SAMPLE_RATE'
12
13
  ENV_ENABLED = 'DD_TRACE_QUE_ENABLED'
@@ -17,6 +17,7 @@ module Datadog
17
17
  o.default true
18
18
  end
19
19
 
20
+ # @!visibility private
20
21
  option :analytics_enabled do |o|
21
22
  o.type :bool
22
23
  o.env Ext::ENV_ANALYTICS_ENABLED
@@ -8,6 +8,7 @@ module Datadog
8
8
  # @public_api Changing resource names, tag names, or environment variables creates breaking changes.
9
9
  module Ext
10
10
  ENV_ENABLED = 'DD_TRACE_RACECAR_ENABLED'
11
+ # @!visibility private
11
12
  ENV_ANALYTICS_ENABLED = 'DD_TRACE_RACECAR_ANALYTICS_ENABLED'
12
13
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_RACECAR_ANALYTICS_SAMPLE_RATE'
13
14
  DEFAULT_PEER_SERVICE_NAME = 'racecar'
@@ -22,6 +22,7 @@ module Datadog
22
22
  o.default true
23
23
  end
24
24
 
25
+ # @!visibility private
25
26
  option :analytics_enabled do |o|
26
27
  o.type :bool, nilable: true
27
28
  o.env Ext::ENV_ANALYTICS_ENABLED
@@ -8,6 +8,7 @@ module Datadog
8
8
  # @public_api Changing resource names, tag names, or environment variables creates breaking changes.
9
9
  module Ext
10
10
  ENV_ENABLED = 'DD_TRACE_RACK_ENABLED'
11
+ # @!visibility private
11
12
  ENV_ANALYTICS_ENABLED = 'DD_TRACE_RACK_ANALYTICS_ENABLED'
12
13
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_RACK_ANALYTICS_SAMPLE_RATE'
13
14
  RACK_ENV_REQUEST_SPAN = 'datadog.rack_request_span'
@@ -2,6 +2,7 @@ require 'date'
2
2
 
3
3
  require_relative '../../../core/environment/variable_helpers'
4
4
  require_relative '../../../core/backport'
5
+ require_relative '../../../core/remote/tie/tracing'
5
6
  require_relative '../../client_ip'
6
7
  require_relative '../../metadata/ext'
7
8
  require_relative '../../propagation/http'
@@ -71,7 +72,7 @@ module Datadog
71
72
 
72
73
  return @app.call(env) if previous_request_span
73
74
 
74
- Datadog::Core::Remote.active_remote.barrier(:once) unless Datadog::Core::Remote.active_remote.nil?
75
+ boot = Datadog::Core::Remote::Tie.boot
75
76
 
76
77
  # Extract distributed tracing context before creating any spans,
77
78
  # so that all spans will be added to the distributed trace.
@@ -91,9 +92,15 @@ module Datadog
91
92
  # we must ensure that the span `resource` is set later
92
93
  request_span = Tracing.trace(Ext::SPAN_REQUEST, **trace_options)
93
94
  request_span.resource = nil
94
- request_trace = Tracing.active_trace
95
+
96
+ # When tracing and distributed tracing are both disabled, `.active_trace` will be `nil`,
97
+ # Return a null object to continue operation
98
+ request_trace = Tracing.active_trace || TraceOperation.new
99
+
95
100
  env[Ext::RACK_ENV_REQUEST_SPAN] = request_span
96
101
 
102
+ Datadog::Core::Remote::Tie::Tracing.tag(boot, request_span)
103
+
97
104
  # Copy the original env, before the rest of the stack executes.
98
105
  # Values may change; we want values before that happens.
99
106
  original_env = env.dup
@@ -29,6 +29,7 @@ module Datadog
29
29
  o.default true
30
30
  end
31
31
 
32
+ # @!visibility private
32
33
  option :analytics_enabled do |o|
33
34
  o.type :bool, nilable: true
34
35
  o.env Ext::ENV_ANALYTICS_ENABLED
@@ -9,6 +9,7 @@ module Datadog
9
9
  module Ext
10
10
  APP = 'rails'
11
11
  ENV_ENABLED = 'DD_TRACE_RAILS_ENABLED'
12
+ # @!visibility private
12
13
  ENV_ANALYTICS_ENABLED = 'DD_TRACE_RAILS_ANALYTICS_ENABLED'
13
14
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_RAILS_ANALYTICS_SAMPLE_RATE'
14
15
  ENV_DISABLE = 'DISABLE_DATADOG_RAILS'
@@ -19,6 +19,7 @@ module Datadog
19
19
  o.default true
20
20
  end
21
21
 
22
+ # @!visibility private
22
23
  option :analytics_enabled do |o|
23
24
  o.type :bool
24
25
  o.env Ext::ENV_ANALYTICS_ENABLED
@@ -8,6 +8,7 @@ module Datadog
8
8
  # @public_api Changing resource names, tag names, or environment variables creates breaking changes.
9
9
  module Ext
10
10
  ENV_ENABLED = 'DD_TRACE_RAKE_ENABLED'
11
+ # @!visibility private
11
12
  ENV_ANALYTICS_ENABLED = 'DD_TRACE_RAKE_ANALYTICS_ENABLED'
12
13
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_RAKE_ANALYTICS_SAMPLE_RATE'
13
14
  SERVICE_NAME = 'rake'
@@ -17,6 +17,7 @@ module Datadog
17
17
  o.default true
18
18
  end
19
19
 
20
+ # @!visibility private
20
21
  option :analytics_enabled do |o|
21
22
  o.type :bool
22
23
  o.env Ext::ENV_ANALYTICS_ENABLED
@@ -10,6 +10,7 @@ module Datadog
10
10
  ENV_ENABLED = 'DD_TRACE_REDIS_ENABLED'
11
11
  ENV_SERVICE_NAME = 'DD_TRACE_REDIS_SERVICE_NAME'
12
12
  ENV_PEER_SERVICE = 'DD_TRACE_REDIS_PEER_SERVICE'
13
+ # @!visibility private
13
14
  ENV_ANALYTICS_ENABLED = 'DD_TRACE_REDIS_ANALYTICS_ENABLED'
14
15
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_REDIS_ANALYTICS_SAMPLE_RATE'
15
16
  ENV_COMMAND_ARGS = 'DD_REDIS_COMMAND_ARGS'
@@ -28,7 +28,7 @@ module Datadog
28
28
  private
29
29
 
30
30
  def command_args?
31
- pinned = Datadog.configuration_for(redis_instance, :command_args)
31
+ pinned = Datadog.configuration_for(self, :command_args)
32
32
 
33
33
  return pinned unless pinned.nil?
34
34
 
@@ -36,7 +36,7 @@ module Datadog
36
36
  end
37
37
 
38
38
  def service_name
39
- Datadog.configuration_for(redis_instance, :service_name) ||
39
+ Datadog.configuration_for(self, :service_name) ||
40
40
  datadog_configuration[:service_name]
41
41
  end
42
42