datadog 2.18.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 (297) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +73 -1
  3. data/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +51 -10
  4. data/ext/datadog_profiling_native_extension/collectors_stack.c +58 -49
  5. data/ext/datadog_profiling_native_extension/collectors_stack.h +2 -1
  6. data/ext/datadog_profiling_native_extension/collectors_thread_context.c +5 -6
  7. data/ext/datadog_profiling_native_extension/collectors_thread_context.h +1 -1
  8. data/ext/datadog_profiling_native_extension/private_vm_api_access.c +37 -26
  9. data/ext/datadog_profiling_native_extension/private_vm_api_access.h +0 -1
  10. data/ext/datadog_profiling_native_extension/ruby_helpers.h +1 -1
  11. data/ext/libdatadog_api/extconf.rb +3 -1
  12. data/ext/libdatadog_extconf_helpers.rb +13 -3
  13. data/lib/datadog/appsec/api_security/route_extractor.rb +7 -1
  14. data/lib/datadog/appsec/component.rb +3 -13
  15. data/lib/datadog/appsec/context.rb +23 -0
  16. data/lib/datadog/appsec/contrib/devise/patches/signin_tracking_patch.rb +2 -1
  17. data/lib/datadog/appsec/contrib/devise/patches/signup_tracking_patch.rb +2 -1
  18. data/lib/datadog/appsec/contrib/excon/ssrf_detection_middleware.rb +0 -1
  19. data/lib/datadog/appsec/contrib/faraday/ssrf_detection_middleware.rb +0 -1
  20. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +14 -22
  21. data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +23 -2
  22. data/lib/datadog/appsec/contrib/rails/patcher.rb +14 -26
  23. data/lib/datadog/appsec/contrib/rails/patches/process_action_patch.rb +27 -0
  24. data/lib/datadog/appsec/contrib/rails/patches/render_to_body_patch.rb +33 -0
  25. data/lib/datadog/appsec/contrib/rest_client/request_ssrf_detection_patch.rb +0 -1
  26. data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +23 -0
  27. data/lib/datadog/appsec/contrib/sinatra/patcher.rb +8 -18
  28. data/lib/datadog/appsec/contrib/sinatra/patches/json_patch.rb +31 -0
  29. data/lib/datadog/appsec/event.rb +3 -18
  30. data/lib/datadog/appsec/instrumentation/gateway/argument.rb +17 -1
  31. data/lib/datadog/appsec/metrics/collector.rb +7 -3
  32. data/lib/datadog/appsec/metrics/telemetry.rb +1 -1
  33. data/lib/datadog/appsec/metrics/telemetry_exporter.rb +28 -0
  34. data/lib/datadog/appsec/metrics.rb +1 -0
  35. data/lib/datadog/appsec/security_engine/engine.rb +14 -32
  36. data/lib/datadog/appsec/security_engine/result.rb +16 -0
  37. data/lib/datadog/appsec/security_engine/runner.rb +18 -4
  38. data/lib/datadog/appsec/thread_safe_ref.rb +61 -0
  39. data/lib/datadog/appsec/trace_keeper.rb +24 -0
  40. data/lib/datadog/appsec/utils/hash_coercion.rb +23 -0
  41. data/lib/datadog/appsec.rb +0 -7
  42. data/lib/datadog/auto_instrument_base.rb +2 -1
  43. data/lib/datadog/core/configuration/option.rb +29 -20
  44. data/lib/datadog/core/configuration/option_definition.rb +2 -2
  45. data/lib/datadog/core/configuration/options.rb +13 -7
  46. data/lib/datadog/core/configuration/settings.rb +20 -0
  47. data/lib/datadog/core/telemetry/component.rb +8 -4
  48. data/lib/datadog/core/telemetry/event/app_started.rb +21 -3
  49. data/lib/datadog/di/boot.rb +7 -0
  50. data/lib/datadog/di/component.rb +7 -0
  51. data/lib/datadog/di/instrumenter.rb +11 -18
  52. data/lib/datadog/di/probe_file_loader/railtie.rb +15 -0
  53. data/lib/datadog/di/probe_file_loader.rb +82 -0
  54. data/lib/datadog/di/probe_notification_builder.rb +21 -16
  55. data/lib/datadog/di/remote.rb +3 -5
  56. data/lib/datadog/di/serializer.rb +6 -2
  57. data/lib/datadog/di.rb +0 -7
  58. data/lib/datadog/kit/appsec/events/v2.rb +196 -0
  59. data/lib/datadog/kit/appsec/events.rb +11 -10
  60. data/lib/datadog/kit/identity.rb +17 -11
  61. data/lib/datadog/opentelemetry/api/baggage.rb +2 -2
  62. data/lib/datadog/opentelemetry/api/context.rb +10 -9
  63. data/lib/datadog/opentelemetry/sdk/propagator.rb +4 -4
  64. data/lib/datadog/opentelemetry/sdk/span_processor.rb +8 -8
  65. data/lib/datadog/opentelemetry/sdk/trace/span.rb +14 -10
  66. data/lib/datadog/opentelemetry/trace.rb +4 -4
  67. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +2 -0
  68. data/lib/datadog/profiling/collectors/info.rb +41 -0
  69. data/lib/datadog/profiling/component.rb +1 -0
  70. data/lib/datadog/profiling/exporter.rb +9 -3
  71. data/lib/datadog/profiling/sequence_tracker.rb +44 -0
  72. data/lib/datadog/profiling/tag_builder.rb +2 -0
  73. data/lib/datadog/profiling.rb +7 -8
  74. data/lib/datadog/single_step_instrument.rb +9 -0
  75. data/lib/datadog/tracing/analytics.rb +1 -1
  76. data/lib/datadog/tracing/buffer.rb +7 -7
  77. data/lib/datadog/tracing/configuration/dynamic.rb +4 -6
  78. data/lib/datadog/tracing/configuration/ext.rb +3 -2
  79. data/lib/datadog/tracing/configuration/settings.rb +17 -0
  80. data/lib/datadog/tracing/context.rb +2 -2
  81. data/lib/datadog/tracing/contrib/action_cable/event.rb +1 -1
  82. data/lib/datadog/tracing/contrib/action_cable/integration.rb +1 -1
  83. data/lib/datadog/tracing/contrib/action_mailer/integration.rb +1 -1
  84. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +4 -4
  85. data/lib/datadog/tracing/contrib/action_pack/integration.rb +1 -1
  86. data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +1 -1
  87. data/lib/datadog/tracing/contrib/active_job/event.rb +8 -8
  88. data/lib/datadog/tracing/contrib/active_job/events/discard.rb +1 -1
  89. data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +1 -1
  90. data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +1 -1
  91. data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +1 -1
  92. data/lib/datadog/tracing/contrib/active_job/events/perform.rb +1 -1
  93. data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +1 -1
  94. data/lib/datadog/tracing/contrib/active_job/integration.rb +1 -1
  95. data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +1 -1
  96. data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +3 -3
  97. data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +1 -2
  98. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +1 -1
  99. data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +1 -1
  100. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +5 -5
  101. data/lib/datadog/tracing/contrib/active_record/integration.rb +1 -1
  102. data/lib/datadog/tracing/contrib/active_record/utils.rb +15 -15
  103. data/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb +13 -7
  104. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +13 -0
  105. data/lib/datadog/tracing/contrib/active_support/integration.rb +1 -1
  106. data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +2 -1
  107. data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +7 -9
  108. data/lib/datadog/tracing/contrib/aws/ext.rb +1 -1
  109. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +2 -2
  110. data/lib/datadog/tracing/contrib/aws/parsed_context.rb +3 -1
  111. data/lib/datadog/tracing/contrib/aws/patcher.rb +5 -1
  112. data/lib/datadog/tracing/contrib/aws/service/base.rb +2 -1
  113. data/lib/datadog/tracing/contrib/aws/service/dynamodb.rb +1 -1
  114. data/lib/datadog/tracing/contrib/aws/service/eventbridge.rb +1 -1
  115. data/lib/datadog/tracing/contrib/aws/service/kinesis.rb +1 -1
  116. data/lib/datadog/tracing/contrib/aws/service/s3.rb +1 -1
  117. data/lib/datadog/tracing/contrib/aws/service/sns.rb +1 -1
  118. data/lib/datadog/tracing/contrib/aws/service/sqs.rb +1 -1
  119. data/lib/datadog/tracing/contrib/aws/service/states.rb +1 -1
  120. data/lib/datadog/tracing/contrib/aws/services.rb +7 -7
  121. data/lib/datadog/tracing/contrib/concurrent_ruby/async_patch.rb +1 -1
  122. data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +1 -1
  123. data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +1 -1
  124. data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +1 -1
  125. data/lib/datadog/tracing/contrib/concurrent_ruby/promises_future_patch.rb +1 -1
  126. data/lib/datadog/tracing/contrib/configurable.rb +6 -6
  127. data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +4 -4
  128. data/lib/datadog/tracing/contrib/dalli/ext.rb +3 -2
  129. data/lib/datadog/tracing/contrib/dalli/integration.rb +1 -1
  130. data/lib/datadog/tracing/contrib/delayed_job/integration.rb +1 -1
  131. data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +3 -2
  132. data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +4 -4
  133. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +51 -53
  134. data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +5 -5
  135. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +2 -2
  136. data/lib/datadog/tracing/contrib/ethon/ext.rb +3 -2
  137. data/lib/datadog/tracing/contrib/ethon/integration.rb +1 -1
  138. data/lib/datadog/tracing/contrib/excon/ext.rb +3 -2
  139. data/lib/datadog/tracing/contrib/excon/integration.rb +1 -1
  140. data/lib/datadog/tracing/contrib/excon/middleware.rb +2 -2
  141. data/lib/datadog/tracing/contrib/ext.rb +3 -3
  142. data/lib/datadog/tracing/contrib/extensions.rb +9 -9
  143. data/lib/datadog/tracing/contrib/faraday/ext.rb +3 -2
  144. data/lib/datadog/tracing/contrib/faraday/integration.rb +1 -1
  145. data/lib/datadog/tracing/contrib/faraday/middleware.rb +4 -2
  146. data/lib/datadog/tracing/contrib/grape/endpoint.rb +8 -8
  147. data/lib/datadog/tracing/contrib/grape/integration.rb +1 -1
  148. data/lib/datadog/tracing/contrib/graphql/integration.rb +1 -1
  149. data/lib/datadog/tracing/contrib/graphql/patcher.rb +2 -2
  150. data/lib/datadog/tracing/contrib/graphql/unified_trace.rb +24 -24
  151. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +8 -8
  152. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +3 -3
  153. data/lib/datadog/tracing/contrib/grpc/distributed/fetcher.rb +1 -1
  154. data/lib/datadog/tracing/contrib/grpc/integration.rb +1 -1
  155. data/lib/datadog/tracing/contrib/hanami/ext.rb +2 -2
  156. data/lib/datadog/tracing/contrib/hanami/integration.rb +1 -1
  157. data/lib/datadog/tracing/contrib/hanami/renderer_policy_tracing.rb +1 -1
  158. data/lib/datadog/tracing/contrib/hanami/router_tracing.rb +9 -11
  159. data/lib/datadog/tracing/contrib/http/distributed/fetcher.rb +4 -4
  160. data/lib/datadog/tracing/contrib/http/ext.rb +3 -2
  161. data/lib/datadog/tracing/contrib/http/instrumentation.rb +5 -5
  162. data/lib/datadog/tracing/contrib/httpclient/ext.rb +3 -2
  163. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +3 -3
  164. data/lib/datadog/tracing/contrib/httpclient/integration.rb +1 -1
  165. data/lib/datadog/tracing/contrib/httprb/ext.rb +3 -2
  166. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +4 -4
  167. data/lib/datadog/tracing/contrib/httprb/integration.rb +1 -1
  168. data/lib/datadog/tracing/contrib/kafka/event.rb +1 -1
  169. data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +1 -1
  170. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +1 -1
  171. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +1 -1
  172. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +1 -1
  173. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +1 -1
  174. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +1 -1
  175. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +1 -1
  176. data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +1 -1
  177. data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +1 -1
  178. data/lib/datadog/tracing/contrib/kafka/integration.rb +1 -1
  179. data/lib/datadog/tracing/contrib/karafka/monitor.rb +13 -13
  180. data/lib/datadog/tracing/contrib/karafka/patcher.rb +4 -4
  181. data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +1 -1
  182. data/lib/datadog/tracing/contrib/lograge/integration.rb +1 -1
  183. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +1 -1
  184. data/lib/datadog/tracing/contrib/mongodb/ext.rb +1 -1
  185. data/lib/datadog/tracing/contrib/mongodb/integration.rb +1 -1
  186. data/lib/datadog/tracing/contrib/mongodb/parsers.rb +1 -1
  187. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +6 -6
  188. data/lib/datadog/tracing/contrib/mysql2/ext.rb +1 -1
  189. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +16 -6
  190. data/lib/datadog/tracing/contrib/mysql2/integration.rb +1 -1
  191. data/lib/datadog/tracing/contrib/opensearch/configuration/settings.rb +1 -1
  192. data/lib/datadog/tracing/contrib/opensearch/ext.rb +3 -2
  193. data/lib/datadog/tracing/contrib/opensearch/integration.rb +1 -2
  194. data/lib/datadog/tracing/contrib/opensearch/patcher.rb +68 -70
  195. data/lib/datadog/tracing/contrib/opensearch/quantize.rb +5 -5
  196. data/lib/datadog/tracing/contrib/patcher.rb +7 -9
  197. data/lib/datadog/tracing/contrib/pg/integration.rb +1 -1
  198. data/lib/datadog/tracing/contrib/presto/ext.rb +1 -1
  199. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +3 -3
  200. data/lib/datadog/tracing/contrib/presto/integration.rb +1 -1
  201. data/lib/datadog/tracing/contrib/propagation/sql_comment/comment.rb +1 -1
  202. data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +1 -1
  203. data/lib/datadog/tracing/contrib/que/integration.rb +1 -1
  204. data/lib/datadog/tracing/contrib/racecar/event.rb +1 -1
  205. data/lib/datadog/tracing/contrib/racecar/events/batch.rb +2 -2
  206. data/lib/datadog/tracing/contrib/racecar/events/consume.rb +1 -1
  207. data/lib/datadog/tracing/contrib/racecar/events/message.rb +2 -2
  208. data/lib/datadog/tracing/contrib/racecar/integration.rb +1 -1
  209. data/lib/datadog/tracing/contrib/rack/header_collection.rb +1 -1
  210. data/lib/datadog/tracing/contrib/rack/header_tagging.rb +32 -32
  211. data/lib/datadog/tracing/contrib/rack/integration.rb +1 -1
  212. data/lib/datadog/tracing/contrib/rack/middlewares.rb +21 -17
  213. data/lib/datadog/tracing/contrib/rack/patcher.rb +1 -1
  214. data/lib/datadog/tracing/contrib/rack/request_queue.rb +2 -2
  215. data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +1 -1
  216. data/lib/datadog/tracing/contrib/rails/integration.rb +1 -1
  217. data/lib/datadog/tracing/contrib/rails/log_injection.rb +1 -1
  218. data/lib/datadog/tracing/contrib/rails/middlewares.rb +1 -1
  219. data/lib/datadog/tracing/contrib/rails/patcher.rb +4 -1
  220. data/lib/datadog/tracing/contrib/rails/runner.rb +62 -40
  221. data/lib/datadog/tracing/contrib/rake/instrumentation.rb +4 -4
  222. data/lib/datadog/tracing/contrib/rake/integration.rb +1 -1
  223. data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +2 -2
  224. data/lib/datadog/tracing/contrib/redis/ext.rb +3 -2
  225. data/lib/datadog/tracing/contrib/redis/integration.rb +2 -2
  226. data/lib/datadog/tracing/contrib/redis/patcher.rb +4 -4
  227. data/lib/datadog/tracing/contrib/redis/quantize.rb +1 -1
  228. data/lib/datadog/tracing/contrib/redis/tags.rb +1 -1
  229. data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +4 -4
  230. data/lib/datadog/tracing/contrib/registry.rb +1 -1
  231. data/lib/datadog/tracing/contrib/resque/integration.rb +1 -1
  232. data/lib/datadog/tracing/contrib/resque/resque_job.rb +1 -1
  233. data/lib/datadog/tracing/contrib/rest_client/ext.rb +3 -2
  234. data/lib/datadog/tracing/contrib/rest_client/integration.rb +1 -1
  235. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +3 -3
  236. data/lib/datadog/tracing/contrib/roda/instrumentation.rb +1 -1
  237. data/lib/datadog/tracing/contrib/roda/integration.rb +1 -1
  238. data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +1 -1
  239. data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +1 -1
  240. data/lib/datadog/tracing/contrib/sequel/database.rb +5 -5
  241. data/lib/datadog/tracing/contrib/sequel/dataset.rb +1 -1
  242. data/lib/datadog/tracing/contrib/sequel/integration.rb +1 -1
  243. data/lib/datadog/tracing/contrib/sequel/utils.rb +1 -1
  244. data/lib/datadog/tracing/contrib/shoryuken/integration.rb +1 -1
  245. data/lib/datadog/tracing/contrib/sidekiq/integration.rb +1 -1
  246. data/lib/datadog/tracing/contrib/sidekiq/utils.rb +1 -1
  247. data/lib/datadog/tracing/contrib/sinatra/integration.rb +1 -1
  248. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +38 -40
  249. data/lib/datadog/tracing/contrib/sneakers/integration.rb +1 -1
  250. data/lib/datadog/tracing/contrib/stripe/integration.rb +1 -1
  251. data/lib/datadog/tracing/contrib/stripe/request.rb +1 -1
  252. data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +1 -1
  253. data/lib/datadog/tracing/contrib/trilogy/ext.rb +1 -1
  254. data/lib/datadog/tracing/contrib/trilogy/integration.rb +1 -1
  255. data/lib/datadog/tracing/contrib/utils/quantization/hash.rb +11 -11
  256. data/lib/datadog/tracing/contrib/utils/quantization/http.rb +6 -6
  257. data/lib/datadog/tracing/diagnostics/environment_logger.rb +8 -2
  258. data/lib/datadog/tracing/distributed/b3_single.rb +1 -1
  259. data/lib/datadog/tracing/distributed/baggage.rb +73 -8
  260. data/lib/datadog/tracing/distributed/datadog.rb +4 -5
  261. data/lib/datadog/tracing/distributed/datadog_tags_codec.rb +11 -13
  262. data/lib/datadog/tracing/distributed/helpers.rb +1 -1
  263. data/lib/datadog/tracing/distributed/none.rb +4 -2
  264. data/lib/datadog/tracing/distributed/propagation.rb +4 -1
  265. data/lib/datadog/tracing/distributed/propagation_policy.rb +1 -1
  266. data/lib/datadog/tracing/distributed/trace_context.rb +22 -16
  267. data/lib/datadog/tracing/event.rb +5 -7
  268. data/lib/datadog/tracing/flush.rb +1 -1
  269. data/lib/datadog/tracing/metadata/analytics.rb +1 -1
  270. data/lib/datadog/tracing/metadata/tagging.rb +4 -4
  271. data/lib/datadog/tracing/pipeline/span_filter.rb +3 -1
  272. data/lib/datadog/tracing/pipeline/span_processor.rb +3 -1
  273. data/lib/datadog/tracing/pipeline.rb +1 -1
  274. data/lib/datadog/tracing/sampling/ext.rb +0 -2
  275. data/lib/datadog/tracing/sampling/rule_sampler.rb +30 -30
  276. data/lib/datadog/tracing/sampling/span/rule_parser.rb +1 -1
  277. data/lib/datadog/tracing/sampling/span/sampler.rb +0 -7
  278. data/lib/datadog/tracing/span.rb +1 -1
  279. data/lib/datadog/tracing/span_event.rb +10 -10
  280. data/lib/datadog/tracing/span_link.rb +12 -12
  281. data/lib/datadog/tracing/span_operation.rb +31 -11
  282. data/lib/datadog/tracing/trace_digest.rb +21 -23
  283. data/lib/datadog/tracing/trace_operation.rb +84 -88
  284. data/lib/datadog/tracing/trace_segment.rb +2 -2
  285. data/lib/datadog/tracing/tracer.rb +36 -38
  286. data/lib/datadog/tracing/transport/http/client.rb +1 -1
  287. data/lib/datadog/tracing/transport/http/traces.rb +2 -2
  288. data/lib/datadog/tracing/transport/io/client.rb +5 -5
  289. data/lib/datadog/tracing/transport/io/traces.rb +4 -4
  290. data/lib/datadog/tracing/transport/statistics.rb +1 -1
  291. data/lib/datadog/tracing/transport/traces.rb +5 -5
  292. data/lib/datadog/tracing/workers/trace_writer.rb +12 -12
  293. data/lib/datadog/tracing/workers.rb +2 -2
  294. data/lib/datadog/tracing.rb +2 -2
  295. data/lib/datadog/version.rb +1 -1
  296. data/lib/datadog.rb +7 -0
  297. metadata +17 -6
@@ -33,10 +33,10 @@ module Datadog
33
33
 
34
34
  # Write to IO
35
35
  result = if block_given?
36
- yield(out, data)
37
- else
38
- write_data(out, data)
39
- end
36
+ yield(out, data)
37
+ else
38
+ write_data(out, data)
39
+ end
40
40
 
41
41
  # Generate response
42
42
  Traces::Response.new(result)
@@ -47,7 +47,7 @@ module Datadog
47
47
  end
48
48
 
49
49
  def metrics_for_exception(_exception)
50
- { api_errors: Core::Metrics::Metric.new(:api_errors, nil, 1) }
50
+ {api_errors: Core::Metrics::Metric.new(:api_errors, nil, 1)}
51
51
  end
52
52
 
53
53
  # Stat counts
@@ -66,11 +66,11 @@ module Datadog
66
66
  # number of traces
67
67
  def encode_in_chunks(traces)
68
68
  encoded_traces = if traces.respond_to?(:filter_map)
69
- # DEV Supported since Ruby 2.7, saves an intermediate object creation
70
- traces.filter_map { |t| encode_one(t) }
71
- else
72
- traces.map { |t| encode_one(t) }.reject(&:nil?)
73
- end
69
+ # DEV Supported since Ruby 2.7, saves an intermediate object creation
70
+ traces.filter_map { |t| encode_one(t) }
71
+ else
72
+ traces.map { |t| encode_one(t) }.reject(&:nil?)
73
+ end
74
74
 
75
75
  Datadog::Core::Chunker.chunk_by_size(encoded_traces, max_size).map do |chunk|
76
76
  [encoder.join(chunk), chunk.size]
@@ -45,7 +45,7 @@ module Datadog
45
45
  def write_traces(traces)
46
46
  traces = process_traces(traces)
47
47
  flush_traces(traces)
48
- rescue StandardError => e
48
+ rescue => e
49
49
  logger.warn(
50
50
  "Error while writing traces: dropped #{traces.length} items. Cause: #{e} Location: #{Array(e.backtrace).first}"
51
51
  )
@@ -119,7 +119,7 @@ module Datadog
119
119
  # WARNING: This method breaks the Liskov Substitution Principle -- TraceWriter#perform is spec'd to return the
120
120
  # result from the writer, whereas this method always returns nil.
121
121
  def perform(traces)
122
- super(traces).tap do |responses|
122
+ super.tap do |responses|
123
123
  loop_back_off! if responses.find(&:server_error?)
124
124
  end
125
125
 
@@ -152,16 +152,16 @@ module Datadog
152
152
 
153
153
  def fork_policy=(policy)
154
154
  # Translate to Workers::Async::Thread policy
155
- thread_fork_policy = case policy
156
- when Core::Workers::Async::Thread::FORK_POLICY_STOP
157
- policy
158
- when FORK_POLICY_SYNC
159
- # Stop the async thread because the writer
160
- # will bypass and run synchronously.
161
- Core::Workers::Async::Thread::FORK_POLICY_STOP
162
- else
163
- Core::Workers::Async::Thread::FORK_POLICY_RESTART
164
- end
155
+ thread_fork_policy = case policy
156
+ when Core::Workers::Async::Thread::FORK_POLICY_STOP
157
+ policy
158
+ when FORK_POLICY_SYNC
159
+ # Stop the async thread because the writer
160
+ # will bypass and run synchronously.
161
+ Core::Workers::Async::Thread::FORK_POLICY_STOP
162
+ else
163
+ Core::Workers::Async::Thread::FORK_POLICY_RESTART
164
+ end
165
165
 
166
166
  # Update thread fork policy
167
167
  super(thread_fork_policy)
@@ -53,7 +53,7 @@ module Datadog
53
53
  traces = @trace_buffer.pop
54
54
  traces = Pipeline.process!(traces)
55
55
  @trace_task.call(traces, @transport) unless @trace_task.nil? || traces.empty?
56
- rescue StandardError => e
56
+ rescue => e
57
57
  # ensures that the thread will not die because of an exception.
58
58
  # TODO[manu]: findout the reason and reschedule the send if it's not
59
59
  # a fatal exception
@@ -107,7 +107,7 @@ module Datadog
107
107
 
108
108
  private
109
109
 
110
- alias flush_data callback_traces
110
+ alias_method :flush_data, :callback_traces
111
111
 
112
112
  def perform
113
113
  loop do
@@ -81,7 +81,7 @@ module Datadog
81
81
  # @public_api
82
82
  def keep!
83
83
  trace = active_trace
84
- trace.keep! if trace
84
+ trace&.keep!
85
85
  end
86
86
 
87
87
  # (see Datadog::Tracing::TraceSegment#reject!)
@@ -89,7 +89,7 @@ module Datadog
89
89
  # @public_api
90
90
  def reject!
91
91
  trace = active_trace
92
- trace.reject! if trace
92
+ trace&.reject!
93
93
  end
94
94
 
95
95
  # (see Datadog::Tracing::Tracer#active_correlation)
@@ -3,7 +3,7 @@
3
3
  module Datadog
4
4
  module VERSION
5
5
  MAJOR = 2
6
- MINOR = 18
6
+ MINOR = 20
7
7
  PATCH = 0
8
8
  PRE = nil
9
9
  BUILD = nil
data/lib/datadog.rb CHANGED
@@ -8,5 +8,12 @@ require_relative 'datadog/tracing/contrib'
8
8
  require_relative 'datadog/profiling'
9
9
  require_relative 'datadog/appsec'
10
10
  require_relative 'datadog/di'
11
+
12
+ # Line probes will not work on Ruby < 2.6 because of lack of :script_compiled
13
+ # trace point. Activate DI automatically on supported Ruby versions but
14
+ # always load its settings so that, for example, turning DI off when
15
+ # we are on Ruby 2.5 does not produce exceptions.
16
+ require_relative 'datadog/di/boot' if RUBY_VERSION >= '2.6' && RUBY_ENGINE != 'jruby'
17
+
11
18
  require_relative 'datadog/error_tracking'
12
19
  require_relative 'datadog/kit'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: datadog
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.18.0
4
+ version: 2.20.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Datadog, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-07-04 00:00:00.000000000 Z
11
+ date: 2025-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack
@@ -50,14 +50,14 @@ dependencies:
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: 1.24.1.0.0
53
+ version: 1.24.1.1.0
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: 1.24.1.0.0
60
+ version: 1.24.1.1.0
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: libdatadog
63
63
  requirement: !ruby/object:Gem::Requirement
@@ -226,6 +226,8 @@ files:
226
226
  - lib/datadog/appsec/contrib/rails/gateway/watcher.rb
227
227
  - lib/datadog/appsec/contrib/rails/integration.rb
228
228
  - lib/datadog/appsec/contrib/rails/patcher.rb
229
+ - lib/datadog/appsec/contrib/rails/patches/process_action_patch.rb
230
+ - lib/datadog/appsec/contrib/rails/patches/render_to_body_patch.rb
229
231
  - lib/datadog/appsec/contrib/rails/request.rb
230
232
  - lib/datadog/appsec/contrib/rails/request_middleware.rb
231
233
  - lib/datadog/appsec/contrib/rest_client/integration.rb
@@ -237,6 +239,7 @@ files:
237
239
  - lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb
238
240
  - lib/datadog/appsec/contrib/sinatra/integration.rb
239
241
  - lib/datadog/appsec/contrib/sinatra/patcher.rb
242
+ - lib/datadog/appsec/contrib/sinatra/patches/json_patch.rb
240
243
  - lib/datadog/appsec/contrib/sinatra/request_middleware.rb
241
244
  - lib/datadog/appsec/event.rb
242
245
  - lib/datadog/appsec/ext.rb
@@ -249,6 +252,7 @@ files:
249
252
  - lib/datadog/appsec/metrics/collector.rb
250
253
  - lib/datadog/appsec/metrics/exporter.rb
251
254
  - lib/datadog/appsec/metrics/telemetry.rb
255
+ - lib/datadog/appsec/metrics/telemetry_exporter.rb
252
256
  - lib/datadog/appsec/monitor.rb
253
257
  - lib/datadog/appsec/monitor/gateway/watcher.rb
254
258
  - lib/datadog/appsec/processor/rule_loader.rb
@@ -261,7 +265,10 @@ files:
261
265
  - lib/datadog/appsec/security_engine/result.rb
262
266
  - lib/datadog/appsec/security_engine/runner.rb
263
267
  - lib/datadog/appsec/security_event.rb
268
+ - lib/datadog/appsec/thread_safe_ref.rb
269
+ - lib/datadog/appsec/trace_keeper.rb
264
270
  - lib/datadog/appsec/utils.rb
271
+ - lib/datadog/appsec/utils/hash_coercion.rb
265
272
  - lib/datadog/appsec/utils/http.rb
266
273
  - lib/datadog/appsec/utils/http/media_range.rb
267
274
  - lib/datadog/appsec/utils/http/media_type.rb
@@ -441,6 +448,8 @@ files:
441
448
  - lib/datadog/di/preload.rb
442
449
  - lib/datadog/di/probe.rb
443
450
  - lib/datadog/di/probe_builder.rb
451
+ - lib/datadog/di/probe_file_loader.rb
452
+ - lib/datadog/di/probe_file_loader/railtie.rb
444
453
  - lib/datadog/di/probe_manager.rb
445
454
  - lib/datadog/di/probe_notification_builder.rb
446
455
  - lib/datadog/di/probe_notifier_worker.rb
@@ -465,6 +474,7 @@ files:
465
474
  - lib/datadog/error_tracking/filters.rb
466
475
  - lib/datadog/kit.rb
467
476
  - lib/datadog/kit/appsec/events.rb
477
+ - lib/datadog/kit/appsec/events/v2.rb
468
478
  - lib/datadog/kit/enable_core_dumps.rb
469
479
  - lib/datadog/kit/identity.rb
470
480
  - lib/datadog/opentelemetry.rb
@@ -498,6 +508,7 @@ files:
498
508
  - lib/datadog/profiling/preload.rb
499
509
  - lib/datadog/profiling/profiler.rb
500
510
  - lib/datadog/profiling/scheduler.rb
511
+ - lib/datadog/profiling/sequence_tracker.rb
501
512
  - lib/datadog/profiling/stack_recorder.rb
502
513
  - lib/datadog/profiling/tag_builder.rb
503
514
  - lib/datadog/profiling/tasks/exec.rb
@@ -993,8 +1004,8 @@ licenses:
993
1004
  - Apache-2.0
994
1005
  metadata:
995
1006
  allowed_push_host: https://rubygems.org
996
- changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.18.0/CHANGELOG.md
997
- source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.18.0
1007
+ changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.20.0/CHANGELOG.md
1008
+ source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.20.0
998
1009
  post_install_message:
999
1010
  rdoc_options: []
1000
1011
  require_paths: