datadog 2.19.0 → 2.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 (271) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +27 -1
  3. data/ext/libdatadog_api/extconf.rb +3 -1
  4. data/ext/libdatadog_extconf_helpers.rb +13 -3
  5. data/lib/datadog/appsec/component.rb +3 -13
  6. data/lib/datadog/appsec/context.rb +23 -0
  7. data/lib/datadog/appsec/contrib/devise/patches/signin_tracking_patch.rb +2 -1
  8. data/lib/datadog/appsec/contrib/devise/patches/signup_tracking_patch.rb +2 -1
  9. data/lib/datadog/appsec/contrib/excon/ssrf_detection_middleware.rb +0 -1
  10. data/lib/datadog/appsec/contrib/faraday/ssrf_detection_middleware.rb +0 -1
  11. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +14 -22
  12. data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +23 -2
  13. data/lib/datadog/appsec/contrib/rails/patcher.rb +14 -26
  14. data/lib/datadog/appsec/contrib/rails/patches/process_action_patch.rb +27 -0
  15. data/lib/datadog/appsec/contrib/rails/patches/render_to_body_patch.rb +33 -0
  16. data/lib/datadog/appsec/contrib/rest_client/request_ssrf_detection_patch.rb +0 -1
  17. data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +23 -0
  18. data/lib/datadog/appsec/contrib/sinatra/patcher.rb +8 -18
  19. data/lib/datadog/appsec/contrib/sinatra/patches/json_patch.rb +31 -0
  20. data/lib/datadog/appsec/event.rb +3 -18
  21. data/lib/datadog/appsec/instrumentation/gateway/argument.rb +16 -0
  22. data/lib/datadog/appsec/metrics/collector.rb +7 -3
  23. data/lib/datadog/appsec/metrics/telemetry.rb +1 -1
  24. data/lib/datadog/appsec/metrics/telemetry_exporter.rb +28 -0
  25. data/lib/datadog/appsec/metrics.rb +1 -0
  26. data/lib/datadog/appsec/security_engine/engine.rb +14 -32
  27. data/lib/datadog/appsec/security_engine/result.rb +16 -0
  28. data/lib/datadog/appsec/security_engine/runner.rb +18 -4
  29. data/lib/datadog/appsec/thread_safe_ref.rb +61 -0
  30. data/lib/datadog/appsec/trace_keeper.rb +24 -0
  31. data/lib/datadog/appsec/utils/hash_coercion.rb +23 -0
  32. data/lib/datadog/appsec.rb +0 -7
  33. data/lib/datadog/auto_instrument_base.rb +2 -1
  34. data/lib/datadog/core/configuration/option.rb +29 -20
  35. data/lib/datadog/core/configuration/option_definition.rb +2 -2
  36. data/lib/datadog/core/configuration/options.rb +13 -7
  37. data/lib/datadog/di/boot.rb +7 -0
  38. data/lib/datadog/di/component.rb +7 -0
  39. data/lib/datadog/di/probe_file_loader/railtie.rb +15 -0
  40. data/lib/datadog/di/probe_file_loader.rb +82 -0
  41. data/lib/datadog/di/remote.rb +3 -5
  42. data/lib/datadog/di.rb +0 -1
  43. data/lib/datadog/kit/appsec/events/v2.rb +5 -4
  44. data/lib/datadog/kit/appsec/events.rb +11 -10
  45. data/lib/datadog/kit/identity.rb +17 -11
  46. data/lib/datadog/opentelemetry/api/baggage.rb +2 -2
  47. data/lib/datadog/opentelemetry/api/context.rb +10 -9
  48. data/lib/datadog/opentelemetry/sdk/propagator.rb +4 -4
  49. data/lib/datadog/opentelemetry/sdk/span_processor.rb +8 -8
  50. data/lib/datadog/opentelemetry/sdk/trace/span.rb +14 -10
  51. data/lib/datadog/opentelemetry/trace.rb +4 -4
  52. data/lib/datadog/profiling.rb +6 -8
  53. data/lib/datadog/tracing/analytics.rb +1 -1
  54. data/lib/datadog/tracing/buffer.rb +7 -7
  55. data/lib/datadog/tracing/configuration/dynamic.rb +4 -6
  56. data/lib/datadog/tracing/configuration/ext.rb +3 -2
  57. data/lib/datadog/tracing/configuration/settings.rb +17 -0
  58. data/lib/datadog/tracing/context.rb +2 -2
  59. data/lib/datadog/tracing/contrib/action_cable/event.rb +1 -1
  60. data/lib/datadog/tracing/contrib/action_cable/integration.rb +1 -1
  61. data/lib/datadog/tracing/contrib/action_mailer/integration.rb +1 -1
  62. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +4 -4
  63. data/lib/datadog/tracing/contrib/action_pack/integration.rb +1 -1
  64. data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +1 -1
  65. data/lib/datadog/tracing/contrib/active_job/event.rb +8 -8
  66. data/lib/datadog/tracing/contrib/active_job/events/discard.rb +1 -1
  67. data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +1 -1
  68. data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +1 -1
  69. data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +1 -1
  70. data/lib/datadog/tracing/contrib/active_job/events/perform.rb +1 -1
  71. data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +1 -1
  72. data/lib/datadog/tracing/contrib/active_job/integration.rb +1 -1
  73. data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +1 -1
  74. data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +3 -3
  75. data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +1 -2
  76. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +1 -1
  77. data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +1 -1
  78. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +5 -5
  79. data/lib/datadog/tracing/contrib/active_record/integration.rb +1 -1
  80. data/lib/datadog/tracing/contrib/active_record/utils.rb +15 -15
  81. data/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb +6 -6
  82. data/lib/datadog/tracing/contrib/active_support/integration.rb +1 -1
  83. data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +2 -1
  84. data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +7 -9
  85. data/lib/datadog/tracing/contrib/aws/ext.rb +1 -1
  86. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +2 -2
  87. data/lib/datadog/tracing/contrib/aws/parsed_context.rb +3 -1
  88. data/lib/datadog/tracing/contrib/aws/patcher.rb +5 -1
  89. data/lib/datadog/tracing/contrib/aws/service/base.rb +2 -1
  90. data/lib/datadog/tracing/contrib/aws/service/dynamodb.rb +1 -1
  91. data/lib/datadog/tracing/contrib/aws/service/eventbridge.rb +1 -1
  92. data/lib/datadog/tracing/contrib/aws/service/kinesis.rb +1 -1
  93. data/lib/datadog/tracing/contrib/aws/service/s3.rb +1 -1
  94. data/lib/datadog/tracing/contrib/aws/service/sns.rb +1 -1
  95. data/lib/datadog/tracing/contrib/aws/service/sqs.rb +1 -1
  96. data/lib/datadog/tracing/contrib/aws/service/states.rb +1 -1
  97. data/lib/datadog/tracing/contrib/aws/services.rb +7 -7
  98. data/lib/datadog/tracing/contrib/concurrent_ruby/async_patch.rb +1 -1
  99. data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +1 -1
  100. data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +1 -1
  101. data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +1 -1
  102. data/lib/datadog/tracing/contrib/concurrent_ruby/promises_future_patch.rb +1 -1
  103. data/lib/datadog/tracing/contrib/configurable.rb +6 -6
  104. data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +4 -4
  105. data/lib/datadog/tracing/contrib/dalli/ext.rb +3 -2
  106. data/lib/datadog/tracing/contrib/dalli/integration.rb +1 -1
  107. data/lib/datadog/tracing/contrib/delayed_job/integration.rb +1 -1
  108. data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +3 -2
  109. data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +4 -4
  110. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +51 -53
  111. data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +5 -5
  112. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +2 -2
  113. data/lib/datadog/tracing/contrib/ethon/ext.rb +3 -2
  114. data/lib/datadog/tracing/contrib/ethon/integration.rb +1 -1
  115. data/lib/datadog/tracing/contrib/excon/ext.rb +3 -2
  116. data/lib/datadog/tracing/contrib/excon/integration.rb +1 -1
  117. data/lib/datadog/tracing/contrib/excon/middleware.rb +2 -2
  118. data/lib/datadog/tracing/contrib/ext.rb +3 -3
  119. data/lib/datadog/tracing/contrib/extensions.rb +9 -9
  120. data/lib/datadog/tracing/contrib/faraday/ext.rb +3 -2
  121. data/lib/datadog/tracing/contrib/faraday/integration.rb +1 -1
  122. data/lib/datadog/tracing/contrib/faraday/middleware.rb +4 -2
  123. data/lib/datadog/tracing/contrib/grape/endpoint.rb +8 -8
  124. data/lib/datadog/tracing/contrib/grape/integration.rb +1 -1
  125. data/lib/datadog/tracing/contrib/graphql/integration.rb +1 -1
  126. data/lib/datadog/tracing/contrib/graphql/patcher.rb +2 -2
  127. data/lib/datadog/tracing/contrib/graphql/unified_trace.rb +24 -24
  128. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +8 -8
  129. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +3 -3
  130. data/lib/datadog/tracing/contrib/grpc/distributed/fetcher.rb +1 -1
  131. data/lib/datadog/tracing/contrib/grpc/integration.rb +1 -1
  132. data/lib/datadog/tracing/contrib/hanami/ext.rb +2 -2
  133. data/lib/datadog/tracing/contrib/hanami/integration.rb +1 -1
  134. data/lib/datadog/tracing/contrib/hanami/renderer_policy_tracing.rb +1 -1
  135. data/lib/datadog/tracing/contrib/hanami/router_tracing.rb +9 -11
  136. data/lib/datadog/tracing/contrib/http/distributed/fetcher.rb +4 -4
  137. data/lib/datadog/tracing/contrib/http/ext.rb +3 -2
  138. data/lib/datadog/tracing/contrib/http/instrumentation.rb +5 -5
  139. data/lib/datadog/tracing/contrib/httpclient/ext.rb +3 -2
  140. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +3 -3
  141. data/lib/datadog/tracing/contrib/httpclient/integration.rb +1 -1
  142. data/lib/datadog/tracing/contrib/httprb/ext.rb +3 -2
  143. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +4 -4
  144. data/lib/datadog/tracing/contrib/httprb/integration.rb +1 -1
  145. data/lib/datadog/tracing/contrib/kafka/event.rb +1 -1
  146. data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +1 -1
  147. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +1 -1
  148. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +1 -1
  149. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +1 -1
  150. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +1 -1
  151. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +1 -1
  152. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +1 -1
  153. data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +1 -1
  154. data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +1 -1
  155. data/lib/datadog/tracing/contrib/kafka/integration.rb +1 -1
  156. data/lib/datadog/tracing/contrib/karafka/monitor.rb +13 -13
  157. data/lib/datadog/tracing/contrib/karafka/patcher.rb +4 -4
  158. data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +1 -1
  159. data/lib/datadog/tracing/contrib/lograge/integration.rb +1 -1
  160. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +1 -1
  161. data/lib/datadog/tracing/contrib/mongodb/ext.rb +1 -1
  162. data/lib/datadog/tracing/contrib/mongodb/integration.rb +1 -1
  163. data/lib/datadog/tracing/contrib/mongodb/parsers.rb +1 -1
  164. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +6 -6
  165. data/lib/datadog/tracing/contrib/mysql2/ext.rb +1 -1
  166. data/lib/datadog/tracing/contrib/mysql2/integration.rb +1 -1
  167. data/lib/datadog/tracing/contrib/opensearch/configuration/settings.rb +1 -1
  168. data/lib/datadog/tracing/contrib/opensearch/ext.rb +3 -2
  169. data/lib/datadog/tracing/contrib/opensearch/integration.rb +1 -2
  170. data/lib/datadog/tracing/contrib/opensearch/patcher.rb +68 -70
  171. data/lib/datadog/tracing/contrib/opensearch/quantize.rb +5 -5
  172. data/lib/datadog/tracing/contrib/patcher.rb +7 -9
  173. data/lib/datadog/tracing/contrib/pg/integration.rb +1 -1
  174. data/lib/datadog/tracing/contrib/presto/ext.rb +1 -1
  175. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +3 -3
  176. data/lib/datadog/tracing/contrib/presto/integration.rb +1 -1
  177. data/lib/datadog/tracing/contrib/propagation/sql_comment/comment.rb +1 -1
  178. data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +1 -1
  179. data/lib/datadog/tracing/contrib/que/integration.rb +1 -1
  180. data/lib/datadog/tracing/contrib/racecar/event.rb +1 -1
  181. data/lib/datadog/tracing/contrib/racecar/events/batch.rb +2 -2
  182. data/lib/datadog/tracing/contrib/racecar/events/consume.rb +1 -1
  183. data/lib/datadog/tracing/contrib/racecar/events/message.rb +2 -2
  184. data/lib/datadog/tracing/contrib/racecar/integration.rb +1 -1
  185. data/lib/datadog/tracing/contrib/rack/header_collection.rb +1 -1
  186. data/lib/datadog/tracing/contrib/rack/header_tagging.rb +32 -32
  187. data/lib/datadog/tracing/contrib/rack/integration.rb +1 -1
  188. data/lib/datadog/tracing/contrib/rack/middlewares.rb +21 -17
  189. data/lib/datadog/tracing/contrib/rack/patcher.rb +1 -1
  190. data/lib/datadog/tracing/contrib/rack/request_queue.rb +2 -2
  191. data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +1 -1
  192. data/lib/datadog/tracing/contrib/rails/integration.rb +1 -1
  193. data/lib/datadog/tracing/contrib/rails/log_injection.rb +1 -1
  194. data/lib/datadog/tracing/contrib/rails/middlewares.rb +1 -1
  195. data/lib/datadog/tracing/contrib/rails/runner.rb +5 -4
  196. data/lib/datadog/tracing/contrib/rake/instrumentation.rb +4 -4
  197. data/lib/datadog/tracing/contrib/rake/integration.rb +1 -1
  198. data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +2 -2
  199. data/lib/datadog/tracing/contrib/redis/ext.rb +3 -2
  200. data/lib/datadog/tracing/contrib/redis/integration.rb +2 -2
  201. data/lib/datadog/tracing/contrib/redis/patcher.rb +4 -4
  202. data/lib/datadog/tracing/contrib/redis/quantize.rb +1 -1
  203. data/lib/datadog/tracing/contrib/redis/tags.rb +1 -1
  204. data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +4 -4
  205. data/lib/datadog/tracing/contrib/registry.rb +1 -1
  206. data/lib/datadog/tracing/contrib/resque/integration.rb +1 -1
  207. data/lib/datadog/tracing/contrib/resque/resque_job.rb +1 -1
  208. data/lib/datadog/tracing/contrib/rest_client/ext.rb +3 -2
  209. data/lib/datadog/tracing/contrib/rest_client/integration.rb +1 -1
  210. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +3 -3
  211. data/lib/datadog/tracing/contrib/roda/instrumentation.rb +1 -1
  212. data/lib/datadog/tracing/contrib/roda/integration.rb +1 -1
  213. data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +1 -1
  214. data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +1 -1
  215. data/lib/datadog/tracing/contrib/sequel/database.rb +5 -5
  216. data/lib/datadog/tracing/contrib/sequel/dataset.rb +1 -1
  217. data/lib/datadog/tracing/contrib/sequel/integration.rb +1 -1
  218. data/lib/datadog/tracing/contrib/sequel/utils.rb +1 -1
  219. data/lib/datadog/tracing/contrib/shoryuken/integration.rb +1 -1
  220. data/lib/datadog/tracing/contrib/sidekiq/integration.rb +1 -1
  221. data/lib/datadog/tracing/contrib/sidekiq/utils.rb +1 -1
  222. data/lib/datadog/tracing/contrib/sinatra/integration.rb +1 -1
  223. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +38 -40
  224. data/lib/datadog/tracing/contrib/sneakers/integration.rb +1 -1
  225. data/lib/datadog/tracing/contrib/stripe/integration.rb +1 -1
  226. data/lib/datadog/tracing/contrib/stripe/request.rb +1 -1
  227. data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +1 -1
  228. data/lib/datadog/tracing/contrib/trilogy/ext.rb +1 -1
  229. data/lib/datadog/tracing/contrib/trilogy/integration.rb +1 -1
  230. data/lib/datadog/tracing/contrib/utils/quantization/hash.rb +11 -11
  231. data/lib/datadog/tracing/contrib/utils/quantization/http.rb +6 -6
  232. data/lib/datadog/tracing/diagnostics/environment_logger.rb +5 -1
  233. data/lib/datadog/tracing/distributed/b3_single.rb +1 -1
  234. data/lib/datadog/tracing/distributed/baggage.rb +73 -8
  235. data/lib/datadog/tracing/distributed/datadog.rb +4 -5
  236. data/lib/datadog/tracing/distributed/datadog_tags_codec.rb +11 -13
  237. data/lib/datadog/tracing/distributed/helpers.rb +1 -1
  238. data/lib/datadog/tracing/distributed/none.rb +4 -2
  239. data/lib/datadog/tracing/distributed/propagation.rb +4 -1
  240. data/lib/datadog/tracing/distributed/propagation_policy.rb +1 -1
  241. data/lib/datadog/tracing/distributed/trace_context.rb +22 -16
  242. data/lib/datadog/tracing/event.rb +5 -7
  243. data/lib/datadog/tracing/flush.rb +1 -1
  244. data/lib/datadog/tracing/metadata/analytics.rb +1 -1
  245. data/lib/datadog/tracing/metadata/tagging.rb +4 -4
  246. data/lib/datadog/tracing/pipeline/span_filter.rb +3 -1
  247. data/lib/datadog/tracing/pipeline/span_processor.rb +3 -1
  248. data/lib/datadog/tracing/pipeline.rb +1 -1
  249. data/lib/datadog/tracing/sampling/ext.rb +0 -2
  250. data/lib/datadog/tracing/sampling/rule_sampler.rb +30 -30
  251. data/lib/datadog/tracing/sampling/span/rule_parser.rb +1 -1
  252. data/lib/datadog/tracing/sampling/span/sampler.rb +0 -7
  253. data/lib/datadog/tracing/span.rb +1 -1
  254. data/lib/datadog/tracing/span_event.rb +10 -10
  255. data/lib/datadog/tracing/span_link.rb +12 -12
  256. data/lib/datadog/tracing/span_operation.rb +9 -11
  257. data/lib/datadog/tracing/trace_digest.rb +21 -23
  258. data/lib/datadog/tracing/trace_operation.rb +84 -88
  259. data/lib/datadog/tracing/trace_segment.rb +2 -2
  260. data/lib/datadog/tracing/tracer.rb +36 -38
  261. data/lib/datadog/tracing/transport/http/client.rb +1 -1
  262. data/lib/datadog/tracing/transport/http/traces.rb +2 -2
  263. data/lib/datadog/tracing/transport/io/client.rb +5 -5
  264. data/lib/datadog/tracing/transport/io/traces.rb +4 -4
  265. data/lib/datadog/tracing/transport/statistics.rb +1 -1
  266. data/lib/datadog/tracing/transport/traces.rb +5 -5
  267. data/lib/datadog/tracing/workers/trace_writer.rb +12 -12
  268. data/lib/datadog/tracing/workers.rb +2 -2
  269. data/lib/datadog/tracing.rb +2 -2
  270. data/lib/datadog/version.rb +1 -1
  271. metadata +15 -6
@@ -11,6 +11,7 @@ module Datadog
11
11
  ENV_ENABLED = 'DD_TRACE_ENABLED'
12
12
  ENV_OTEL_TRACES_EXPORTER = 'OTEL_TRACES_EXPORTER'
13
13
  ENV_HEADER_TAGS = 'DD_TRACE_HEADER_TAGS'
14
+ ENV_BAGGAGE_TAG_KEYS = 'DD_TRACE_BAGGAGE_TAG_KEYS'
14
15
  ENV_TRACE_ID_128_BIT_GENERATION_ENABLED = 'DD_TRACE_128_BIT_TRACEID_GENERATION_ENABLED'
15
16
  ENV_NATIVE_SPAN_EVENTS = 'DD_TRACE_NATIVE_SPAN_EVENTS'
16
17
 
@@ -47,8 +48,8 @@ module Datadog
47
48
  PROPAGATION_STYLE_BAGGAGE = 'baggage'
48
49
 
49
50
  PROPAGATION_STYLE_SUPPORTED = [PROPAGATION_STYLE_DATADOG, PROPAGATION_STYLE_B3_MULTI_HEADER,
50
- PROPAGATION_STYLE_B3_SINGLE_HEADER, PROPAGATION_STYLE_TRACE_CONTEXT,
51
- PROPAGATION_STYLE_BAGGAGE].freeze
51
+ PROPAGATION_STYLE_B3_SINGLE_HEADER, PROPAGATION_STYLE_TRACE_CONTEXT,
52
+ PROPAGATION_STYLE_BAGGAGE].freeze
52
53
 
53
54
  # Sets both extract and inject propagation style tho the provided value.
54
55
  # Has lower precedence than `DD_TRACE_PROPAGATION_STYLE_INJECT` or
@@ -170,6 +170,23 @@ module Datadog
170
170
  o.setter { |header_tags, _| Configuration::HTTP::HeaderTags.new(header_tags) }
171
171
  end
172
172
 
173
+ # Comma-separated list of baggage keys that should be converted to span tags.
174
+ #
175
+ # Baggage keys matching the exact, case-sensitive names in this list will be converted
176
+ # to span tags with the prefix "baggage.".
177
+ #
178
+ # Special values:
179
+ # * Empty string ("") disables baggage tag conversion
180
+ # * Wildcard ("*") converts all baggage keys to span tags
181
+ #
182
+ # @default `DD_TRACE_BAGGAGE_TAG_KEYS` environment variable, otherwise `"user.id,session.id,account.id"`
183
+ # @return [Array<String>, Symbol, nil] processed baggage tag keys configuration
184
+ option :baggage_tag_keys do |o|
185
+ o.env Configuration::Ext::ENV_BAGGAGE_TAG_KEYS
186
+ o.type :array
187
+ o.default ['user.id', 'session.id', 'account.id']
188
+ end
189
+
173
190
  # Enable 128 bit trace id generation.
174
191
  #
175
192
  # @default `DD_TRACE_128_BIT_TRACEID_GENERATION_ENABLED` environment variable, otherwise `true`
@@ -53,7 +53,7 @@ module Datadog
53
53
 
54
54
  # Creates a copy of the context, when forked.
55
55
  def fork_clone
56
- forked_trace = @active_trace && @active_trace.fork_clone
56
+ forked_trace = @active_trace&.fork_clone
57
57
  self.class.new(trace: forked_trace)
58
58
  end
59
59
 
@@ -61,7 +61,7 @@ module Datadog
61
61
 
62
62
  def set_active_trace!(trace)
63
63
  # Don't retain finished traces
64
- @active_trace = trace && !trace.finished? ? trace : nil
64
+ @active_trace = (trace && !trace.finished?) ? trace : nil
65
65
  end
66
66
  end
67
67
  end
@@ -20,7 +20,7 @@ module Datadog
20
20
  module ClassMethods
21
21
  def span_options
22
22
  if configuration[:service_name]
23
- { service: configuration[:service_name] }
23
+ {service: configuration[:service_name]}
24
24
  else
25
25
  {}
26
26
  end
@@ -22,7 +22,7 @@ module Datadog
22
22
  end
23
23
 
24
24
  def self.version
25
- Gem.loaded_specs['actioncable'] && Gem.loaded_specs['actioncable'].version
25
+ Gem.loaded_specs['actioncable']&.version
26
26
  end
27
27
 
28
28
  def self.loaded?
@@ -23,7 +23,7 @@ module Datadog
23
23
  end
24
24
 
25
25
  def self.version
26
- Gem.loaded_specs['actionmailer'] && Gem.loaded_specs['actionmailer'].version
26
+ Gem.loaded_specs['actionmailer']&.version
27
27
  end
28
28
 
29
29
  def self.loaded?
@@ -42,7 +42,7 @@ module Datadog
42
42
 
43
43
  span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
44
44
  span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_CONTROLLER)
45
- rescue StandardError => e
45
+ rescue => e
46
46
  Datadog.logger.error(e.message)
47
47
  Datadog::Core::Telemetry::Logger.report(e)
48
48
  end
@@ -87,7 +87,7 @@ module Datadog
87
87
  ensure
88
88
  span.finish
89
89
  end
90
- rescue StandardError => e
90
+ rescue => e
91
91
  Datadog.logger.error(e.message)
92
92
  Datadog::Core::Telemetry::Logger.report(e)
93
93
  end
@@ -115,7 +115,7 @@ module Datadog
115
115
  begin
116
116
  # process and catch request exceptions
117
117
  Instrumentation.start_processing(payload)
118
- result = super(*args)
118
+ result = super
119
119
  status = datadog_response_status
120
120
  payload[:status] = status unless status.nil?
121
121
  result
@@ -146,7 +146,7 @@ module Datadog
146
146
  when Array
147
147
  # Likely a Rack response array: first element is the status.
148
148
  status = response.first
149
- status.class <= Integer ? status : nil
149
+ (status.class <= Integer) ? status : nil
150
150
  end
151
151
  end
152
152
  end
@@ -23,7 +23,7 @@ module Datadog
23
23
  end
24
24
 
25
25
  def self.version
26
- Gem.loaded_specs['actionpack'] && Gem.loaded_specs['actionpack'].version
26
+ Gem.loaded_specs['actionpack']&.version
27
27
  end
28
28
 
29
29
  def self.loaded?
@@ -46,7 +46,7 @@ module Datadog
46
46
  Contrib::Analytics.set_measured(span)
47
47
 
48
48
  record_exception(span, payload)
49
- rescue StandardError => e
49
+ rescue => e
50
50
  Datadog.logger.debug(e.message)
51
51
  end
52
52
  end
@@ -29,10 +29,10 @@ module Datadog
29
29
 
30
30
  def set_common_tags(span, payload)
31
31
  adapter_name = if payload[:adapter].is_a?(Class)
32
- payload[:adapter].name
33
- else
34
- payload[:adapter].class.name
35
- end
32
+ payload[:adapter].name
33
+ else
34
+ payload[:adapter].class.name
35
+ end
36
36
  span.set_tag(Ext::TAG_ADAPTER, adapter_name)
37
37
 
38
38
  span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
@@ -44,10 +44,10 @@ module Datadog
44
44
  span.set_tag(Ext::TAG_JOB_EXECUTIONS, job.executions) if job.respond_to?(:executions)
45
45
 
46
46
  job_scheduled_at = if job.respond_to?(:scheduled_at)
47
- job.scheduled_at
48
- elsif job.respond_to?(:enqueued_at)
49
- job.enqueued_at
50
- end
47
+ job.scheduled_at
48
+ elsif job.respond_to?(:enqueued_at)
49
+ job.enqueued_at
50
+ end
51
51
  span.set_tag(Ext::TAG_JOB_SCHEDULED_AT, Time.at(job_scheduled_at)) if job_scheduled_at
52
52
  end
53
53
  end
@@ -39,7 +39,7 @@ module Datadog
39
39
 
40
40
  set_common_tags(span, payload)
41
41
  span.set_tag(Ext::TAG_JOB_ERROR, payload[:error])
42
- rescue StandardError => e
42
+ rescue => e
43
43
  Datadog.logger.debug(e.message)
44
44
  end
45
45
  end
@@ -38,7 +38,7 @@ module Datadog
38
38
  end
39
39
 
40
40
  set_common_tags(span, payload)
41
- rescue StandardError => e
41
+ rescue => e
42
42
  Datadog.logger.debug(e.message)
43
43
  end
44
44
  end
@@ -38,7 +38,7 @@ module Datadog
38
38
  end
39
39
 
40
40
  set_common_tags(span, payload)
41
- rescue StandardError => e
41
+ rescue => e
42
42
  Datadog.logger.debug(e.message)
43
43
  end
44
44
  end
@@ -40,7 +40,7 @@ module Datadog
40
40
  set_common_tags(span, payload)
41
41
  span.set_tag(Ext::TAG_JOB_ERROR, payload[:error])
42
42
  span.set_tag(Ext::TAG_JOB_RETRY_WAIT, payload[:wait])
43
- rescue StandardError => e
43
+ rescue => e
44
44
  Datadog.logger.debug(e.message)
45
45
  end
46
46
  end
@@ -38,7 +38,7 @@ module Datadog
38
38
  end
39
39
 
40
40
  set_common_tags(span, payload)
41
- rescue StandardError => e
41
+ rescue => e
42
42
  Datadog.logger.debug(e.message)
43
43
  end
44
44
  end
@@ -39,7 +39,7 @@ module Datadog
39
39
 
40
40
  set_common_tags(span, payload)
41
41
  span.set_tag(Ext::TAG_JOB_ERROR, payload[:error])
42
- rescue StandardError => e
42
+ rescue => e
43
43
  Datadog.logger.debug(e.message)
44
44
  end
45
45
  end
@@ -22,7 +22,7 @@ module Datadog
22
22
  end
23
23
 
24
24
  def self.version
25
- Gem.loaded_specs['activejob'] && Gem.loaded_specs['activejob'].version
25
+ Gem.loaded_specs['activejob']&.version
26
26
  end
27
27
 
28
28
  def self.loaded?
@@ -34,7 +34,7 @@ module Datadog
34
34
  span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_RENDER)
35
35
 
36
36
  set_common_tags(span, payload)
37
- rescue StandardError => e
37
+ rescue => e
38
38
  Datadog.logger.debug(e.message)
39
39
  end
40
40
  end
@@ -18,9 +18,9 @@ module Datadog
18
18
 
19
19
  def supported?
20
20
  Gem.loaded_specs['active_model_serializers'] \
21
- && ( \
21
+ && (
22
22
  Gem.loaded_specs['active_model_serializers'].version >= Gem::Version.new('0.9') \
23
- && Gem.loaded_specs['active_model_serializers'].version < Gem::Version.new('0.10') \
23
+ && Gem.loaded_specs['active_model_serializers'].version < Gem::Version.new('0.10')
24
24
  )
25
25
  end
26
26
 
@@ -36,7 +36,7 @@ module Datadog
36
36
  span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_SERIALIZE)
37
37
 
38
38
  set_common_tags(span, payload)
39
- rescue StandardError => e
39
+ rescue => e
40
40
  Datadog.logger.debug(e.message)
41
41
  end
42
42
  end
@@ -18,8 +18,7 @@ module Datadog
18
18
  register_as :active_model_serializers
19
19
 
20
20
  def self.version
21
- Gem.loaded_specs['active_model_serializers'] \
22
- && Gem.loaded_specs['active_model_serializers'].version
21
+ Gem.loaded_specs['active_model_serializers']&.version
23
22
  end
24
23
 
25
24
  def self.loaded?
@@ -75,7 +75,7 @@ module Datadog
75
75
  # hence provide a succinct summary for the error logging.
76
76
  #
77
77
  Datadog.logger.error(
78
- 'Failed to resolve ActiveRecord database configuration. '\
78
+ 'Failed to resolve ActiveRecord database configuration. ' \
79
79
  "Cause: #{e.class.name} Source: #{Array(e.backtrace).first}"
80
80
  )
81
81
  Core::Telemetry::Logger.report(e, description: 'Failed to resolve ActiveRecord database configuration')
@@ -48,7 +48,7 @@ module Datadog
48
48
 
49
49
  span.set_tag(Ext::TAG_INSTANTIATION_CLASS_NAME, payload.fetch(:class_name))
50
50
  span.set_tag(Ext::TAG_INSTANTIATION_RECORD_COUNT, payload.fetch(:record_count))
51
- rescue StandardError => e
51
+ rescue => e
52
52
  Datadog.logger.error(e.message)
53
53
  Datadog::Core::Telemetry::Logger.report(e)
54
54
  end
@@ -35,10 +35,10 @@ module Datadog
35
35
  settings = Datadog.configuration.tracing[:active_record, config]
36
36
  adapter_name = Contrib::Utils::Database.normalize_vendor(config[:adapter])
37
37
  service_name = if settings.service_name != Contrib::Utils::Database::VENDOR_DEFAULT
38
- settings.service_name
39
- else
40
- adapter_name
41
- end
38
+ settings.service_name
39
+ else
40
+ adapter_name
41
+ end
42
42
 
43
43
  span.name = "#{adapter_name}.query"
44
44
  span.service = service_name
@@ -68,7 +68,7 @@ module Datadog
68
68
  span.set_tag(Ext::TAG_DB_CACHED, cached) if cached
69
69
  span.set_tag(Tracing::Metadata::Ext::NET::TAG_TARGET_HOST, config[:host]) if config[:host]
70
70
  span.set_tag(Tracing::Metadata::Ext::NET::TAG_TARGET_PORT, config[:port]) if config[:port]
71
- rescue StandardError => e
71
+ rescue => e
72
72
  Datadog.logger.error(e.message)
73
73
  Datadog::Core::Telemetry::Logger.report(e)
74
74
  end
@@ -27,7 +27,7 @@ module Datadog
27
27
  end
28
28
 
29
29
  def self.version
30
- Gem.loaded_specs['activerecord'] && Gem.loaded_specs['activerecord'].version
30
+ Gem.loaded_specs['activerecord']&.version
31
31
  end
32
32
 
33
33
  def self.loaded?
@@ -39,17 +39,17 @@ module Datadog
39
39
  return default_connection_config if connection.nil? && connection_id.nil?
40
40
 
41
41
  conn = if !connection.nil?
42
- # Since Rails 6.0, the connection object
43
- # is directly available.
44
- connection
45
- else
46
- # For Rails < 6.0, only the `connection_id`
47
- # is available. We have to find the connection
48
- # object from it.
49
- connection_from_id(connection_id)
50
- end
42
+ # Since Rails 6.0, the connection object
43
+ # is directly available.
44
+ connection
45
+ else
46
+ # For Rails < 6.0, only the `connection_id`
47
+ # is available. We have to find the connection
48
+ # object from it.
49
+ connection_from_id(connection_id)
50
+ end
51
51
 
52
- if conn && conn.instance_variable_defined?(:@config)
52
+ if conn&.instance_variable_defined?(:@config)
53
53
  conn.instance_variable_get(:@config)
54
54
  else
55
55
  EMPTY_CONFIG
@@ -102,14 +102,14 @@ module Datadog
102
102
  return @default_connection_config if instance_variable_defined?(:@default_connection_config)
103
103
 
104
104
  current_connection_name = if ::ActiveRecord::Base.respond_to?(:connection_specification_name)
105
- ::ActiveRecord::Base.connection_specification_name
106
- else
107
- ::ActiveRecord::Base
108
- end
105
+ ::ActiveRecord::Base.connection_specification_name
106
+ else
107
+ ::ActiveRecord::Base
108
+ end
109
109
 
110
110
  connection_pool = ::ActiveRecord::Base.connection_handler.retrieve_connection_pool(current_connection_name)
111
111
  connection_pool.nil? ? EMPTY_CONFIG : (@default_connection_config = db_config(connection_pool))
112
- rescue StandardError
112
+ rescue
113
113
  EMPTY_CONFIG
114
114
  end
115
115
 
@@ -38,11 +38,11 @@ module Datadog
38
38
 
39
39
  # DEV: Look for other uses of `ActiveSupport::Cache::Store#instrument`, to find other useful event keys.
40
40
  MAPPING = {
41
- 'cache_delete.active_support' => { resource: Ext::RESOURCE_CACHE_DELETE },
42
- 'cache_read.active_support' => { resource: Ext::RESOURCE_CACHE_GET },
43
- 'cache_read_multi.active_support' => { resource: Ext::RESOURCE_CACHE_MGET, multi_key: true },
44
- 'cache_write.active_support' => { resource: Ext::RESOURCE_CACHE_SET },
45
- 'cache_write_multi.active_support' => { resource: Ext::RESOURCE_CACHE_MSET, multi_key: true }
41
+ 'cache_delete.active_support' => {resource: Ext::RESOURCE_CACHE_DELETE},
42
+ 'cache_read.active_support' => {resource: Ext::RESOURCE_CACHE_GET},
43
+ 'cache_read_multi.active_support' => {resource: Ext::RESOURCE_CACHE_MGET, multi_key: true},
44
+ 'cache_write.active_support' => {resource: Ext::RESOURCE_CACHE_SET},
45
+ 'cache_write_multi.active_support' => {resource: Ext::RESOURCE_CACHE_MSET, multi_key: true}
46
46
  }.freeze
47
47
 
48
48
  def trace?(event, payload)
@@ -93,7 +93,7 @@ module Datadog
93
93
  if Datadog.configuration.tracing[:active_support][:cache_key].enabled
94
94
  set_cache_key(span, key, mapping[:multi_key])
95
95
  end
96
- rescue StandardError => e
96
+ rescue => e
97
97
  Datadog.logger.error(e.message)
98
98
  Datadog::Core::Telemetry::Logger.report(e)
99
99
  end
@@ -24,7 +24,7 @@ module Datadog
24
24
  end
25
25
 
26
26
  def self.version
27
- Gem.loaded_specs['activesupport'] && Gem.loaded_specs['activesupport'].version
27
+ Gem.loaded_specs['activesupport']&.version
28
28
  end
29
29
 
30
30
  def self.loaded?
@@ -67,7 +67,8 @@ module Datadog
67
67
  payload[:exception] # Fallback for ActiveSupport < 5.0
68
68
  end
69
69
 
70
- def on_start(_span, _event, _id, _payload); end
70
+ def on_start(_span, _event, _id, _payload)
71
+ end
71
72
 
72
73
  def on_finish(span, _event, _id, payload)
73
74
  record_exception(span, payload)
@@ -122,8 +122,8 @@ module Datadog
122
122
  end
123
123
 
124
124
  def run(span, name, id, payload)
125
- @block.call(span, name, id, payload) if @block
126
- rescue StandardError => e
125
+ @block&.call(span, name, id, payload)
126
+ rescue => e
127
127
  Datadog.logger.debug(
128
128
  "ActiveSupport::Notifications handler for '#{name}' failed: #{e.class.name} #{e.message}"
129
129
  )
@@ -144,13 +144,11 @@ module Datadog
144
144
 
145
145
  def run(event, key, *args)
146
146
  blocks_for(key).each do |callback|
147
- begin
148
- callback.call(event, key, *args)
149
- rescue StandardError => e
150
- Datadog.logger.debug(
151
- "ActiveSupport::Notifications '#{key}' callback for '#{event}' failed: #{e.class.name} #{e.message}"
152
- )
153
- end
147
+ callback.call(event, key, *args)
148
+ rescue => e
149
+ Datadog.logger.debug(
150
+ "ActiveSupport::Notifications '#{key}' callback for '#{event}' failed: #{e.class.name} #{e.message}"
151
+ )
154
152
  end
155
153
  end
156
154
 
@@ -33,7 +33,7 @@ module Datadog
33
33
  TAG_RULE_NAME = 'rulename'
34
34
  TAG_STATE_MACHINE_NAME = 'statemachinename'
35
35
  TAG_BUCKET_NAME = 'bucketname'
36
- PEER_SERVICE_SOURCES = Array[TAG_QUEUE_NAME,
36
+ PEER_SERVICE_SOURCES = [TAG_QUEUE_NAME,
37
37
  TAG_TOPIC_NAME,
38
38
  TAG_STREAM_NAME,
39
39
  TAG_TABLE_NAME,
@@ -87,7 +87,7 @@ module Datadog
87
87
  span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_STATUS_CODE, context.safely(:status_code))
88
88
 
89
89
  Contrib::SpanAttributeSchema.set_peer_service!(span, Ext::PEER_SERVICE_SOURCES)
90
- rescue StandardError => e
90
+ rescue => e
91
91
  Datadog.logger.error(e.message)
92
92
  Datadog::Core::Telemetry::Logger.report(e)
93
93
  end
@@ -123,7 +123,7 @@ module Datadog
123
123
  request.handlers.remove(Handler)
124
124
  end
125
125
 
126
- super(*args, &block)
126
+ super
127
127
  end
128
128
 
129
129
  ruby2_keywords :sign_but_dont_send if respond_to?(:ruby2_keywords, true)
@@ -11,7 +11,9 @@ module Datadog
11
11
  end
12
12
 
13
13
  def safely(attr, fallback = nil)
14
- public_send(attr) rescue fallback
14
+ public_send(attr)
15
+ rescue
16
+ fallback
15
17
  end
16
18
 
17
19
  def resource
@@ -43,7 +43,11 @@ module Datadog
43
43
  available_services.each_with_object([]) do |service, constants|
44
44
  next if ::Aws.autoload?(service)
45
45
 
46
- constants << ::Aws.const_get(service, false).const_get(:Client, false) rescue next
46
+ begin
47
+ constants << ::Aws.const_get(service, false).const_get(:Client, false)
48
+ rescue
49
+ next
50
+ end
47
51
  end
48
52
  end
49
53
 
@@ -7,7 +7,8 @@ module Datadog
7
7
  module Service
8
8
  # Base class for all AWS service-specific tag handlers.
9
9
  class Base
10
- def add_tags(span, params); end
10
+ def add_tags(span, params)
11
+ end
11
12
  end
12
13
  end
13
14
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative './base'
3
+ require_relative 'base'
4
4
  require_relative '../ext'
5
5
 
6
6
  module Datadog
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative './base'
3
+ require_relative 'base'
4
4
  require_relative '../ext'
5
5
 
6
6
  module Datadog
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative './base'
3
+ require_relative 'base'
4
4
  require_relative '../ext'
5
5
 
6
6
  module Datadog
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative './base'
3
+ require_relative 'base'
4
4
  require_relative '../ext'
5
5
 
6
6
  module Datadog
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative './base'
3
+ require_relative 'base'
4
4
  require_relative '../ext'
5
5
 
6
6
  module Datadog
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative './base'
3
+ require_relative 'base'
4
4
  require_relative '../ext'
5
5
 
6
6
  module Datadog
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative './base'
3
+ require_relative 'base'
4
4
  require_relative '../ext'
5
5
 
6
6
  module Datadog
@@ -1,12 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative './service/sqs'
4
- require_relative './service/sns'
5
- require_relative './service/dynamodb'
6
- require_relative './service/kinesis'
7
- require_relative './service/eventbridge'
8
- require_relative './service/states'
9
- require_relative './service/s3'
3
+ require_relative 'service/sqs'
4
+ require_relative 'service/sns'
5
+ require_relative 'service/dynamodb'
6
+ require_relative 'service/kinesis'
7
+ require_relative 'service/eventbridge'
8
+ require_relative 'service/states'
9
+ require_relative 'service/s3'
10
10
 
11
11
  module Datadog
12
12
  module Tracing
@@ -9,7 +9,7 @@ module Datadog
9
9
  # This patches the Async - to wrap executor service using ContextCompositeExecutorService
10
10
  module AsyncPatch
11
11
  def initialize(delegate)
12
- super(delegate)
12
+ super
13
13
 
14
14
  @executor = ContextCompositeExecutorService.new(@executor)
15
15
  end