datadog 2.28.0 → 2.41.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 (941) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +412 -1
  3. data/bin/ddprofrb +4 -4
  4. data/ext/datadog_profiling_native_extension/clock_id.h +9 -1
  5. data/ext/datadog_profiling_native_extension/clock_id_from_mach.c +66 -0
  6. data/ext/datadog_profiling_native_extension/clock_id_from_pthread.c +1 -1
  7. data/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +281 -57
  8. data/ext/datadog_profiling_native_extension/collectors_discrete_dynamic_sampler.c +1 -1
  9. data/ext/datadog_profiling_native_extension/collectors_idle_sampling_helper.c +18 -4
  10. data/ext/datadog_profiling_native_extension/collectors_stack.c +245 -160
  11. data/ext/datadog_profiling_native_extension/collectors_stack.h +23 -4
  12. data/ext/datadog_profiling_native_extension/collectors_thread_context.c +725 -432
  13. data/ext/datadog_profiling_native_extension/collectors_thread_context.h +19 -6
  14. data/ext/datadog_profiling_native_extension/crashtracking_runtime_stacks.c +5 -4
  15. data/ext/datadog_profiling_native_extension/datadog_ruby_common.c +44 -19
  16. data/ext/datadog_profiling_native_extension/datadog_ruby_common.h +17 -12
  17. data/ext/datadog_profiling_native_extension/extconf.rb +44 -40
  18. data/ext/datadog_profiling_native_extension/gvl_profiling_helper.c +4 -43
  19. data/ext/datadog_profiling_native_extension/gvl_profiling_helper.h +15 -47
  20. data/ext/datadog_profiling_native_extension/heap_recorder.c +230 -81
  21. data/ext/datadog_profiling_native_extension/heap_recorder.h +12 -1
  22. data/ext/datadog_profiling_native_extension/http_transport.c +61 -69
  23. data/ext/datadog_profiling_native_extension/macos_sampler_thread.h +55 -0
  24. data/ext/datadog_profiling_native_extension/native_extension_helpers.rb +3 -16
  25. data/ext/datadog_profiling_native_extension/private_vm_api_access.c +300 -108
  26. data/ext/datadog_profiling_native_extension/private_vm_api_access.h +17 -9
  27. data/ext/datadog_profiling_native_extension/profiling.c +44 -5
  28. data/ext/datadog_profiling_native_extension/ruby_helpers.c +40 -34
  29. data/ext/datadog_profiling_native_extension/setup_signal_handler.c +26 -8
  30. data/ext/datadog_profiling_native_extension/setup_signal_handler.h +1 -3
  31. data/ext/datadog_profiling_native_extension/stack_recorder.c +94 -69
  32. data/ext/datadog_profiling_native_extension/stack_recorder.h +3 -1
  33. data/ext/datadog_profiling_native_extension/time_helpers.h +13 -7
  34. data/ext/datadog_profiling_native_extension/unsafe_api_calls_check.h +4 -2
  35. data/ext/libdatadog_api/crashtracker.c +12 -8
  36. data/ext/libdatadog_api/crashtracker_report_exception.c +126 -0
  37. data/ext/libdatadog_api/datadog_ruby_common.c +44 -19
  38. data/ext/libdatadog_api/datadog_ruby_common.h +17 -12
  39. data/ext/libdatadog_api/di.c +203 -0
  40. data/ext/libdatadog_api/extconf.rb +38 -44
  41. data/ext/libdatadog_api/feature_flags.c +26 -0
  42. data/ext/libdatadog_api/init.c +9 -2
  43. data/ext/libdatadog_api/trace_exporter.c +1312 -0
  44. data/ext/libdatadog_api/trace_exporter.h +5 -0
  45. data/ext/libdatadog_extconf_helpers.rb +98 -15
  46. data/lib/datadog/ai_guard/api_client.rb +9 -7
  47. data/lib/datadog/ai_guard/autoload.rb +10 -0
  48. data/lib/datadog/ai_guard/component.rb +11 -9
  49. data/lib/datadog/ai_guard/configuration.rb +106 -2
  50. data/lib/datadog/ai_guard/contrib/auto_instrument.rb +24 -0
  51. data/lib/datadog/ai_guard/contrib/rack/integration.rb +42 -0
  52. data/lib/datadog/ai_guard/contrib/rack/patcher.rb +26 -0
  53. data/lib/datadog/ai_guard/contrib/rack/request_middleware.rb +97 -0
  54. data/lib/datadog/ai_guard/contrib/rails/integration.rb +41 -0
  55. data/lib/datadog/ai_guard/contrib/rails/patcher.rb +97 -0
  56. data/lib/datadog/ai_guard/contrib/ruby_llm/chat_instrumentation.rb +41 -3
  57. data/lib/datadog/ai_guard/evaluation/content_builder.rb +31 -0
  58. data/lib/datadog/ai_guard/evaluation/content_part.rb +36 -0
  59. data/lib/datadog/ai_guard/evaluation/no_op_result.rb +3 -1
  60. data/lib/datadog/ai_guard/evaluation/request.rb +22 -17
  61. data/lib/datadog/ai_guard/evaluation/result.rb +3 -1
  62. data/lib/datadog/ai_guard/evaluation.rb +51 -7
  63. data/lib/datadog/ai_guard/ext.rb +15 -0
  64. data/lib/datadog/ai_guard.rb +34 -8
  65. data/lib/datadog/appsec/actions_handler/serializable_backtrace.rb +22 -43
  66. data/lib/datadog/appsec/actions_handler.rb +6 -6
  67. data/lib/datadog/appsec/anonymizer.rb +1 -1
  68. data/lib/datadog/appsec/api_security/endpoint_collection/grape_route_serializer.rb +2 -2
  69. data/lib/datadog/appsec/api_security/endpoint_collection/rails_collector.rb +6 -6
  70. data/lib/datadog/appsec/api_security/endpoint_collection/rails_route_serializer.rb +1 -1
  71. data/lib/datadog/appsec/api_security/endpoint_collection/sinatra_route_serializer.rb +2 -2
  72. data/lib/datadog/appsec/api_security/route_extractor.rb +26 -14
  73. data/lib/datadog/appsec/api_security/sampler.rb +5 -5
  74. data/lib/datadog/appsec/api_security.rb +1 -1
  75. data/lib/datadog/appsec/assets/blocked.html +2 -1
  76. data/lib/datadog/appsec/assets.rb +7 -7
  77. data/lib/datadog/appsec/autoload.rb +4 -4
  78. data/lib/datadog/appsec/component.rb +29 -22
  79. data/lib/datadog/appsec/compressed_json.rb +7 -7
  80. data/lib/datadog/appsec/configuration.rb +436 -1
  81. data/lib/datadog/appsec/context.rb +49 -12
  82. data/lib/datadog/appsec/contrib/active_record/instrumentation.rb +6 -6
  83. data/lib/datadog/appsec/contrib/active_record/integration.rb +4 -4
  84. data/lib/datadog/appsec/contrib/active_record/patcher.rb +7 -4
  85. data/lib/datadog/appsec/contrib/aws_lambda/gateway/watcher.rb +75 -0
  86. data/lib/datadog/appsec/contrib/aws_lambda/integration.rb +39 -0
  87. data/lib/datadog/appsec/contrib/aws_lambda/patcher.rb +30 -0
  88. data/lib/datadog/appsec/contrib/aws_lambda/waf_addresses.rb +146 -0
  89. data/lib/datadog/appsec/contrib/devise/configuration.rb +1 -1
  90. data/lib/datadog/appsec/contrib/devise/data_extractor.rb +3 -3
  91. data/lib/datadog/appsec/contrib/devise/ext.rb +20 -20
  92. data/lib/datadog/appsec/contrib/devise/integration.rb +5 -5
  93. data/lib/datadog/appsec/contrib/devise/patcher.rb +8 -8
  94. data/lib/datadog/appsec/contrib/devise/patches/signin_tracking_patch.rb +14 -13
  95. data/lib/datadog/appsec/contrib/devise/patches/signup_tracking_patch.rb +8 -8
  96. data/lib/datadog/appsec/contrib/devise/tracking_middleware.rb +24 -9
  97. data/lib/datadog/appsec/contrib/excon/integration.rb +4 -4
  98. data/lib/datadog/appsec/contrib/excon/patcher.rb +3 -1
  99. data/lib/datadog/appsec/contrib/excon/ssrf_detection_middleware.rb +118 -14
  100. data/lib/datadog/appsec/contrib/faraday/integration.rb +5 -5
  101. data/lib/datadog/appsec/contrib/faraday/patcher.rb +4 -4
  102. data/lib/datadog/appsec/contrib/faraday/ssrf_detection_middleware.rb +119 -12
  103. data/lib/datadog/appsec/contrib/graphql/appsec_trace.rb +4 -4
  104. data/lib/datadog/appsec/contrib/graphql/gateway/multiplex.rb +76 -26
  105. data/lib/datadog/appsec/contrib/graphql/gateway/watcher.rb +7 -7
  106. data/lib/datadog/appsec/contrib/graphql/integration.rb +10 -9
  107. data/lib/datadog/appsec/contrib/graphql/patcher.rb +3 -3
  108. data/lib/datadog/appsec/contrib/rack/buffered_input.rb +83 -0
  109. data/lib/datadog/appsec/contrib/rack/ext.rb +29 -29
  110. data/lib/datadog/appsec/contrib/rack/gateway/request.rb +56 -21
  111. data/lib/datadog/appsec/contrib/rack/gateway/response.rb +1 -1
  112. data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +46 -30
  113. data/lib/datadog/appsec/contrib/rack/input_peeker.rb +79 -0
  114. data/lib/datadog/appsec/contrib/rack/integration.rb +7 -7
  115. data/lib/datadog/appsec/contrib/rack/patcher.rb +3 -3
  116. data/lib/datadog/appsec/contrib/rack/request_body_middleware.rb +11 -8
  117. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +63 -52
  118. data/lib/datadog/appsec/contrib/rack/response_body.rb +36 -0
  119. data/lib/datadog/appsec/contrib/rails/gateway/request.rb +43 -4
  120. data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +25 -9
  121. data/lib/datadog/appsec/contrib/rails/integration.rb +6 -6
  122. data/lib/datadog/appsec/contrib/rails/patcher.rb +17 -17
  123. data/lib/datadog/appsec/contrib/rails/patches/process_action_patch.rb +3 -1
  124. data/lib/datadog/appsec/contrib/rails/patches/render_to_body_patch.rb +3 -3
  125. data/lib/datadog/appsec/contrib/rails/request.rb +3 -3
  126. data/lib/datadog/appsec/contrib/rails/request_middleware.rb +2 -1
  127. data/lib/datadog/appsec/contrib/rest_client/integration.rb +5 -5
  128. data/lib/datadog/appsec/contrib/rest_client/patcher.rb +3 -1
  129. data/lib/datadog/appsec/contrib/rest_client/request_ssrf_detection_patch.rb +131 -13
  130. data/lib/datadog/appsec/contrib/sinatra/gateway/request.rb +1 -1
  131. data/lib/datadog/appsec/contrib/sinatra/gateway/route_params.rb +1 -1
  132. data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +35 -12
  133. data/lib/datadog/appsec/contrib/sinatra/integration.rb +5 -5
  134. data/lib/datadog/appsec/contrib/sinatra/patcher.rb +11 -11
  135. data/lib/datadog/appsec/contrib/sinatra/patches/json_patch.rb +3 -3
  136. data/lib/datadog/appsec/contrib/sinatra/request_middleware.rb +2 -1
  137. data/lib/datadog/appsec/counter_sampler.rb +25 -0
  138. data/lib/datadog/appsec/default_header_tags.rb +52 -0
  139. data/lib/datadog/appsec/event.rb +15 -31
  140. data/lib/datadog/appsec/ext.rb +11 -10
  141. data/lib/datadog/appsec/extensions.rb +2 -2
  142. data/lib/datadog/appsec/instrumentation/gateway/middleware.rb +2 -3
  143. data/lib/datadog/appsec/instrumentation/gateway.rb +3 -16
  144. data/lib/datadog/appsec/metrics/collector.rb +18 -1
  145. data/lib/datadog/appsec/metrics/exporter.rb +17 -11
  146. data/lib/datadog/appsec/metrics/telemetry.rb +15 -3
  147. data/lib/datadog/appsec/metrics/telemetry_exporter.rb +20 -2
  148. data/lib/datadog/appsec/metrics.rb +4 -4
  149. data/lib/datadog/appsec/monitor/gateway/watcher.rb +18 -12
  150. data/lib/datadog/appsec/monitor.rb +1 -1
  151. data/lib/datadog/appsec/processor/rule_loader.rb +32 -32
  152. data/lib/datadog/appsec/rate_limiter.rb +1 -1
  153. data/lib/datadog/appsec/remote.rb +15 -9
  154. data/lib/datadog/appsec/response.rb +22 -22
  155. data/lib/datadog/appsec/route_normalizer/rails_route_pattern.rb +176 -0
  156. data/lib/datadog/appsec/route_normalizer/route_pattern.rb +378 -0
  157. data/lib/datadog/appsec/route_normalizer/route_text.rb +57 -0
  158. data/lib/datadog/appsec/route_normalizer.rb +80 -0
  159. data/lib/datadog/appsec/security_engine/engine.rb +54 -33
  160. data/lib/datadog/appsec/security_engine/runner.rb +3 -3
  161. data/lib/datadog/appsec/security_event.rb +2 -2
  162. data/lib/datadog/appsec/trace_keeper.rb +18 -6
  163. data/lib/datadog/appsec/utils/http/body.rb +41 -0
  164. data/lib/datadog/appsec/utils/http/body_reader.rb +61 -0
  165. data/lib/datadog/appsec/utils/http/media_range.rb +17 -16
  166. data/lib/datadog/appsec/utils/http/media_type.rb +28 -36
  167. data/lib/datadog/appsec/utils/http/url_encoded.rb +107 -0
  168. data/lib/datadog/appsec.rb +21 -24
  169. data/lib/datadog/auto_instrument.rb +2 -2
  170. data/lib/datadog/core/buffer/cruby.rb +1 -1
  171. data/lib/datadog/core/buffer/thread_safe.rb +1 -1
  172. data/lib/datadog/core/configuration/agent_settings.rb +1 -1
  173. data/lib/datadog/core/configuration/agent_settings_resolver.rb +15 -15
  174. data/lib/datadog/core/configuration/agentless_settings_resolver.rb +2 -2
  175. data/lib/datadog/core/configuration/base.rb +19 -7
  176. data/lib/datadog/core/configuration/components.rb +166 -36
  177. data/lib/datadog/core/configuration/components_state.rb +6 -1
  178. data/lib/datadog/core/configuration/config_helper.rb +12 -3
  179. data/lib/datadog/core/configuration/deprecations.rb +6 -6
  180. data/lib/datadog/core/configuration/ext.rb +11 -11
  181. data/lib/datadog/core/configuration/option.rb +48 -22
  182. data/lib/datadog/core/configuration/option_definition.rb +43 -17
  183. data/lib/datadog/core/configuration/options.rb +43 -9
  184. data/lib/datadog/core/configuration/settings.rb +155 -106
  185. data/lib/datadog/core/configuration/stable_config.rb +1 -1
  186. data/lib/datadog/core/configuration/supported_configurations.rb +44 -1
  187. data/lib/datadog/core/configuration.rb +11 -11
  188. data/lib/datadog/core/contrib/rails/railtie.rb +32 -0
  189. data/lib/datadog/core/contrib/rails/utils.rb +7 -3
  190. data/lib/datadog/core/crashtracking/component.rb +78 -26
  191. data/lib/datadog/core/crashtracking/tag_builder.rb +5 -5
  192. data/lib/datadog/core/deprecations.rb +1 -1
  193. data/lib/datadog/core/diagnostics/environment_logger.rb +45 -8
  194. data/lib/datadog/core/diagnostics/health.rb +2 -2
  195. data/lib/datadog/core/encoding.rb +4 -4
  196. data/lib/datadog/core/environment/agent_info.rb +65 -1
  197. data/lib/datadog/core/environment/cgroup.rb +4 -4
  198. data/lib/datadog/core/environment/container.rb +11 -11
  199. data/lib/datadog/core/environment/execution.rb +3 -3
  200. data/lib/datadog/core/environment/ext.rb +21 -15
  201. data/lib/datadog/core/environment/gc.rb +1 -1
  202. data/lib/datadog/core/environment/git.rb +2 -2
  203. data/lib/datadog/core/environment/identity.rb +47 -11
  204. data/lib/datadog/core/environment/platform.rb +8 -8
  205. data/lib/datadog/core/environment/process.rb +54 -19
  206. data/lib/datadog/core/environment/socket.rb +15 -2
  207. data/lib/datadog/core/environment/variable_helpers.rb +1 -1
  208. data/lib/datadog/core/environment/vm_cache.rb +1 -1
  209. data/lib/datadog/core/environment/yjit.rb +2 -2
  210. data/lib/datadog/core/error.rb +5 -5
  211. data/lib/datadog/core/evp.rb +11 -0
  212. data/lib/datadog/core/extensions.rb +1 -1
  213. data/lib/datadog/core/feature_flags.rb +3 -3
  214. data/lib/datadog/core/git/ext.rb +4 -4
  215. data/lib/datadog/core/knuth_sampler.rb +3 -1
  216. data/lib/datadog/core/logger.rb +4 -4
  217. data/lib/datadog/core/logging/ext.rb +1 -1
  218. data/lib/datadog/core/metrics/client.rb +26 -26
  219. data/lib/datadog/core/metrics/ext.rb +5 -5
  220. data/lib/datadog/core/metrics/helpers.rb +1 -1
  221. data/lib/datadog/core/metrics/logging.rb +3 -3
  222. data/lib/datadog/core/metrics/options.rb +5 -5
  223. data/lib/datadog/core/pin.rb +1 -1
  224. data/lib/datadog/core/process_discovery.rb +23 -22
  225. data/lib/datadog/core/rate_limiter.rb +3 -1
  226. data/lib/datadog/core/remote/client/capabilities.rb +67 -15
  227. data/lib/datadog/core/remote/client.rb +18 -18
  228. data/lib/datadog/core/remote/component.rb +70 -34
  229. data/lib/datadog/core/remote/configuration/content.rb +3 -3
  230. data/lib/datadog/core/remote/configuration/digest.rb +1 -1
  231. data/lib/datadog/core/remote/configuration/path.rb +9 -9
  232. data/lib/datadog/core/remote/configuration/repository.rb +4 -4
  233. data/lib/datadog/core/remote/configuration/target.rb +9 -9
  234. data/lib/datadog/core/remote/configuration.rb +4 -4
  235. data/lib/datadog/core/remote/ext.rb +3 -3
  236. data/lib/datadog/core/remote/negotiation.rb +1 -1
  237. data/lib/datadog/core/remote/tie/tracing.rb +7 -7
  238. data/lib/datadog/core/remote/transport/config.rb +9 -15
  239. data/lib/datadog/core/remote/transport/http/config.rb +10 -10
  240. data/lib/datadog/core/remote/transport/http/negotiation.rb +4 -4
  241. data/lib/datadog/core/remote/transport/http.rb +10 -10
  242. data/lib/datadog/core/remote/transport/negotiation.rb +3 -3
  243. data/lib/datadog/core/remote/worker.rb +5 -5
  244. data/lib/datadog/core/runtime/ext.rb +22 -22
  245. data/lib/datadog/core/runtime/metrics.rb +11 -12
  246. data/lib/datadog/core/tag_builder.rb +18 -18
  247. data/lib/datadog/core/tag_normalizer.rb +7 -7
  248. data/lib/datadog/core/telemetry/component.rb +16 -26
  249. data/lib/datadog/core/telemetry/configuration_value.rb +38 -0
  250. data/lib/datadog/core/telemetry/emitter.rb +5 -5
  251. data/lib/datadog/core/telemetry/event/app_client_configuration_change.rb +10 -9
  252. data/lib/datadog/core/telemetry/event/app_closing.rb +2 -2
  253. data/lib/datadog/core/telemetry/event/app_dependencies_loaded.rb +2 -2
  254. data/lib/datadog/core/telemetry/event/app_endpoints_loaded.rb +3 -3
  255. data/lib/datadog/core/telemetry/event/app_extended_heartbeat.rb +32 -0
  256. data/lib/datadog/core/telemetry/event/app_heartbeat.rb +2 -2
  257. data/lib/datadog/core/telemetry/event/app_integrations_change.rb +2 -2
  258. data/lib/datadog/core/telemetry/event/app_started.rb +142 -193
  259. data/lib/datadog/core/telemetry/event/base.rb +1 -1
  260. data/lib/datadog/core/telemetry/event/distributions.rb +2 -2
  261. data/lib/datadog/core/telemetry/event/generate_metrics.rb +3 -3
  262. data/lib/datadog/core/telemetry/event/log.rb +6 -6
  263. data/lib/datadog/core/telemetry/event/message_batch.rb +1 -1
  264. data/lib/datadog/core/telemetry/event/synth_app_client_configuration_change.rb +3 -3
  265. data/lib/datadog/core/telemetry/event.rb +16 -22
  266. data/lib/datadog/core/telemetry/ext.rb +11 -10
  267. data/lib/datadog/core/telemetry/logger.rb +1 -1
  268. data/lib/datadog/core/telemetry/logging.rb +5 -5
  269. data/lib/datadog/core/telemetry/metric.rb +9 -9
  270. data/lib/datadog/core/telemetry/metrics_collection.rb +2 -2
  271. data/lib/datadog/core/telemetry/metrics_manager.rb +1 -1
  272. data/lib/datadog/core/telemetry/request.rb +6 -8
  273. data/lib/datadog/core/telemetry/transport/http/telemetry.rb +16 -11
  274. data/lib/datadog/core/telemetry/transport/http.rb +7 -7
  275. data/lib/datadog/core/telemetry/transport/telemetry.rb +8 -9
  276. data/lib/datadog/core/telemetry/worker.rb +26 -6
  277. data/lib/datadog/core/transport/ext.rb +14 -13
  278. data/lib/datadog/core/transport/http/adapters/net.rb +4 -4
  279. data/lib/datadog/core/transport/http/adapters/test.rb +1 -1
  280. data/lib/datadog/core/transport/http/adapters/unix_socket.rb +4 -4
  281. data/lib/datadog/core/transport/http/api/endpoint.rb +1 -1
  282. data/lib/datadog/core/transport/http/api/map.rb +1 -1
  283. data/lib/datadog/core/transport/http/builder.rb +6 -6
  284. data/lib/datadog/core/transport/http/client.rb +2 -2
  285. data/lib/datadog/core/transport/http/response.rb +5 -1
  286. data/lib/datadog/core/transport/http.rb +9 -7
  287. data/lib/datadog/core/transport/parcel.rb +61 -9
  288. data/lib/datadog/core/transport/response.rb +1 -1
  289. data/lib/datadog/core/transport/transport.rb +2 -2
  290. data/lib/datadog/core/utils/at_fork_monkey_patch.rb +172 -20
  291. data/lib/datadog/core/utils/base64_codec.rb +23 -0
  292. data/lib/datadog/core/utils/duration.rb +1 -1
  293. data/lib/datadog/core/utils/{array.rb → enumerable_compat.rb} +2 -2
  294. data/lib/datadog/core/utils/fnv.rb +26 -0
  295. data/lib/datadog/core/utils/forking.rb +3 -1
  296. data/lib/datadog/core/utils/hash.rb +0 -23
  297. data/lib/datadog/core/utils/lru_cache.rb +3 -3
  298. data/lib/datadog/core/utils/network.rb +11 -11
  299. data/lib/datadog/core/utils/only_once.rb +1 -1
  300. data/lib/datadog/core/utils/only_once_successful.rb +1 -1
  301. data/lib/datadog/core/utils/safe_dup.rb +2 -1
  302. data/lib/datadog/core/utils/sequence.rb +3 -6
  303. data/lib/datadog/core/utils/spawn_monkey_patch.rb +68 -0
  304. data/lib/datadog/core/utils/time.rb +18 -52
  305. data/lib/datadog/core/utils/url.rb +1 -1
  306. data/lib/datadog/core/utils.rb +5 -5
  307. data/lib/datadog/core/workers/async.rb +2 -2
  308. data/lib/datadog/core/workers/interval_loop.rb +13 -6
  309. data/lib/datadog/core/workers/polling.rb +2 -2
  310. data/lib/datadog/core/workers/queue.rb +0 -4
  311. data/lib/datadog/core/workers/runtime_metrics.rb +13 -5
  312. data/lib/datadog/core.rb +13 -6
  313. data/lib/datadog/data_streams/configuration.rb +40 -1
  314. data/lib/datadog/data_streams/ext.rb +1 -1
  315. data/lib/datadog/data_streams/extensions.rb +2 -2
  316. data/lib/datadog/data_streams/pathway_context.rb +8 -8
  317. data/lib/datadog/data_streams/processor.rb +87 -85
  318. data/lib/datadog/data_streams/transport/http/stats.rb +9 -3
  319. data/lib/datadog/data_streams/transport/http.rb +5 -9
  320. data/lib/datadog/data_streams/transport/stats.rb +10 -17
  321. data/lib/datadog/data_streams.rb +5 -5
  322. data/lib/datadog/di/base.rb +16 -8
  323. data/lib/datadog/di/boot.rb +25 -23
  324. data/lib/datadog/di/capture_expression.rb +21 -0
  325. data/lib/datadog/di/capture_expression_evaluator.rb +71 -0
  326. data/lib/datadog/di/capture_limits.rb +41 -0
  327. data/lib/datadog/di/code_tracker.rb +218 -16
  328. data/lib/datadog/di/component.rb +137 -39
  329. data/lib/datadog/di/configuration.rb +241 -2
  330. data/lib/datadog/di/context.rb +15 -3
  331. data/lib/datadog/di/contrib/active_record.rb +6 -2
  332. data/lib/datadog/di/contrib/railtie.rb +1 -1
  333. data/lib/datadog/di/contrib.rb +5 -5
  334. data/lib/datadog/di/el/compiler.rb +114 -38
  335. data/lib/datadog/di/el/evaluator.rb +82 -2
  336. data/lib/datadog/di/el/expression.rb +13 -2
  337. data/lib/datadog/di/el.rb +3 -3
  338. data/lib/datadog/di/error.rb +10 -0
  339. data/lib/datadog/di/fatal_exceptions.rb +26 -0
  340. data/lib/datadog/di/instrumenter.rb +608 -255
  341. data/lib/datadog/di/logger.rb +1 -1
  342. data/lib/datadog/di/preload.rb +1 -1
  343. data/lib/datadog/di/probe.rb +71 -3
  344. data/lib/datadog/di/probe_builder.rb +98 -15
  345. data/lib/datadog/di/probe_file_loader/railtie.rb +1 -1
  346. data/lib/datadog/di/probe_file_loader.rb +16 -11
  347. data/lib/datadog/di/probe_manager.rb +153 -73
  348. data/lib/datadog/di/probe_notification_builder.rb +218 -38
  349. data/lib/datadog/di/probe_notifier_worker.rb +111 -35
  350. data/lib/datadog/di/probe_repository.rb +198 -0
  351. data/lib/datadog/di/proc_responder.rb +4 -0
  352. data/lib/datadog/di/redactor.rb +16 -1
  353. data/lib/datadog/di/remote.rb +193 -33
  354. data/lib/datadog/di/serializer.rb +201 -39
  355. data/lib/datadog/di/transport/diagnostics.rb +10 -12
  356. data/lib/datadog/di/transport/http/diagnostics.rb +5 -3
  357. data/lib/datadog/di/transport/http/input.rb +3 -3
  358. data/lib/datadog/di/transport/http.rb +22 -13
  359. data/lib/datadog/di/transport/input.rb +65 -24
  360. data/lib/datadog/di/utils.rb +43 -15
  361. data/lib/datadog/di.rb +147 -3
  362. data/lib/datadog/error_tracking/collector.rb +3 -2
  363. data/lib/datadog/error_tracking/component.rb +12 -12
  364. data/lib/datadog/error_tracking/configuration.rb +55 -2
  365. data/lib/datadog/error_tracking/ext.rb +7 -7
  366. data/lib/datadog/error_tracking/extensions.rb +2 -2
  367. data/lib/datadog/error_tracking/filters.rb +4 -4
  368. data/lib/datadog/error_tracking.rb +6 -6
  369. data/lib/datadog/kit/appsec/events/v2.rb +91 -33
  370. data/lib/datadog/kit/appsec/events.rb +25 -25
  371. data/lib/datadog/kit/enable_core_dumps.rb +3 -3
  372. data/lib/datadog/kit/identity.rb +18 -18
  373. data/lib/datadog/kit/tracing/method_tracer.rb +135 -0
  374. data/lib/datadog/kit.rb +1 -1
  375. data/lib/datadog/open_feature/component.rb +62 -13
  376. data/lib/datadog/open_feature/configuration.rb +24 -1
  377. data/lib/datadog/open_feature/evaluation_engine.rb +9 -9
  378. data/lib/datadog/open_feature/exposures/batch_builder.rb +1 -1
  379. data/lib/datadog/open_feature/exposures/buffer.rb +1 -1
  380. data/lib/datadog/open_feature/exposures/deduplicator.rb +1 -1
  381. data/lib/datadog/open_feature/exposures/event.rb +7 -7
  382. data/lib/datadog/open_feature/exposures/reporter.rb +3 -3
  383. data/lib/datadog/open_feature/exposures/worker.rb +6 -6
  384. data/lib/datadog/open_feature/ext.rb +13 -6
  385. data/lib/datadog/open_feature/flag_evaluation/aggregator.rb +286 -0
  386. data/lib/datadog/open_feature/flag_evaluation/writer.rb +433 -0
  387. data/lib/datadog/open_feature/hooks/flag_eval_evp_hook.rb +102 -0
  388. data/lib/datadog/open_feature/hooks/flag_eval_metrics_hook.rb +51 -0
  389. data/lib/datadog/open_feature/hooks/span_enrichment_hook/codec.rb +58 -0
  390. data/lib/datadog/open_feature/hooks/span_enrichment_hook/span_enrichment_state.rb +96 -0
  391. data/lib/datadog/open_feature/hooks/span_enrichment_hook/span_enrichment_state_store.rb +49 -0
  392. data/lib/datadog/open_feature/hooks/span_enrichment_hook.rb +184 -0
  393. data/lib/datadog/open_feature/metrics/flag_eval_metrics.rb +149 -0
  394. data/lib/datadog/open_feature/native_evaluator.rb +23 -1
  395. data/lib/datadog/open_feature/noop_evaluator.rb +3 -3
  396. data/lib/datadog/open_feature/provider.rb +106 -21
  397. data/lib/datadog/open_feature/remote.rb +3 -3
  398. data/lib/datadog/open_feature/resolution_details.rb +4 -2
  399. data/lib/datadog/open_feature/transport.rb +73 -22
  400. data/lib/datadog/open_feature.rb +2 -2
  401. data/lib/datadog/opentelemetry/api/baggage.rb +3 -3
  402. data/lib/datadog/opentelemetry/api/context.rb +4 -4
  403. data/lib/datadog/opentelemetry/configuration/settings.rb +95 -28
  404. data/lib/datadog/opentelemetry/ext.rb +9 -0
  405. data/lib/datadog/opentelemetry/logs.rb +98 -0
  406. data/lib/datadog/opentelemetry/metrics.rb +17 -44
  407. data/lib/datadog/opentelemetry/sdk/configurator.rb +46 -6
  408. data/lib/datadog/opentelemetry/sdk/id_generator.rb +16 -10
  409. data/lib/datadog/opentelemetry/sdk/logs_exporter.rb +30 -0
  410. data/lib/datadog/opentelemetry/sdk/metrics_exporter.rb +9 -16
  411. data/lib/datadog/opentelemetry/sdk/propagator.rb +16 -10
  412. data/lib/datadog/opentelemetry/sdk/span_processor.rb +18 -15
  413. data/lib/datadog/opentelemetry/sdk/trace/span.rb +32 -32
  414. data/lib/datadog/opentelemetry/sdk.rb +19 -0
  415. data/lib/datadog/opentelemetry/signal_configuration.rb +53 -0
  416. data/lib/datadog/opentelemetry/trace.rb +1 -1
  417. data/lib/datadog/opentelemetry.rb +8 -7
  418. data/lib/datadog/profiling/collectors/code_provenance.rb +36 -11
  419. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +50 -3
  420. data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +12 -4
  421. data/lib/datadog/profiling/collectors/info.rb +17 -4
  422. data/lib/datadog/profiling/collectors/thread_context.rb +16 -18
  423. data/lib/datadog/profiling/component.rb +62 -33
  424. data/lib/datadog/profiling/exporter.rb +38 -13
  425. data/lib/datadog/profiling/ext/dir_monkey_patches.rb +6 -5
  426. data/lib/datadog/profiling/ext.rb +0 -2
  427. data/lib/datadog/profiling/flush.rb +21 -12
  428. data/lib/datadog/profiling/http_transport.rb +18 -8
  429. data/lib/datadog/profiling/load_native_extension.rb +2 -2
  430. data/lib/datadog/profiling/profiler.rb +28 -13
  431. data/lib/datadog/profiling/scheduler.rb +2 -2
  432. data/lib/datadog/profiling/sequence_tracker.rb +1 -1
  433. data/lib/datadog/profiling/stack_recorder.rb +0 -8
  434. data/lib/datadog/profiling/tag_builder.rb +19 -19
  435. data/lib/datadog/profiling/tasks/exec.rb +9 -4
  436. data/lib/datadog/profiling/tasks/help.rb +1 -0
  437. data/lib/datadog/profiling/tasks/setup.rb +2 -2
  438. data/lib/datadog/profiling.rb +32 -29
  439. data/lib/datadog/ruby_version.rb +25 -0
  440. data/lib/datadog/single_step_instrument.rb +2 -2
  441. data/lib/datadog/symbol_database/component.rb +734 -0
  442. data/lib/datadog/symbol_database/configuration.rb +73 -0
  443. data/lib/datadog/symbol_database/extensions.rb +19 -0
  444. data/lib/datadog/symbol_database/extractor.rb +1110 -0
  445. data/lib/datadog/symbol_database/file_hash.rb +48 -0
  446. data/lib/datadog/symbol_database/logger.rb +43 -0
  447. data/lib/datadog/symbol_database/remote.rb +195 -0
  448. data/lib/datadog/symbol_database/scope.rb +102 -0
  449. data/lib/datadog/symbol_database/scope_batcher.rb +292 -0
  450. data/lib/datadog/symbol_database/service_version.rb +66 -0
  451. data/lib/datadog/symbol_database/symbol.rb +69 -0
  452. data/lib/datadog/symbol_database/transport/http/endpoint.rb +28 -0
  453. data/lib/datadog/symbol_database/transport/http.rb +45 -0
  454. data/lib/datadog/symbol_database/transport.rb +54 -0
  455. data/lib/datadog/symbol_database/uploader.rb +230 -0
  456. data/lib/datadog/symbol_database.rb +71 -0
  457. data/lib/datadog/tracing/analytics.rb +1 -1
  458. data/lib/datadog/tracing/buffer.rb +8 -8
  459. data/lib/datadog/tracing/client_ip.rb +4 -4
  460. data/lib/datadog/tracing/component.rb +39 -7
  461. data/lib/datadog/tracing/configuration/dynamic/option.rb +4 -0
  462. data/lib/datadog/tracing/configuration/dynamic.rb +13 -11
  463. data/lib/datadog/tracing/configuration/ext.rb +52 -38
  464. data/lib/datadog/tracing/configuration/http.rb +2 -2
  465. data/lib/datadog/tracing/configuration/settings.rb +51 -17
  466. data/lib/datadog/tracing/context.rb +1 -1
  467. data/lib/datadog/tracing/context_provider.rb +2 -2
  468. data/lib/datadog/tracing/contrib/action_cable/configuration/settings.rb +2 -2
  469. data/lib/datadog/tracing/contrib/action_cable/event.rb +4 -4
  470. data/lib/datadog/tracing/contrib/action_cable/events/broadcast.rb +9 -6
  471. data/lib/datadog/tracing/contrib/action_cable/events/perform_action.rb +8 -5
  472. data/lib/datadog/tracing/contrib/action_cable/events/transmit.rb +9 -6
  473. data/lib/datadog/tracing/contrib/action_cable/events.rb +5 -5
  474. data/lib/datadog/tracing/contrib/action_cable/ext.rb +18 -18
  475. data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +8 -5
  476. data/lib/datadog/tracing/contrib/action_cable/integration.rb +7 -7
  477. data/lib/datadog/tracing/contrib/action_cable/patcher.rb +4 -4
  478. data/lib/datadog/tracing/contrib/action_mailer/configuration/settings.rb +2 -2
  479. data/lib/datadog/tracing/contrib/action_mailer/event.rb +7 -4
  480. data/lib/datadog/tracing/contrib/action_mailer/events/deliver.rb +8 -8
  481. data/lib/datadog/tracing/contrib/action_mailer/events/process.rb +4 -4
  482. data/lib/datadog/tracing/contrib/action_mailer/events.rb +3 -3
  483. data/lib/datadog/tracing/contrib/action_mailer/ext.rb +18 -18
  484. data/lib/datadog/tracing/contrib/action_mailer/integration.rb +7 -7
  485. data/lib/datadog/tracing/contrib/action_mailer/patcher.rb +3 -3
  486. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +15 -12
  487. data/lib/datadog/tracing/contrib/action_pack/action_controller/patcher.rb +2 -2
  488. data/lib/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation.rb +31 -3
  489. data/lib/datadog/tracing/contrib/action_pack/action_dispatch/patcher.rb +5 -3
  490. data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +3 -3
  491. data/lib/datadog/tracing/contrib/action_pack/ext.rb +10 -10
  492. data/lib/datadog/tracing/contrib/action_pack/integration.rb +7 -7
  493. data/lib/datadog/tracing/contrib/action_pack/patcher.rb +3 -3
  494. data/lib/datadog/tracing/contrib/action_pack/utils.rb +1 -1
  495. data/lib/datadog/tracing/contrib/action_view/configuration/settings.rb +3 -3
  496. data/lib/datadog/tracing/contrib/action_view/event.rb +1 -1
  497. data/lib/datadog/tracing/contrib/action_view/events/render_partial.rb +10 -7
  498. data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +11 -8
  499. data/lib/datadog/tracing/contrib/action_view/events.rb +3 -3
  500. data/lib/datadog/tracing/contrib/action_view/ext.rb +10 -10
  501. data/lib/datadog/tracing/contrib/action_view/integration.rb +11 -11
  502. data/lib/datadog/tracing/contrib/action_view/patcher.rb +5 -5
  503. data/lib/datadog/tracing/contrib/action_view/utils.rb +2 -2
  504. data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +2 -2
  505. data/lib/datadog/tracing/contrib/active_job/data_streams.rb +62 -0
  506. data/lib/datadog/tracing/contrib/active_job/event.rb +3 -3
  507. data/lib/datadog/tracing/contrib/active_job/events/discard.rb +10 -7
  508. data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +10 -7
  509. data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +10 -7
  510. data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +10 -7
  511. data/lib/datadog/tracing/contrib/active_job/events/perform.rb +10 -7
  512. data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +10 -7
  513. data/lib/datadog/tracing/contrib/active_job/events.rb +6 -6
  514. data/lib/datadog/tracing/contrib/active_job/ext.rb +23 -23
  515. data/lib/datadog/tracing/contrib/active_job/integration.rb +7 -7
  516. data/lib/datadog/tracing/contrib/active_job/patcher.rb +17 -5
  517. data/lib/datadog/tracing/contrib/active_model_serializers/configuration/settings.rb +2 -2
  518. data/lib/datadog/tracing/contrib/active_model_serializers/event.rb +4 -4
  519. data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +7 -7
  520. data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +8 -9
  521. data/lib/datadog/tracing/contrib/active_model_serializers/events.rb +3 -3
  522. data/lib/datadog/tracing/contrib/active_model_serializers/ext.rb +10 -10
  523. data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +5 -5
  524. data/lib/datadog/tracing/contrib/active_model_serializers/patcher.rb +3 -3
  525. data/lib/datadog/tracing/contrib/active_record/configuration/makara_resolver.rb +1 -1
  526. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +9 -9
  527. data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +4 -4
  528. data/lib/datadog/tracing/contrib/active_record/event.rb +1 -1
  529. data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +9 -9
  530. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +11 -14
  531. data/lib/datadog/tracing/contrib/active_record/events.rb +3 -3
  532. data/lib/datadog/tracing/contrib/active_record/ext.rb +15 -15
  533. data/lib/datadog/tracing/contrib/active_record/integration.rb +11 -11
  534. data/lib/datadog/tracing/contrib/active_record/patcher.rb +2 -2
  535. data/lib/datadog/tracing/contrib/active_record/utils.rb +4 -4
  536. data/lib/datadog/tracing/contrib/active_support/cache/event.rb +1 -1
  537. data/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb +14 -17
  538. data/lib/datadog/tracing/contrib/active_support/cache/events.rb +1 -1
  539. data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +5 -8
  540. data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +5 -5
  541. data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +4 -4
  542. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +3 -3
  543. data/lib/datadog/tracing/contrib/active_support/ext.rb +16 -16
  544. data/lib/datadog/tracing/contrib/active_support/integration.rb +8 -8
  545. data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +1 -1
  546. data/lib/datadog/tracing/contrib/active_support/notifications/subscriber.rb +2 -2
  547. data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +3 -3
  548. data/lib/datadog/tracing/contrib/active_support/patcher.rb +2 -2
  549. data/lib/datadog/tracing/contrib/analytics.rb +1 -1
  550. data/lib/datadog/tracing/contrib/auto_instrument.rb +4 -4
  551. data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +3 -3
  552. data/lib/datadog/tracing/contrib/aws/ext.rb +26 -26
  553. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +7 -11
  554. data/lib/datadog/tracing/contrib/aws/integration.rb +9 -9
  555. data/lib/datadog/tracing/contrib/aws/parsed_context.rb +1 -1
  556. data/lib/datadog/tracing/contrib/aws/patcher.rb +5 -5
  557. data/lib/datadog/tracing/contrib/aws/service/dynamodb.rb +2 -2
  558. data/lib/datadog/tracing/contrib/aws/service/eventbridge.rb +2 -2
  559. data/lib/datadog/tracing/contrib/aws/service/kinesis.rb +4 -4
  560. data/lib/datadog/tracing/contrib/aws/service/s3.rb +2 -2
  561. data/lib/datadog/tracing/contrib/aws/service/sns.rb +3 -3
  562. data/lib/datadog/tracing/contrib/aws/service/sqs.rb +3 -3
  563. data/lib/datadog/tracing/contrib/aws/service/states.rb +5 -5
  564. data/lib/datadog/tracing/contrib/aws/services.rb +14 -14
  565. data/lib/datadog/tracing/contrib/component.rb +1 -1
  566. data/lib/datadog/tracing/contrib/concurrent_ruby/async_patch.rb +1 -1
  567. data/lib/datadog/tracing/contrib/concurrent_ruby/configuration/settings.rb +2 -2
  568. data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +1 -1
  569. data/lib/datadog/tracing/contrib/concurrent_ruby/ext.rb +2 -2
  570. data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +1 -1
  571. data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +6 -6
  572. data/lib/datadog/tracing/contrib/concurrent_ruby/patcher.rb +4 -4
  573. data/lib/datadog/tracing/contrib/concurrent_ruby/promises_future_patch.rb +1 -1
  574. data/lib/datadog/tracing/contrib/configurable.rb +20 -5
  575. data/lib/datadog/tracing/contrib/configuration/resolver.rb +14 -4
  576. data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +1 -1
  577. data/lib/datadog/tracing/contrib/configuration/settings.rb +2 -2
  578. data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +2 -2
  579. data/lib/datadog/tracing/contrib/dalli/ext.rb +13 -13
  580. data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +6 -10
  581. data/lib/datadog/tracing/contrib/dalli/integration.rb +10 -7
  582. data/lib/datadog/tracing/contrib/dalli/patcher.rb +3 -3
  583. data/lib/datadog/tracing/contrib/dalli/quantize.rb +3 -3
  584. data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +2 -2
  585. data/lib/datadog/tracing/contrib/delayed_job/ext.rb +14 -14
  586. data/lib/datadog/tracing/contrib/delayed_job/integration.rb +5 -5
  587. data/lib/datadog/tracing/contrib/delayed_job/patcher.rb +3 -3
  588. data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +7 -5
  589. data/lib/datadog/tracing/contrib/delayed_job/server_internal_tracer/worker.rb +1 -0
  590. data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +2 -2
  591. data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +15 -15
  592. data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +6 -6
  593. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +12 -16
  594. data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +4 -4
  595. data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +7 -3
  596. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +9 -13
  597. data/lib/datadog/tracing/contrib/ethon/ext.rb +13 -12
  598. data/lib/datadog/tracing/contrib/ethon/integration.rb +6 -6
  599. data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +4 -11
  600. data/lib/datadog/tracing/contrib/ethon/patcher.rb +3 -3
  601. data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +10 -7
  602. data/lib/datadog/tracing/contrib/excon/ext.rb +11 -10
  603. data/lib/datadog/tracing/contrib/excon/integration.rb +6 -6
  604. data/lib/datadog/tracing/contrib/excon/middleware.rb +10 -14
  605. data/lib/datadog/tracing/contrib/excon/patcher.rb +2 -2
  606. data/lib/datadog/tracing/contrib/ext.rb +20 -18
  607. data/lib/datadog/tracing/contrib/extensions.rb +11 -2
  608. data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +9 -6
  609. data/lib/datadog/tracing/contrib/faraday/ext.rb +11 -10
  610. data/lib/datadog/tracing/contrib/faraday/integration.rb +6 -6
  611. data/lib/datadog/tracing/contrib/faraday/middleware.rb +10 -14
  612. data/lib/datadog/tracing/contrib/faraday/patcher.rb +6 -6
  613. data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +4 -4
  614. data/lib/datadog/tracing/contrib/grape/endpoint.rb +30 -27
  615. data/lib/datadog/tracing/contrib/grape/ext.rb +15 -15
  616. data/lib/datadog/tracing/contrib/grape/instrumentation.rb +15 -10
  617. data/lib/datadog/tracing/contrib/grape/integration.rb +5 -5
  618. data/lib/datadog/tracing/contrib/grape/patcher.rb +10 -5
  619. data/lib/datadog/tracing/contrib/graphql/configuration/error_extension_env_parser.rb +1 -1
  620. data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +3 -3
  621. data/lib/datadog/tracing/contrib/graphql/ext.rb +9 -9
  622. data/lib/datadog/tracing/contrib/graphql/integration.rb +9 -9
  623. data/lib/datadog/tracing/contrib/graphql/patcher.rb +7 -7
  624. data/lib/datadog/tracing/contrib/graphql/unified_trace.rb +38 -37
  625. data/lib/datadog/tracing/contrib/graphql/unified_trace_patcher.rb +2 -2
  626. data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +7 -4
  627. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +11 -15
  628. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +11 -15
  629. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb +6 -6
  630. data/lib/datadog/tracing/contrib/grpc/distributed/fetcher.rb +1 -1
  631. data/lib/datadog/tracing/contrib/grpc/distributed/propagation.rb +11 -9
  632. data/lib/datadog/tracing/contrib/grpc/ext.rb +14 -13
  633. data/lib/datadog/tracing/contrib/grpc/formatting.rb +7 -7
  634. data/lib/datadog/tracing/contrib/grpc/integration.rb +5 -5
  635. data/lib/datadog/tracing/contrib/grpc/intercept_with_datadog.rb +1 -1
  636. data/lib/datadog/tracing/contrib/grpc/patcher.rb +3 -3
  637. data/lib/datadog/tracing/contrib/grpc.rb +7 -6
  638. data/lib/datadog/tracing/contrib/hanami/action_tracer.rb +4 -3
  639. data/lib/datadog/tracing/contrib/hanami/configuration/settings.rb +2 -2
  640. data/lib/datadog/tracing/contrib/hanami/ext.rb +8 -8
  641. data/lib/datadog/tracing/contrib/hanami/integration.rb +6 -6
  642. data/lib/datadog/tracing/contrib/hanami/patcher.rb +5 -5
  643. data/lib/datadog/tracing/contrib/hanami/renderer_policy_tracing.rb +4 -3
  644. data/lib/datadog/tracing/contrib/hanami/router_tracing.rb +6 -4
  645. data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +1 -1
  646. data/lib/datadog/tracing/contrib/http/configuration/settings.rb +9 -6
  647. data/lib/datadog/tracing/contrib/http/distributed/fetcher.rb +3 -3
  648. data/lib/datadog/tracing/contrib/http/distributed/propagation.rb +10 -8
  649. data/lib/datadog/tracing/contrib/http/ext.rb +11 -10
  650. data/lib/datadog/tracing/contrib/http/instrumentation.rb +10 -14
  651. data/lib/datadog/tracing/contrib/http/integration.rb +7 -9
  652. data/lib/datadog/tracing/contrib/http/patcher.rb +3 -3
  653. data/lib/datadog/tracing/contrib/http.rb +7 -6
  654. data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +9 -6
  655. data/lib/datadog/tracing/contrib/httpclient/ext.rb +11 -10
  656. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +12 -12
  657. data/lib/datadog/tracing/contrib/httpclient/integration.rb +6 -6
  658. data/lib/datadog/tracing/contrib/httpclient/patcher.rb +3 -3
  659. data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +9 -6
  660. data/lib/datadog/tracing/contrib/httprb/ext.rb +11 -10
  661. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +10 -14
  662. data/lib/datadog/tracing/contrib/httprb/integration.rb +7 -7
  663. data/lib/datadog/tracing/contrib/httprb/patcher.rb +3 -3
  664. data/lib/datadog/tracing/contrib/integration.rb +3 -3
  665. data/lib/datadog/tracing/contrib/kafka/configuration/settings.rb +2 -2
  666. data/lib/datadog/tracing/contrib/kafka/event.rb +4 -3
  667. data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +7 -3
  668. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +4 -4
  669. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +4 -4
  670. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +5 -5
  671. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +5 -5
  672. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +5 -5
  673. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +5 -5
  674. data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +10 -5
  675. data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +10 -5
  676. data/lib/datadog/tracing/contrib/kafka/events.rb +10 -10
  677. data/lib/datadog/tracing/contrib/kafka/ext.rb +40 -40
  678. data/lib/datadog/tracing/contrib/kafka/instrumentation/consumer.rb +4 -4
  679. data/lib/datadog/tracing/contrib/kafka/instrumentation/producer.rb +6 -6
  680. data/lib/datadog/tracing/contrib/kafka/integration.rb +6 -6
  681. data/lib/datadog/tracing/contrib/kafka/patcher.rb +5 -5
  682. data/lib/datadog/tracing/contrib/karafka/configuration/settings.rb +7 -3
  683. data/lib/datadog/tracing/contrib/karafka/distributed/propagation.rb +11 -9
  684. data/lib/datadog/tracing/contrib/karafka/ext.rb +13 -12
  685. data/lib/datadog/tracing/contrib/karafka/integration.rb +5 -5
  686. data/lib/datadog/tracing/contrib/karafka/monitor.rb +14 -14
  687. data/lib/datadog/tracing/contrib/karafka/patcher.rb +9 -9
  688. data/lib/datadog/tracing/contrib/karafka.rb +7 -6
  689. data/lib/datadog/tracing/contrib/lograge/configuration/settings.rb +2 -2
  690. data/lib/datadog/tracing/contrib/lograge/ext.rb +1 -1
  691. data/lib/datadog/tracing/contrib/lograge/integration.rb +5 -5
  692. data/lib/datadog/tracing/contrib/lograge/patcher.rb +9 -9
  693. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +2 -2
  694. data/lib/datadog/tracing/contrib/mongodb/ext.rb +18 -18
  695. data/lib/datadog/tracing/contrib/mongodb/instrumentation.rb +3 -3
  696. data/lib/datadog/tracing/contrib/mongodb/integration.rb +7 -7
  697. data/lib/datadog/tracing/contrib/mongodb/parsers.rb +9 -9
  698. data/lib/datadog/tracing/contrib/mongodb/patcher.rb +3 -3
  699. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +18 -21
  700. data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +9 -3
  701. data/lib/datadog/tracing/contrib/mysql2/ext.rb +11 -11
  702. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +9 -12
  703. data/lib/datadog/tracing/contrib/mysql2/integration.rb +5 -5
  704. data/lib/datadog/tracing/contrib/mysql2/patcher.rb +2 -2
  705. data/lib/datadog/tracing/contrib/opensearch/configuration/settings.rb +2 -2
  706. data/lib/datadog/tracing/contrib/opensearch/ext.rb +23 -23
  707. data/lib/datadog/tracing/contrib/opensearch/integration.rb +6 -6
  708. data/lib/datadog/tracing/contrib/opensearch/patcher.rb +15 -19
  709. data/lib/datadog/tracing/contrib/opensearch/quantize.rb +5 -5
  710. data/lib/datadog/tracing/contrib/patchable.rb +1 -1
  711. data/lib/datadog/tracing/contrib/patcher.rb +3 -3
  712. data/lib/datadog/tracing/contrib/pg/configuration/settings.rb +9 -3
  713. data/lib/datadog/tracing/contrib/pg/ext.rb +19 -19
  714. data/lib/datadog/tracing/contrib/pg/instrumentation.rb +21 -24
  715. data/lib/datadog/tracing/contrib/pg/integration.rb +5 -5
  716. data/lib/datadog/tracing/contrib/pg/patcher.rb +2 -2
  717. data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +2 -2
  718. data/lib/datadog/tracing/contrib/presto/ext.rb +21 -21
  719. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +8 -10
  720. data/lib/datadog/tracing/contrib/presto/integration.rb +6 -6
  721. data/lib/datadog/tracing/contrib/presto/patcher.rb +4 -4
  722. data/lib/datadog/tracing/contrib/propagation/sql_comment/comment.rb +2 -2
  723. data/lib/datadog/tracing/contrib/propagation/sql_comment/ext.rb +26 -13
  724. data/lib/datadog/tracing/contrib/propagation/sql_comment/mode.rb +7 -3
  725. data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +29 -5
  726. data/lib/datadog/tracing/contrib/que/configuration/settings.rb +7 -4
  727. data/lib/datadog/tracing/contrib/que/ext.rb +19 -18
  728. data/lib/datadog/tracing/contrib/que/integration.rb +6 -6
  729. data/lib/datadog/tracing/contrib/que/patcher.rb +1 -1
  730. data/lib/datadog/tracing/contrib/que/tracer.rb +3 -2
  731. data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +3 -3
  732. data/lib/datadog/tracing/contrib/racecar/event.rb +5 -9
  733. data/lib/datadog/tracing/contrib/racecar/events/batch.rb +3 -3
  734. data/lib/datadog/tracing/contrib/racecar/events/consume.rb +3 -3
  735. data/lib/datadog/tracing/contrib/racecar/events/message.rb +3 -3
  736. data/lib/datadog/tracing/contrib/racecar/events.rb +4 -4
  737. data/lib/datadog/tracing/contrib/racecar/ext.rb +18 -18
  738. data/lib/datadog/tracing/contrib/racecar/integration.rb +5 -5
  739. data/lib/datadog/tracing/contrib/racecar/patcher.rb +3 -3
  740. data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +14 -4
  741. data/lib/datadog/tracing/contrib/rack/ext.rb +43 -15
  742. data/lib/datadog/tracing/contrib/rack/header_collection.rb +3 -3
  743. data/lib/datadog/tracing/contrib/rack/header_tagging.rb +24 -1
  744. data/lib/datadog/tracing/contrib/rack/integration.rb +6 -6
  745. data/lib/datadog/tracing/contrib/rack/middlewares.rb +28 -25
  746. data/lib/datadog/tracing/contrib/rack/patcher.rb +5 -5
  747. data/lib/datadog/tracing/contrib/rack/request_queue.rb +4 -4
  748. data/lib/datadog/tracing/contrib/rack/route_inference.rb +27 -13
  749. data/lib/datadog/tracing/contrib/rack/trace_proxy_middleware.rb +124 -6
  750. data/lib/datadog/tracing/contrib/rails/auto_instrument_railtie.rb +1 -1
  751. data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +8 -5
  752. data/lib/datadog/tracing/contrib/rails/ext.rb +15 -14
  753. data/lib/datadog/tracing/contrib/rails/framework.rb +11 -11
  754. data/lib/datadog/tracing/contrib/rails/integration.rb +5 -5
  755. data/lib/datadog/tracing/contrib/rails/log_injection.rb +1 -1
  756. data/lib/datadog/tracing/contrib/rails/middlewares.rb +1 -1
  757. data/lib/datadog/tracing/contrib/rails/patcher.rb +8 -9
  758. data/lib/datadog/tracing/contrib/rails/railtie.rb +4 -4
  759. data/lib/datadog/tracing/contrib/rails/runner.rb +4 -2
  760. data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +3 -3
  761. data/lib/datadog/tracing/contrib/rake/ext.rb +12 -12
  762. data/lib/datadog/tracing/contrib/rake/instrumentation.rb +9 -7
  763. data/lib/datadog/tracing/contrib/rake/integration.rb +5 -5
  764. data/lib/datadog/tracing/contrib/rake/patcher.rb +3 -3
  765. data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +3 -3
  766. data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +2 -2
  767. data/lib/datadog/tracing/contrib/redis/ext.rb +16 -16
  768. data/lib/datadog/tracing/contrib/redis/instrumentation.rb +6 -6
  769. data/lib/datadog/tracing/contrib/redis/integration.rb +7 -7
  770. data/lib/datadog/tracing/contrib/redis/patcher.rb +10 -10
  771. data/lib/datadog/tracing/contrib/redis/quantize.rb +40 -6
  772. data/lib/datadog/tracing/contrib/redis/tags.rb +6 -11
  773. data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +16 -8
  774. data/lib/datadog/tracing/contrib/registerable.rb +11 -0
  775. data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +2 -2
  776. data/lib/datadog/tracing/contrib/resque/ext.rb +7 -7
  777. data/lib/datadog/tracing/contrib/resque/integration.rb +5 -5
  778. data/lib/datadog/tracing/contrib/resque/patcher.rb +3 -3
  779. data/lib/datadog/tracing/contrib/resque/resque_job.rb +6 -5
  780. data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +7 -4
  781. data/lib/datadog/tracing/contrib/rest_client/ext.rb +10 -9
  782. data/lib/datadog/tracing/contrib/rest_client/integration.rb +6 -6
  783. data/lib/datadog/tracing/contrib/rest_client/patcher.rb +2 -2
  784. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +6 -10
  785. data/lib/datadog/tracing/contrib/roda/configuration/settings.rb +2 -2
  786. data/lib/datadog/tracing/contrib/roda/ext.rb +6 -5
  787. data/lib/datadog/tracing/contrib/roda/instrumentation.rb +8 -5
  788. data/lib/datadog/tracing/contrib/roda/integration.rb +6 -6
  789. data/lib/datadog/tracing/contrib/roda/patcher.rb +3 -3
  790. data/lib/datadog/tracing/contrib/semantic_logger/configuration/settings.rb +2 -2
  791. data/lib/datadog/tracing/contrib/semantic_logger/ext.rb +1 -1
  792. data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +5 -5
  793. data/lib/datadog/tracing/contrib/semantic_logger/patcher.rb +2 -2
  794. data/lib/datadog/tracing/contrib/sequel/configuration/settings.rb +2 -2
  795. data/lib/datadog/tracing/contrib/sequel/database.rb +7 -10
  796. data/lib/datadog/tracing/contrib/sequel/dataset.rb +6 -5
  797. data/lib/datadog/tracing/contrib/sequel/ext.rb +12 -8
  798. data/lib/datadog/tracing/contrib/sequel/integration.rb +5 -5
  799. data/lib/datadog/tracing/contrib/sequel/patcher.rb +3 -3
  800. data/lib/datadog/tracing/contrib/sequel/utils.rb +116 -16
  801. data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +2 -2
  802. data/lib/datadog/tracing/contrib/shoryuken/ext.rb +12 -12
  803. data/lib/datadog/tracing/contrib/shoryuken/integration.rb +6 -6
  804. data/lib/datadog/tracing/contrib/shoryuken/patcher.rb +1 -1
  805. data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +3 -2
  806. data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +9 -8
  807. data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +7 -3
  808. data/lib/datadog/tracing/contrib/sidekiq/distributed/propagation.rb +12 -10
  809. data/lib/datadog/tracing/contrib/sidekiq/ext.rb +30 -29
  810. data/lib/datadog/tracing/contrib/sidekiq/integration.rb +7 -7
  811. data/lib/datadog/tracing/contrib/sidekiq/patcher.rb +8 -8
  812. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/heartbeat.rb +2 -0
  813. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/job_fetch.rb +1 -0
  814. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/redis_info.rb +1 -0
  815. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/scheduled_poller.rb +2 -0
  816. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/stop.rb +1 -0
  817. data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +15 -14
  818. data/lib/datadog/tracing/contrib/sidekiq/utils.rb +10 -10
  819. data/lib/datadog/tracing/contrib/sidekiq.rb +7 -6
  820. data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +8 -4
  821. data/lib/datadog/tracing/contrib/sinatra/env.rb +6 -6
  822. data/lib/datadog/tracing/contrib/sinatra/ext.rb +17 -16
  823. data/lib/datadog/tracing/contrib/sinatra/framework.rb +2 -2
  824. data/lib/datadog/tracing/contrib/sinatra/integration.rb +5 -5
  825. data/lib/datadog/tracing/contrib/sinatra/patcher.rb +5 -5
  826. data/lib/datadog/tracing/contrib/sinatra/tracer.rb +11 -10
  827. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +9 -8
  828. data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +1 -1
  829. data/lib/datadog/tracing/contrib/sneakers/ext.rb +12 -12
  830. data/lib/datadog/tracing/contrib/sneakers/integration.rb +19 -8
  831. data/lib/datadog/tracing/contrib/sneakers/patcher.rb +2 -2
  832. data/lib/datadog/tracing/contrib/sneakers/tracer.rb +5 -4
  833. data/lib/datadog/tracing/contrib/span_attribute_schema.rb +2 -2
  834. data/lib/datadog/tracing/contrib/status_range_env_parser.rb +2 -2
  835. data/lib/datadog/tracing/contrib/status_range_matcher.rb +4 -0
  836. data/lib/datadog/tracing/contrib/stripe/configuration/settings.rb +2 -2
  837. data/lib/datadog/tracing/contrib/stripe/ext.rb +12 -12
  838. data/lib/datadog/tracing/contrib/stripe/integration.rb +5 -5
  839. data/lib/datadog/tracing/contrib/stripe/patcher.rb +2 -2
  840. data/lib/datadog/tracing/contrib/stripe/request.rb +4 -4
  841. data/lib/datadog/tracing/contrib/sucker_punch/configuration/settings.rb +2 -2
  842. data/lib/datadog/tracing/contrib/sucker_punch/exception_handler.rb +1 -1
  843. data/lib/datadog/tracing/contrib/sucker_punch/ext.rb +13 -13
  844. data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +5 -4
  845. data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +5 -5
  846. data/lib/datadog/tracing/contrib/sucker_punch/patcher.rb +4 -4
  847. data/lib/datadog/tracing/contrib/trilogy/configuration/settings.rb +9 -3
  848. data/lib/datadog/tracing/contrib/trilogy/ext.rb +11 -11
  849. data/lib/datadog/tracing/contrib/trilogy/instrumentation.rb +10 -12
  850. data/lib/datadog/tracing/contrib/trilogy/integration.rb +5 -5
  851. data/lib/datadog/tracing/contrib/trilogy/patcher.rb +2 -2
  852. data/lib/datadog/tracing/contrib/utils/database.rb +5 -5
  853. data/lib/datadog/tracing/contrib/utils/quantization/{hash.rb → hash_formatter.rb} +3 -3
  854. data/lib/datadog/tracing/contrib/utils/quantization/http.rb +10 -10
  855. data/lib/datadog/tracing/contrib/waterdrop/configuration/settings.rb +7 -3
  856. data/lib/datadog/tracing/contrib/waterdrop/distributed/propagation.rb +11 -9
  857. data/lib/datadog/tracing/contrib/waterdrop/ext.rb +4 -3
  858. data/lib/datadog/tracing/contrib/waterdrop/integration.rb +5 -5
  859. data/lib/datadog/tracing/contrib/waterdrop/middleware.rb +2 -2
  860. data/lib/datadog/tracing/contrib/waterdrop/patcher.rb +7 -7
  861. data/lib/datadog/tracing/contrib/waterdrop/producer.rb +3 -3
  862. data/lib/datadog/tracing/contrib/waterdrop.rb +7 -6
  863. data/lib/datadog/tracing/contrib.rb +62 -54
  864. data/lib/datadog/tracing/correlation.rb +12 -12
  865. data/lib/datadog/tracing/diagnostics/environment_logger.rb +14 -12
  866. data/lib/datadog/tracing/diagnostics/ext.rb +19 -19
  867. data/lib/datadog/tracing/diagnostics/health.rb +1 -1
  868. data/lib/datadog/tracing/distributed/b3_multi.rb +8 -8
  869. data/lib/datadog/tracing/distributed/b3_single.rb +4 -4
  870. data/lib/datadog/tracing/distributed/baggage.rb +82 -28
  871. data/lib/datadog/tracing/distributed/datadog.rb +32 -30
  872. data/lib/datadog/tracing/distributed/datadog_tags_codec.rb +4 -17
  873. data/lib/datadog/tracing/distributed/fetcher.rb +1 -1
  874. data/lib/datadog/tracing/distributed/helpers.rb +3 -3
  875. data/lib/datadog/tracing/distributed/propagation.rb +43 -11
  876. data/lib/datadog/tracing/distributed/propagation_policy.rb +5 -0
  877. data/lib/datadog/tracing/distributed/trace_context.rb +108 -85
  878. data/lib/datadog/tracing/event.rb +2 -2
  879. data/lib/datadog/tracing/ext.rb +9 -0
  880. data/lib/datadog/tracing/metadata/analytics.rb +2 -2
  881. data/lib/datadog/tracing/metadata/errors.rb +4 -4
  882. data/lib/datadog/tracing/metadata/ext.rb +79 -65
  883. data/lib/datadog/tracing/metadata/metastruct.rb +1 -1
  884. data/lib/datadog/tracing/metadata/metastruct_tagging.rb +1 -1
  885. data/lib/datadog/tracing/metadata/tagging.rb +5 -5
  886. data/lib/datadog/tracing/metadata.rb +4 -4
  887. data/lib/datadog/tracing/pipeline/span_filter.rb +2 -2
  888. data/lib/datadog/tracing/pipeline.rb +3 -3
  889. data/lib/datadog/tracing/remote.rb +48 -10
  890. data/lib/datadog/tracing/sampling/all_sampler.rb +1 -1
  891. data/lib/datadog/tracing/sampling/ext.rb +9 -7
  892. data/lib/datadog/tracing/sampling/matcher.rb +4 -4
  893. data/lib/datadog/tracing/sampling/priority_sampler.rb +17 -4
  894. data/lib/datadog/tracing/sampling/rate_by_key_sampler.rb +3 -3
  895. data/lib/datadog/tracing/sampling/rate_by_service_sampler.rb +2 -2
  896. data/lib/datadog/tracing/sampling/rate_sampler.rb +2 -2
  897. data/lib/datadog/tracing/sampling/rule.rb +5 -5
  898. data/lib/datadog/tracing/sampling/rule_sampler.rb +66 -37
  899. data/lib/datadog/tracing/sampling/sampler.rb +2 -2
  900. data/lib/datadog/tracing/sampling/span/ext.rb +3 -3
  901. data/lib/datadog/tracing/sampling/span/matcher.rb +2 -2
  902. data/lib/datadog/tracing/sampling/span/rule.rb +1 -1
  903. data/lib/datadog/tracing/sampling/span/rule_parser.rb +10 -10
  904. data/lib/datadog/tracing/span.rb +9 -9
  905. data/lib/datadog/tracing/span_event.rb +5 -5
  906. data/lib/datadog/tracing/span_operation.rb +39 -26
  907. data/lib/datadog/tracing/sync_writer.rb +12 -8
  908. data/lib/datadog/tracing/trace_digest.rb +7 -0
  909. data/lib/datadog/tracing/trace_operation.rb +90 -21
  910. data/lib/datadog/tracing/trace_segment.rb +10 -10
  911. data/lib/datadog/tracing/tracer.rb +63 -22
  912. data/lib/datadog/tracing/transport/http/client.rb +4 -4
  913. data/lib/datadog/tracing/transport/http/statistics.rb +2 -2
  914. data/lib/datadog/tracing/transport/http/traces.rb +8 -8
  915. data/lib/datadog/tracing/transport/http.rb +10 -10
  916. data/lib/datadog/tracing/transport/io/client.rb +8 -11
  917. data/lib/datadog/tracing/transport/io/response.rb +1 -1
  918. data/lib/datadog/tracing/transport/io/traces.rb +33 -39
  919. data/lib/datadog/tracing/transport/io.rb +3 -3
  920. data/lib/datadog/tracing/transport/native/response.rb +71 -0
  921. data/lib/datadog/tracing/transport/native.rb +387 -0
  922. data/lib/datadog/tracing/transport/serializable_trace.rb +19 -19
  923. data/lib/datadog/tracing/transport/statistics.rb +2 -2
  924. data/lib/datadog/tracing/transport/trace_formatter.rb +20 -9
  925. data/lib/datadog/tracing/transport/traces.rb +13 -19
  926. data/lib/datadog/tracing/utils.rb +2 -2
  927. data/lib/datadog/tracing/workers.rb +4 -3
  928. data/lib/datadog/tracing/writer.rb +22 -10
  929. data/lib/datadog/tracing.rb +3 -3
  930. data/lib/datadog/version.rb +4 -4
  931. data/lib/datadog.rb +15 -11
  932. metadata +91 -23
  933. data/ext/datadog_profiling_native_extension/clock_id_noop.c +0 -21
  934. data/lib/datadog/ai_guard/configuration/settings.rb +0 -110
  935. data/lib/datadog/appsec/configuration/settings.rb +0 -409
  936. data/lib/datadog/appsec/contrib/rails/ext.rb +0 -13
  937. data/lib/datadog/core/utils/base64.rb +0 -22
  938. data/lib/datadog/data_streams/configuration/settings.rb +0 -49
  939. data/lib/datadog/di/configuration/settings.rb +0 -234
  940. data/lib/datadog/error_tracking/configuration/settings.rb +0 -63
  941. data/lib/datadog/tracing/workers/trace_writer.rb +0 -204
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 91ec2ddb3720f61843ee7526cd4e3493a646ab7afaf3d6e4cce71019d1dfd582
4
- data.tar.gz: d0996f8b1eb568aea751a1e781fa4d9dcc7e1d436911fd579c7aa43947340f32
3
+ metadata.gz: c9770ef0d02b2ecf56734c823b89ea642beb8512dae612904f0bc3d050852b44
4
+ data.tar.gz: b1e359c8eb8d26528b21c963c775b7cf8e5e227ca2cf7b88b322337d32c7283c
5
5
  SHA512:
6
- metadata.gz: fb8da926cd9a09a500c781f60ad5fb35c72c9b3162acc067229f88d01281c63c6753c4230a2cf56f803fb0174994707b159e31f5d584e6682313a13e2187b61e
7
- data.tar.gz: 8c93304f737b5798af5d6ed520f7006d7aa2e7644243fbfcd38994d66dde0aefb53084bca96024e61a7cbebcb72e60f958715fe4864c1e7fe90733103f9cb527
6
+ metadata.gz: 21335b21c2d0be965d3f3c972efab822767ddd6f28e3a1263497335300cf7a34b3fe1872d9037c1e40af909a897296e3946fac7ecd7b8e7b92c21c1ecdfc7a77
7
+ data.tar.gz: a2ee7baf6f4e6e45f6116629d09806db7d0bd171bb5aaa36f4cf65e2f7c53038be18e04b84b25f1a26bd87031ea223a8e6ced8f91cceb62f8a292bfd4fd76875
data/CHANGELOG.md CHANGED
@@ -2,6 +2,273 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [2.41.0] - 2026-08-13
6
+
7
+ ### Added
8
+
9
+ * Tracing: Integrations: Add support for `redis-rb` 6.0/RESP3. ([#6142][])
10
+ * Tracing: Native trace export now supports structured span metadata. ([#6130][])
11
+
12
+ ### Changed
13
+
14
+ * AppSec: Native trace export now encodes supported structured span metadata values without Ruby MessagePack encoding. ([#6132][])
15
+ * Tracing: Native trace export now writes structured span metadata directly through libdatadog. ([#6133][])
16
+
17
+ ### Fixed
18
+
19
+ * Profiling: Fix a rare crash (`SIGSEGV`) in the profiler that could occur when sampling a thread during `Thread.new`. ([#6173][])
20
+ * Profiling: Fix possible crash in `sample_thread()` when `rb_id2str()` returns `Qfalse`. ([#6138][])
21
+ * Tracing: Prevent runtime configuration telemetry from being rejected when header tags or sampling rules are updated remotely. ([#6126][])
22
+
23
+ ## [2.40.0] - 2026-08-04
24
+
25
+ ### Added
26
+
27
+ * Profiling: Add experimental profiling setting to show class/module names in stack frames ([#6024][])
28
+ * Tracing: Add an experimental native (`libdatadog`-backed) trace transport, selectable via `tracing.native_transport` ([#5971][])
29
+
30
+ ### Changed
31
+
32
+ * Core: Deprecate `time_now_provider` setting for removal; it no longer does anything. Please remove it from your `Datadog.configure block`. The datadog gem always uses the real non-mocked time, even when the timecop gem monkey-patches `Time` ([#6010][])
33
+
34
+ ### Fixed
35
+
36
+ * AppSec: Fix standalone billing issues for partially flushed traces ([#6116][])
37
+ * Dynamic Instrumentation: Limit dynamic instrumentation regular expression evaluation time to 500ms ([#5908][])
38
+ * Profiling: Fix missing native filename for static Ruby binaries ([#6097][])
39
+ * Profiling: Fix crash in `rb_iseq_path()` caused by incorrect GC marking ([#6024][])
40
+ * Tracing: Fix missing or zero Kafka producer and connection span tags like `kafka.message_count` and `kafka.request_size` in the `ruby-kafka` integration. ([#6104][])
41
+
42
+ ## [2.39.0] - 2026-07-22
43
+
44
+ ### Added
45
+
46
+ * Tracing: Integrations: Add database name and host to Sequel spans and infer `peer.service` so datastore dependencies appear in the service map. ([#6072][])
47
+
48
+ ### Fixed
49
+
50
+ * AppSec: Fix error in `devise` contrib for non-standard Warden session serialization. ([#6064][])
51
+ * Dynamic Instrumentation: Fix dynamic instrumentation line probes failing to install when dynamic instrumentation is enabled remotely after application startup. ([#6050][])
52
+ * Profiling: Fix crash when trying to sample during GC compaction ([#6056][])
53
+ * Tracing: Integrations: Fix an `ArgumentError` (and the resulting `Kafka::BufferOverflow`) raised by the Kafka producer integration on Ruby 2.5 and 2.6. ([#6060][])
54
+
55
+ ## [2.38.0] - 2026-07-16
56
+
57
+ ### Added
58
+
59
+ * Dynamic Instrumentation: Log probes now support capture expressions as an alternative to capturing the full local/argument scope ([#5845][])
60
+ * SSI: Add support for Ruby 4.0 runtime ([#5981][])
61
+ * SSI: Add support for Bundler 4.0 and RubyGems 4.0 ([#5981][])
62
+
63
+ ### Fixed
64
+
65
+ * AppSec: Fix Rack-based and Rails request body analysis when body parsing fails ([#5993][])
66
+ * Profiling: Add workaround for crash when collecting frame information ([#6014][])
67
+ * Profiling: Fix left-over state impacting samples when profiler gets stopped and started again ([#5960][])
68
+ * Profiling: Fix Ruby 4.0.6 support by bumping minimum version of `datadog-ruby_core_source` to 3.5.3 ([#6047][])
69
+ * Profiling: Disable live heap size profiling on Ruby 4.0 due to incompatibility ([#6022][])
70
+ * Profiling: Disallow heap profiling on Ruby 4.1+ ([#6023][])
71
+ * Tracing: Fix `pg` instrumentation which raised `ArgumentError` when calling `exec_params`, `exec_prepared` without a `params` argument, or their `async_`/`sync_` variants ([#6020][])
72
+
73
+ ## [2.37.0] - 2026-07-06
74
+
75
+ ### Added
76
+
77
+ * AppSec: Add sign-up event tracking to `Datadog::Kit::AppSec::Events::V2` ([#5973][])
78
+ * AppSec: Integrations: Add normalized HTTP route for API Security Testing ([#5834][])
79
+ * Dynamic Instrumentation: DI can now be enabled from the Datadog UI without setting `DD_DYNAMIC_INSTRUMENTATION_ENABLED` or restarting the application. Setting `DD_DYNAMIC_INSTRUMENTATION_ENABLED=false` explicitly still disables it and blocks UI-driven enablement ([#5525][])
80
+
81
+ ### Changed
82
+
83
+ * Profiling: Reduce profiler overhead by sampling profiler-internal threads only once per minute ([#5955][])
84
+ * Dynamic Instrumentation: Reject method probes that target `Kernel#lambda`, which cannot be safely instrumented ([#5954][])
85
+ * Dynamic Instrumentation: Reject method probes that target classes or modules in the Datadog namespace ([#5907][])
86
+ * Dynamic Instrumentation: Enable Symbol Database by default when Dynamic Instrumentation is enabled ([#5828][])
87
+
88
+ ### Fixed
89
+
90
+ * AppSec: AI Guard: Fix endpoint configuration via `DD_SITE` environment variable ([#5940][])
91
+ * AppSec: Fix API Security schema extraction timeout and telemetry ([#5975][])
92
+ * AppSec: Fix remote configuration errors when the ruleset name changes ([#5970][])
93
+ * AppSec: Integrations: Add configurable size limit for downstream HTTP request and response body analysis ([#5990][])
94
+ * AppSec: Integrations: Fix WAF analysis for requests with cached or parsed bodies in Rack and Sinatra ([#5991][])
95
+ * AppSec: Integrations: Fix an exception for unauthorized requests when using Devise with Rails. ([#5987][])
96
+ * Tracing: Fix a `SIGSEGV` crash that could happen with experimental heap profiling enabled on Ruby 4.0 ([#5938][]) ([@navidemad][])
97
+ * Dynamic Instrumentation: Normalize Rack CGI header prefix (`HTTP_<HEADER>`) in redactor so snapshot captures redact sensitive headers like their bare names ([#5911][])
98
+ * Dynamic Instrumentation: Symbol Database and DI background threads no longer stop when application code raises a non-StandardError during introspection ([#5945][])
99
+
100
+ ## [2.36.0] - 2026-06-24
101
+
102
+ ### Added
103
+
104
+ * Tracing: Add `DD_TRACE_PROPAGATION_BEHAVIOR_EXTRACT` to control trace extraction behavior with `continue`, `restart`, and `ignore` modes ([#5844][])
105
+ * AppSec: Add `DD_APPSEC_BODY_PARSING_SIZE_LIMIT` to control processing of request and response body size; set to 0 to disable ([#5877][])
106
+ * AppSec: Detect attacks from inline fragments in GraphQL queries ([#5916][])
107
+ * Dynamic Instrumentation: Show lazily loaded classes in UI ([#5697][])
108
+
109
+ ### Changed
110
+
111
+ * Dynamic Instrumentation: Reduce peak memory usage during Symbol Database extraction ([#5883][])
112
+ * Profiling: Reduce profiler overhead by up to 50% by skipping redundant samples for threads without the GVL ([#5777][])
113
+ * Profiling: Remove overhead when cleaning up dead threads ([#5816][])
114
+
115
+ ### Fixed
116
+
117
+ * Tracing: Workaround Ruby VM bug causing segmentation faults inside CachingResolver ([#5719][], [#5890][])
118
+ * Dynamic Instrumentation: Prevent uploading stale class definitions for apps using `remove_const`-then-redefine patterns ([#5872][])
119
+ * Profiling: Fix GC profiling being incorrectly disabled on Ruby 3.2.10 and 3.2.11 ([#5894][])
120
+ * Profiling: Fix over-counting of the first allocation sample at profiler startup ([#5881][])
121
+ * Profiling: Fix rare profiler crash during shutdown in heap profiling cleanup ([#5920][])
122
+ * Core: Fix exception message formatting from native extensions ([#5857][])
123
+
124
+ ## [2.35.0] - 2026-06-03
125
+
126
+ ### Added
127
+
128
+ * Tracing: Add `dynamic_service` SQL comment propagation mode for Database Monitoring ([#5812][])
129
+ * Tracing: Prevent Datadog-generated traffic from interfering with application metrics ([#5811][])
130
+
131
+ ### Changed
132
+
133
+ * AppSec: Improve route extraction performance for Rails applications ([#5836][])
134
+
135
+ ### Fixed
136
+
137
+ * Tracing: Restore `Datadog::Tracing::Contrib::Ext::Metadata::TAG_BASE_SERVICE` constant removed in v2.34.0 ([#5830][])
138
+
139
+ ### Removed
140
+
141
+ * Profiling: Deprecate the `profiling.advanced.timeline_enabled` setting for removal; it no longer does anything. Please remove it from `Datadog.configure` and do not set `DD_PROFILING_TIMELINE_ENABLED` ([#5750][])
142
+
143
+ ## [2.34.0] - 2026-05-27
144
+
145
+ ### Added
146
+
147
+ * Dynamic Instrumentation: Enable opt-in Symbol Database upload so Ruby services populate Live Debugger UI autocomplete when creating probes ([#5717][])
148
+ * Open Telemetry: Add OpenTelemetry logs support with OTLP export. Enable using `DD_LOGS_OTEL_ENABLED=true`; supports standard `OTEL_EXPORTER_OTLP_*` settings ([#5446][])
149
+
150
+ ### Fixed
151
+
152
+ * Core: Fix Remote configuration `TransportError` messages removing wrapper response object memory addresses ([#5762][])
153
+ * Core: Fix `TypeError` from `Process.spawn` when passing an environment Hash ([#5773][], [#5634][])
154
+ * AppSec: Prevent host application crashes when AppSec fails to initialize ([#5768][])
155
+ * Dynamic Instrumentation: Fix off-by-one in `max_capture_depth` so snapshots respect the configured nesting limit exactly ([#5753][])
156
+ * Dynamic Instrumentation: Improve line probes to match `sourceFile` case-insensitively and support Windows-style backslashes for correct installation ([#5754][])
157
+
158
+ ## [2.33.0] - 2026-05-13
159
+
160
+ ### Added
161
+
162
+ * AI Guard: Ensure client IP is always collected when AI Guard is enabled ([#5677][])
163
+ * AppSec: Add support for AWS Lambda ([#5663][])
164
+ * Tracing: Add inferred proxy spans for services behind AWS Gateway ([#5681][])
165
+ * Open Telemetry: Add support for `DD_HOSTNAME` to set trace hostname and OTel `host.name` when `DD_TRACE_REPORT_HOSTNAME` is enabled ([#5705][])
166
+
167
+ ### Changed
168
+
169
+ * Core: Collect all threads in crash reports to provide full thread context during crashes ([#5724][])
170
+ * Core: Update `libdatadog` dependency to version 33.0.0 ([#5723][])
171
+
172
+ ## [2.32.0] - 2026-05-08
173
+
174
+ ### Added
175
+
176
+ * Open Feature: Add flag evaluation metrics (`feature_flag.evaluations`) via OpenTelemetry for OpenFeature provider. ([#5599][])
177
+ * Profiling: Add metric for total time spent waiting for the GVL. ([#5569][])
178
+ * Dynamic Instrumentation: Live Debugger line probes can now target third-party and Ruby standard library code loaded before datadog gem is loaded. ([#5501][])
179
+
180
+ ### Changed
181
+
182
+ * Profiling: Print failure info when native extension setup fails ([#5657][])
183
+ * Tracing: Add parsing limits to `tracestate` and `traceparent` propagation headers and remove whitespace around list members. ([#5674][])
184
+ * Tracing: Limit extracted [baggage](https://www.w3.org/TR/2024/CR-baggage-20240530/) header parsing to 64 items and 8192 bytes. ([#5672][])
185
+
186
+ ### Fixed
187
+
188
+ * Tracing: Enforce `x-datadog-tags` propagation header size limits by byte size. ([#5687][])
189
+ * Tracing: Return empty baggage on invalid UTF-8 baggage extraction ([#5689][])
190
+
191
+ ## [2.31.0] - 2026-04-20
192
+
193
+ ### Added
194
+
195
+ * Core: Add `app-extended-heartbeat` telemetry event to resend full configuration every 24h for long-running services. ([#5531][])
196
+ * AI Guard: Add multi-model messages support to AI Guard, enabling text and image URL content parts in evaluation SDK ([#5564][])
197
+ * AI Guard: Add evaluation of images in user prompt and tool output for RubyLLM contrib. ([#5573][])
198
+ * AI Guard: Expose Sensitive Data Scanner findings in AI Guard results via `AIGuard::Evaluation::Result#sds_findings`. ([#5579][])
199
+ * AI Guard: Expose tag probabilities in AI Guard results via `AIGuard::Evaluation::Result#tag_probabilities`. ([#5580][])
200
+ * Tracing: Integrations: Add `rails.application` to the process tags. ([#5468][])
201
+ * Tracing: Report and display all configurations used by a service in the 'SDK & Agent Configurations' tab of a Ruby service page in Datadog UI ([#5483][])
202
+
203
+ ### Changed
204
+
205
+ * Core: Upgrade `libdatadog` dependency to version 30.0.0 ([#5574][])
206
+ * AI Guard: **Breaking change:** AIGuard.evaluate now defaults to `allow_raise: true`. Pass `allow_raise: false` to keep the previous non-raising behavior. ([#5587][])
207
+ * Dynamic Instrumentation: Report exception messages in method probe snapshots. Require the libdatadog_api C extension for Dynamic Instrumentation. ([#5111][])
208
+
209
+ ### Fixed
210
+
211
+ * Profiling: Detect when `libdatadog` version does not match expected version. ([#5484][])
212
+ * Profiling: Log profiler initialization errors as warnings instead of raising them. ([#5509][])
213
+ * Tracing: Fix `NoMethodError` in `extract_trace_id!` caused by `extract_tags` returning `true`. ([#5499][])
214
+
215
+ ### Removed
216
+
217
+ * Core: Removed JRuby from the CI test matrix ([#5594][])
218
+
219
+ ## [2.30.0] - 2026-03-19
220
+
221
+ ### Added
222
+
223
+ * Core: Enable `libdatadog`-based features and tests on macOS ([#5351][])
224
+ * Tracing: Add `_dd.p.ksr` propagated tag to transmit Knuth sampling rate for backend resampling ([#5436][])
225
+ * Tracing: Integrations: Add `DD_TRACE_<INTEGRATION>_DISTRIBUTED_TRACING` environment variables to control distributed tracing per integration ([#5396][])
226
+ * Profiling: Add profiler setting `experimental_use_system_dns` to use system DNS resolver (defaults to true) ([#5425][], [#5449][])
227
+ * Profiling: Allow lowering CPU profiling sampling interval with `experimental_cpu_sampling_interval_ms` setting ([#5424][])
228
+
229
+ ### Changed
230
+
231
+ * Core: Enable process tags by default by setting `DD_EXPERIMENTAL_PROPAGATE_PROCESS_TAGS_ENABLED`, expanding tag collection for Tracing, Database Monitoring, Data Streams Monitoring, Profiling, Runtime Metrics, Process Discovery, Remote Configuration, Telemetry, Dynamic Instrumentation, and CrashTracking ([#5432][])
232
+ * Core: Upgrade `libdatadog` dependency to version 29.0.0 ([#5274][], [#5461][])
233
+ * Core: Remove dependency on `pkg-config` system tool for native extension builds ([#5469][])
234
+ * Profiling: Improve profiling error message when another profiler is present ([#5375][])
235
+
236
+ ### Fixed
237
+
238
+ * Tracing: Integrations: Fix `endpoint_render.grape` ActiveSupport notification instrumentation for `grape` 3.x ([#5414][])
239
+ * Tracing: Integrations: Fix compatibility with `dalli` version 5.x and later ([#5435][])
240
+ * Dynamic Instrumentation: Fix JSON serialization failures when snapshots contain binary data and invalid UTF-8 strings ([#5434][])
241
+ * Dynamic Instrumentation: Show ERROR probe status when custom serializers produce non-JSON-encodable data instead of silent failures ([#5448][])
242
+ * Data Streams: Fix Data Streams Monitoring to correctly report the configured environment instead of showing `env:none` ([#5427][])
243
+
244
+ ## [2.29.0] - 2026-02-20
245
+
246
+
247
+ ### Added
248
+
249
+ * AppSec: Add analysis for downstream request with redirects ([#5347][])
250
+ * AppSec: Add downstream request body analysis. ([#5320][])
251
+ * SSI: Add support for Bundler vendored mode (`BUNDLE_PATH`) ([#5368][])
252
+ * SSI: Default to local dependency resolution ([#5368][])
253
+ * Dynamic Instrumentation: Added circuit breaker to automatically disable probes consuming excessive CPU time ([#5335][])
254
+ * Crashtracking: Add reporting of unhandled exceptions ([#5321][])
255
+ * Tracing: Add support for the `kicks` gem ([#5305][])
256
+ * Profiling: Add heap profiling for ruby 4.x ([#5201][])
257
+ * Tracing: Add simple method tracing API ([#5294][])
258
+ * Tracing: Add `trace_singleton_class_method` for tracing singleton class methods. ([#5334][])
259
+
260
+ ### Changed
261
+
262
+ * Dynamic Instrumentation: Improve error reporting when instrumentation fails or is removed due to circuit breaker ([#5371][])
263
+ * SSI: Reduce SSI package size ([#5352][])
264
+ * Core: Change default logger output from stdout to stderr ([#5342][])
265
+ * AppSec: Make AppSec blocking page more friendly for vulnerability scanners ([#5341][])
266
+ * Core: Add process tags and container id to process discovery payloads when the experimental setting `DD_EXPERIMENTAL_PROPAGATE_PROCESS_TAGS_ENABLED=true` is enabled. ([#5336][])
267
+
268
+ ### Fixed
269
+
270
+ * Dynamic Instrumentation: Fix Live Debugger UI for forking web servers with more than one worker process ([#5304][])
271
+
5
272
  ## [2.28.0] - 2026-02-04
6
273
 
7
274
  ### Added
@@ -3486,7 +3753,20 @@ Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.3.1
3486
3753
  Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
3487
3754
 
3488
3755
 
3489
- [Unreleased]: https://github.com/DataDog/dd-trace-rb/compare/v2.28.0...master
3756
+ [Unreleased]: https://github.com/DataDog/dd-trace-rb/compare/v2.41.0...master
3757
+ [2.41.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.40.0...v2.41.0
3758
+ [2.40.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.39.0...v2.40.0
3759
+ [2.39.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.38.0...v2.39.0
3760
+ [2.38.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.37.0...v2.38.0
3761
+ [2.37.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.36.0...v2.37.0
3762
+ [2.36.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.35.0...v2.36.0
3763
+ [2.35.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.34.0...v2.35.0
3764
+ [2.34.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.33.0...v2.34.0
3765
+ [2.33.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.32.0...v2.33.0
3766
+ [2.32.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.31.0...v2.32.0
3767
+ [2.31.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.30.0...v2.31.0
3768
+ [2.30.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.29.0...v2.30.0
3769
+ [2.29.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.28.0...v2.29.0
3490
3770
  [2.28.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.27.0...v2.28.0
3491
3771
  [2.27.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.26.0...v2.27.0
3492
3772
  [2.26.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.25.0...v2.26.0
@@ -5138,6 +5418,7 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
5138
5418
  [#5076]: https://github.com/DataDog/dd-trace-rb/issues/5076
5139
5419
  [#5086]: https://github.com/DataDog/dd-trace-rb/issues/5086
5140
5420
  [#5091]: https://github.com/DataDog/dd-trace-rb/issues/5091
5421
+ [#5111]: https://github.com/DataDog/dd-trace-rb/issues/5111
5141
5422
  [#5122]: https://github.com/DataDog/dd-trace-rb/issues/5122
5142
5423
  [#5144]: https://github.com/DataDog/dd-trace-rb/issues/5144
5143
5424
  [#5145]: https://github.com/DataDog/dd-trace-rb/issues/5145
@@ -5153,6 +5434,7 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
5153
5434
  [#5176]: https://github.com/DataDog/dd-trace-rb/issues/5176
5154
5435
  [#5194]: https://github.com/DataDog/dd-trace-rb/issues/5194
5155
5436
  [#5197]: https://github.com/DataDog/dd-trace-rb/issues/5197
5437
+ [#5201]: https://github.com/DataDog/dd-trace-rb/issues/5201
5156
5438
  [#5206]: https://github.com/DataDog/dd-trace-rb/issues/5206
5157
5439
  [#5210]: https://github.com/DataDog/dd-trace-rb/issues/5210
5158
5440
  [#5215]: https://github.com/DataDog/dd-trace-rb/issues/5215
@@ -5164,8 +5446,136 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
5164
5446
  [#5247]: https://github.com/DataDog/dd-trace-rb/issues/5247
5165
5447
  [#5254]: https://github.com/DataDog/dd-trace-rb/issues/5254
5166
5448
  [#5273]: https://github.com/DataDog/dd-trace-rb/issues/5273
5449
+ [#5274]: https://github.com/DataDog/dd-trace-rb/issues/5274
5167
5450
  [#5278]: https://github.com/DataDog/dd-trace-rb/issues/5278
5168
5451
  [#5283]: https://github.com/DataDog/dd-trace-rb/issues/5283
5452
+ [#5294]: https://github.com/DataDog/dd-trace-rb/issues/5294
5453
+ [#5304]: https://github.com/DataDog/dd-trace-rb/issues/5304
5454
+ [#5305]: https://github.com/DataDog/dd-trace-rb/issues/5305
5455
+ [#5320]: https://github.com/DataDog/dd-trace-rb/issues/5320
5456
+ [#5321]: https://github.com/DataDog/dd-trace-rb/issues/5321
5457
+ [#5334]: https://github.com/DataDog/dd-trace-rb/issues/5334
5458
+ [#5335]: https://github.com/DataDog/dd-trace-rb/issues/5335
5459
+ [#5336]: https://github.com/DataDog/dd-trace-rb/issues/5336
5460
+ [#5341]: https://github.com/DataDog/dd-trace-rb/issues/5341
5461
+ [#5342]: https://github.com/DataDog/dd-trace-rb/issues/5342
5462
+ [#5347]: https://github.com/DataDog/dd-trace-rb/issues/5347
5463
+ [#5351]: https://github.com/DataDog/dd-trace-rb/issues/5351
5464
+ [#5352]: https://github.com/DataDog/dd-trace-rb/issues/5352
5465
+ [#5368]: https://github.com/DataDog/dd-trace-rb/issues/5368
5466
+ [#5371]: https://github.com/DataDog/dd-trace-rb/issues/5371
5467
+ [#5375]: https://github.com/DataDog/dd-trace-rb/issues/5375
5468
+ [#5396]: https://github.com/DataDog/dd-trace-rb/issues/5396
5469
+ [#5414]: https://github.com/DataDog/dd-trace-rb/issues/5414
5470
+ [#5424]: https://github.com/DataDog/dd-trace-rb/issues/5424
5471
+ [#5425]: https://github.com/DataDog/dd-trace-rb/issues/5425
5472
+ [#5427]: https://github.com/DataDog/dd-trace-rb/issues/5427
5473
+ [#5432]: https://github.com/DataDog/dd-trace-rb/issues/5432
5474
+ [#5434]: https://github.com/DataDog/dd-trace-rb/issues/5434
5475
+ [#5435]: https://github.com/DataDog/dd-trace-rb/issues/5435
5476
+ [#5436]: https://github.com/DataDog/dd-trace-rb/issues/5436
5477
+ [#5446]: https://github.com/DataDog/dd-trace-rb/issues/5446
5478
+ [#5448]: https://github.com/DataDog/dd-trace-rb/issues/5448
5479
+ [#5449]: https://github.com/DataDog/dd-trace-rb/issues/5449
5480
+ [#5461]: https://github.com/DataDog/dd-trace-rb/issues/5461
5481
+ [#5468]: https://github.com/DataDog/dd-trace-rb/issues/5468
5482
+ [#5469]: https://github.com/DataDog/dd-trace-rb/issues/5469
5483
+ [#5483]: https://github.com/DataDog/dd-trace-rb/issues/5483
5484
+ [#5484]: https://github.com/DataDog/dd-trace-rb/issues/5484
5485
+ [#5499]: https://github.com/DataDog/dd-trace-rb/issues/5499
5486
+ [#5501]: https://github.com/DataDog/dd-trace-rb/issues/5501
5487
+ [#5509]: https://github.com/DataDog/dd-trace-rb/issues/5509
5488
+ [#5525]: https://github.com/DataDog/dd-trace-rb/issues/5525
5489
+ [#5531]: https://github.com/DataDog/dd-trace-rb/issues/5531
5490
+ [#5564]: https://github.com/DataDog/dd-trace-rb/issues/5564
5491
+ [#5569]: https://github.com/DataDog/dd-trace-rb/issues/5569
5492
+ [#5573]: https://github.com/DataDog/dd-trace-rb/issues/5573
5493
+ [#5574]: https://github.com/DataDog/dd-trace-rb/issues/5574
5494
+ [#5579]: https://github.com/DataDog/dd-trace-rb/issues/5579
5495
+ [#5580]: https://github.com/DataDog/dd-trace-rb/issues/5580
5496
+ [#5587]: https://github.com/DataDog/dd-trace-rb/issues/5587
5497
+ [#5594]: https://github.com/DataDog/dd-trace-rb/issues/5594
5498
+ [#5599]: https://github.com/DataDog/dd-trace-rb/issues/5599
5499
+ [#5634]: https://github.com/DataDog/dd-trace-rb/issues/5634
5500
+ [#5657]: https://github.com/DataDog/dd-trace-rb/issues/5657
5501
+ [#5663]: https://github.com/DataDog/dd-trace-rb/issues/5663
5502
+ [#5672]: https://github.com/DataDog/dd-trace-rb/issues/5672
5503
+ [#5674]: https://github.com/DataDog/dd-trace-rb/issues/5674
5504
+ [#5677]: https://github.com/DataDog/dd-trace-rb/issues/5677
5505
+ [#5681]: https://github.com/DataDog/dd-trace-rb/issues/5681
5506
+ [#5687]: https://github.com/DataDog/dd-trace-rb/issues/5687
5507
+ [#5689]: https://github.com/DataDog/dd-trace-rb/issues/5689
5508
+ [#5697]: https://github.com/DataDog/dd-trace-rb/issues/5697
5509
+ [#5705]: https://github.com/DataDog/dd-trace-rb/issues/5705
5510
+ [#5717]: https://github.com/DataDog/dd-trace-rb/issues/5717
5511
+ [#5719]: https://github.com/DataDog/dd-trace-rb/issues/5719
5512
+ [#5723]: https://github.com/DataDog/dd-trace-rb/issues/5723
5513
+ [#5724]: https://github.com/DataDog/dd-trace-rb/issues/5724
5514
+ [#5750]: https://github.com/DataDog/dd-trace-rb/issues/5750
5515
+ [#5753]: https://github.com/DataDog/dd-trace-rb/issues/5753
5516
+ [#5754]: https://github.com/DataDog/dd-trace-rb/issues/5754
5517
+ [#5762]: https://github.com/DataDog/dd-trace-rb/issues/5762
5518
+ [#5768]: https://github.com/DataDog/dd-trace-rb/issues/5768
5519
+ [#5773]: https://github.com/DataDog/dd-trace-rb/issues/5773
5520
+ [#5777]: https://github.com/DataDog/dd-trace-rb/issues/5777
5521
+ [#5811]: https://github.com/DataDog/dd-trace-rb/issues/5811
5522
+ [#5812]: https://github.com/DataDog/dd-trace-rb/issues/5812
5523
+ [#5816]: https://github.com/DataDog/dd-trace-rb/issues/5816
5524
+ [#5828]: https://github.com/DataDog/dd-trace-rb/issues/5828
5525
+ [#5830]: https://github.com/DataDog/dd-trace-rb/issues/5830
5526
+ [#5834]: https://github.com/DataDog/dd-trace-rb/issues/5834
5527
+ [#5836]: https://github.com/DataDog/dd-trace-rb/issues/5836
5528
+ [#5844]: https://github.com/DataDog/dd-trace-rb/issues/5844
5529
+ [#5845]: https://github.com/DataDog/dd-trace-rb/issues/5845
5530
+ [#5857]: https://github.com/DataDog/dd-trace-rb/issues/5857
5531
+ [#5872]: https://github.com/DataDog/dd-trace-rb/issues/5872
5532
+ [#5877]: https://github.com/DataDog/dd-trace-rb/issues/5877
5533
+ [#5881]: https://github.com/DataDog/dd-trace-rb/issues/5881
5534
+ [#5883]: https://github.com/DataDog/dd-trace-rb/issues/5883
5535
+ [#5890]: https://github.com/DataDog/dd-trace-rb/issues/5890
5536
+ [#5894]: https://github.com/DataDog/dd-trace-rb/issues/5894
5537
+ [#5907]: https://github.com/DataDog/dd-trace-rb/issues/5907
5538
+ [#5908]: https://github.com/DataDog/dd-trace-rb/issues/5908
5539
+ [#5911]: https://github.com/DataDog/dd-trace-rb/issues/5911
5540
+ [#5916]: https://github.com/DataDog/dd-trace-rb/issues/5916
5541
+ [#5920]: https://github.com/DataDog/dd-trace-rb/issues/5920
5542
+ [#5938]: https://github.com/DataDog/dd-trace-rb/issues/5938
5543
+ [#5940]: https://github.com/DataDog/dd-trace-rb/issues/5940
5544
+ [#5945]: https://github.com/DataDog/dd-trace-rb/issues/5945
5545
+ [#5954]: https://github.com/DataDog/dd-trace-rb/issues/5954
5546
+ [#5955]: https://github.com/DataDog/dd-trace-rb/issues/5955
5547
+ [#5960]: https://github.com/DataDog/dd-trace-rb/issues/5960
5548
+ [#5970]: https://github.com/DataDog/dd-trace-rb/issues/5970
5549
+ [#5971]: https://github.com/DataDog/dd-trace-rb/issues/5971
5550
+ [#5973]: https://github.com/DataDog/dd-trace-rb/issues/5973
5551
+ [#5975]: https://github.com/DataDog/dd-trace-rb/issues/5975
5552
+ [#5981]: https://github.com/DataDog/dd-trace-rb/issues/5981
5553
+ [#5987]: https://github.com/DataDog/dd-trace-rb/issues/5987
5554
+ [#5990]: https://github.com/DataDog/dd-trace-rb/issues/5990
5555
+ [#5991]: https://github.com/DataDog/dd-trace-rb/issues/5991
5556
+ [#5993]: https://github.com/DataDog/dd-trace-rb/issues/5993
5557
+ [#6010]: https://github.com/DataDog/dd-trace-rb/issues/6010
5558
+ [#6014]: https://github.com/DataDog/dd-trace-rb/issues/6014
5559
+ [#6020]: https://github.com/DataDog/dd-trace-rb/issues/6020
5560
+ [#6022]: https://github.com/DataDog/dd-trace-rb/issues/6022
5561
+ [#6023]: https://github.com/DataDog/dd-trace-rb/issues/6023
5562
+ [#6024]: https://github.com/DataDog/dd-trace-rb/issues/6024
5563
+ [#6047]: https://github.com/DataDog/dd-trace-rb/issues/6047
5564
+ [#6050]: https://github.com/DataDog/dd-trace-rb/issues/6050
5565
+ [#6056]: https://github.com/DataDog/dd-trace-rb/issues/6056
5566
+ [#6060]: https://github.com/DataDog/dd-trace-rb/issues/6060
5567
+ [#6064]: https://github.com/DataDog/dd-trace-rb/issues/6064
5568
+ [#6072]: https://github.com/DataDog/dd-trace-rb/issues/6072
5569
+ [#6097]: https://github.com/DataDog/dd-trace-rb/issues/6097
5570
+ [#6104]: https://github.com/DataDog/dd-trace-rb/issues/6104
5571
+ [#6116]: https://github.com/DataDog/dd-trace-rb/issues/6116
5572
+ [#6126]: https://github.com/DataDog/dd-trace-rb/issues/6126
5573
+ [#6130]: https://github.com/DataDog/dd-trace-rb/issues/6130
5574
+ [#6132]: https://github.com/DataDog/dd-trace-rb/issues/6132
5575
+ [#6133]: https://github.com/DataDog/dd-trace-rb/issues/6133
5576
+ [#6138]: https://github.com/DataDog/dd-trace-rb/issues/6138
5577
+ [#6142]: https://github.com/DataDog/dd-trace-rb/issues/6142
5578
+ [#6173]: https://github.com/DataDog/dd-trace-rb/issues/6173
5169
5579
  [@AdrianLC]: https://github.com/AdrianLC
5170
5580
  [@Azure7111]: https://github.com/Azure7111
5171
5581
  [@BabyGroot]: https://github.com/BabyGroot
@@ -5280,6 +5690,7 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
5280
5690
  [@mscrivo]: https://github.com/mscrivo
5281
5691
  [@mstruve]: https://github.com/mstruve
5282
5692
  [@mustela]: https://github.com/mustela
5693
+ [@navidemad]: https://github.com/navidemad
5283
5694
  [@nic-lan]: https://github.com/nic-lan
5284
5695
  [@noma4i]: https://github.com/noma4i
5285
5696
  [@norbertnytko]: https://github.com/norbertnytko
data/bin/ddprofrb CHANGED
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env ruby
2
- require 'datadog/profiling/tasks/exec'
3
- require 'datadog/profiling/tasks/help'
2
+ require "datadog/profiling/tasks/exec"
3
+ require "datadog/profiling/tasks/help"
4
4
 
5
5
  command = ARGV.shift
6
6
 
7
7
  case command
8
- when 'exec'
8
+ when "exec"
9
9
  Datadog::Profiling::Tasks::Exec.new(ARGV).run
10
- when 'help', '--help'
10
+ when "help", "--help"
11
11
  Datadog::Profiling::Tasks::Help.new.run
12
12
  else
13
13
  puts "Command '#{command}' is not valid for ddprofrb."
@@ -4,10 +4,18 @@
4
4
  #include <time.h>
5
5
  #include <ruby.h>
6
6
 
7
+ #ifdef __APPLE__
8
+ #include <mach/mach.h>
9
+ // On macOS, we use a mach_port_t to identify threads for CPU time queries
10
+ typedef mach_port_t cpu_time_id_t;
11
+ #else
12
+ typedef clockid_t cpu_time_id_t;
13
+ #endif
14
+
7
15
  // Contains the operating-system specific identifier needed to fetch CPU-time, and a flag to indicate if we failed to fetch it
8
16
  typedef struct {
9
17
  bool valid;
10
- clockid_t clock_id;
18
+ cpu_time_id_t clock_id;
11
19
  } thread_cpu_time_id;
12
20
 
13
21
  // Contains the current cpu time, and a flag to indicate if we failed to fetch it
@@ -0,0 +1,66 @@
1
+ #include "extconf.h"
2
+
3
+ // This file is only compiled on macOS where Mach thread APIs are available;
4
+ // Otherwise we compile clock_id_from_pthread.c (Linux)
5
+ #ifdef HAVE_MACH_THREAD_INFO
6
+
7
+ #include <pthread.h>
8
+ #include <mach/mach.h>
9
+ #include <mach/thread_info.h>
10
+
11
+ #include "clock_id.h"
12
+ #include "helpers.h"
13
+ #include "private_vm_api_access.h"
14
+ #include "ruby_helpers.h"
15
+ #include "time_helpers.h"
16
+
17
+ // Validate that our home-cooked pthread_id_for() matches pthread_self() for the current thread
18
+ void self_test_clock_id(void) {
19
+ rb_nativethread_id_t expected_pthread_id = pthread_self();
20
+ rb_nativethread_id_t actual_pthread_id = pthread_id_for(rb_thread_current());
21
+
22
+ if (expected_pthread_id != actual_pthread_id) raise_error(rb_eRuntimeError, "pthread_id_for() self-test failed");
23
+
24
+ // Also validate that we can get a valid mach thread port for the current thread
25
+ mach_port_t mach_thread = pthread_mach_thread_np(expected_pthread_id);
26
+ if (mach_thread == MACH_PORT_NULL) raise_error(rb_eRuntimeError, "pthread_mach_thread_np() self-test failed");
27
+ }
28
+
29
+ // Safety: This function is assumed never to raise exceptions by callers
30
+ thread_cpu_time_id thread_cpu_time_id_for(VALUE thread) {
31
+ rb_nativethread_id_t thread_id = pthread_id_for(thread);
32
+
33
+ if (thread_id == 0) return (thread_cpu_time_id) {.valid = false};
34
+
35
+ mach_port_t mach_thread = pthread_mach_thread_np(thread_id);
36
+
37
+ if (mach_thread == MACH_PORT_NULL) {
38
+ return (thread_cpu_time_id) {.valid = false};
39
+ }
40
+
41
+ return (thread_cpu_time_id) {.valid = true, .clock_id = mach_thread};
42
+ }
43
+
44
+ thread_cpu_time thread_cpu_time_for(thread_cpu_time_id time_id) {
45
+ thread_cpu_time error = (thread_cpu_time) {.valid = false};
46
+
47
+ if (!time_id.valid) return error;
48
+
49
+ // We intentionally use thread_info() for all threads, including the current one, even though
50
+ // clock_gettime(CLOCK_THREAD_CPUTIME_ID) is ~5x faster for the current thread. Mixing the two
51
+ // sources causes CPU time to appear to go backwards: thread_info() has microsecond precision
52
+ // while clock_gettime() has nanosecond precision, and comparing values across sources on
53
+ // successive samples produces small negative deltas.
54
+ struct thread_basic_info info;
55
+ mach_msg_type_number_t count = THREAD_BASIC_INFO_COUNT;
56
+ kern_return_t kr = thread_info(time_id.clock_id, THREAD_BASIC_INFO, (thread_info_t)&info, &count);
57
+
58
+ if (kr != KERN_SUCCESS) return error;
59
+
60
+ long user_ns = SECONDS_AS_NS(info.user_time.seconds) + MICROS_AS_NS(info.user_time.microseconds);
61
+ long system_ns = SECONDS_AS_NS(info.system_time.seconds) + MICROS_AS_NS(info.system_time.microseconds);
62
+
63
+ return (thread_cpu_time) {.valid = true, .result_ns = user_ns + system_ns};
64
+ }
65
+
66
+ #endif
@@ -1,7 +1,7 @@
1
1
  #include "extconf.h"
2
2
 
3
3
  // This file is only compiled on systems where pthread_getcpuclockid() is available;
4
- // Otherwise we compile clock_id_noop.c
4
+ // Otherwise we compile clock_id_from_mach.c (macOS)
5
5
  #ifdef HAVE_PTHREAD_GETCPUCLOCKID
6
6
 
7
7
  #include <pthread.h>