datadog 2.7.1 → 2.17.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 (417) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +310 -1
  3. data/ext/datadog_profiling_native_extension/clock_id.h +2 -2
  4. data/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +66 -56
  5. data/ext/datadog_profiling_native_extension/collectors_discrete_dynamic_sampler.c +1 -1
  6. data/ext/datadog_profiling_native_extension/collectors_discrete_dynamic_sampler.h +1 -1
  7. data/ext/datadog_profiling_native_extension/collectors_idle_sampling_helper.c +16 -16
  8. data/ext/datadog_profiling_native_extension/collectors_stack.c +10 -10
  9. data/ext/datadog_profiling_native_extension/collectors_stack.h +2 -2
  10. data/ext/datadog_profiling_native_extension/collectors_thread_context.c +314 -145
  11. data/ext/datadog_profiling_native_extension/datadog_ruby_common.c +1 -4
  12. data/ext/datadog_profiling_native_extension/datadog_ruby_common.h +10 -0
  13. data/ext/datadog_profiling_native_extension/encoded_profile.c +79 -0
  14. data/ext/datadog_profiling_native_extension/encoded_profile.h +8 -0
  15. data/ext/datadog_profiling_native_extension/extconf.rb +7 -8
  16. data/ext/datadog_profiling_native_extension/gvl_profiling_helper.c +2 -0
  17. data/ext/datadog_profiling_native_extension/gvl_profiling_helper.h +0 -8
  18. data/ext/datadog_profiling_native_extension/heap_recorder.c +61 -174
  19. data/ext/datadog_profiling_native_extension/heap_recorder.h +2 -2
  20. data/ext/datadog_profiling_native_extension/http_transport.c +64 -98
  21. data/ext/datadog_profiling_native_extension/private_vm_api_access.c +68 -1
  22. data/ext/datadog_profiling_native_extension/private_vm_api_access.h +10 -1
  23. data/ext/datadog_profiling_native_extension/profiling.c +19 -8
  24. data/ext/datadog_profiling_native_extension/ruby_helpers.c +8 -8
  25. data/ext/datadog_profiling_native_extension/stack_recorder.c +84 -131
  26. data/ext/datadog_profiling_native_extension/stack_recorder.h +2 -2
  27. data/ext/datadog_profiling_native_extension/time_helpers.h +1 -1
  28. data/ext/datadog_profiling_native_extension/unsafe_api_calls_check.c +47 -0
  29. data/ext/datadog_profiling_native_extension/unsafe_api_calls_check.h +31 -0
  30. data/ext/libdatadog_api/crashtracker.c +17 -15
  31. data/ext/libdatadog_api/crashtracker.h +5 -0
  32. data/ext/libdatadog_api/datadog_ruby_common.c +1 -4
  33. data/ext/libdatadog_api/datadog_ruby_common.h +10 -0
  34. data/ext/libdatadog_api/init.c +15 -0
  35. data/ext/libdatadog_api/library_config.c +122 -0
  36. data/ext/libdatadog_api/library_config.h +19 -0
  37. data/ext/libdatadog_api/macos_development.md +3 -3
  38. data/ext/libdatadog_api/process_discovery.c +117 -0
  39. data/ext/libdatadog_api/process_discovery.h +5 -0
  40. data/ext/libdatadog_extconf_helpers.rb +1 -1
  41. data/lib/datadog/appsec/actions_handler/serializable_backtrace.rb +89 -0
  42. data/lib/datadog/appsec/actions_handler.rb +49 -0
  43. data/lib/datadog/appsec/anonymizer.rb +16 -0
  44. data/lib/datadog/appsec/api_security/lru_cache.rb +49 -0
  45. data/lib/datadog/appsec/api_security.rb +9 -0
  46. data/lib/datadog/appsec/assets/waf_rules/README.md +50 -5
  47. data/lib/datadog/appsec/assets/waf_rules/processors.json +239 -10
  48. data/lib/datadog/appsec/assets/waf_rules/recommended.json +355 -157
  49. data/lib/datadog/appsec/assets/waf_rules/scanners.json +926 -17
  50. data/lib/datadog/appsec/assets/waf_rules/strict.json +62 -32
  51. data/lib/datadog/appsec/autoload.rb +1 -1
  52. data/lib/datadog/appsec/component.rb +41 -33
  53. data/lib/datadog/appsec/compressed_json.rb +40 -0
  54. data/lib/datadog/appsec/configuration/settings.rb +152 -25
  55. data/lib/datadog/appsec/context.rb +74 -0
  56. data/lib/datadog/appsec/contrib/active_record/instrumentation.rb +92 -0
  57. data/lib/datadog/appsec/contrib/active_record/integration.rb +41 -0
  58. data/lib/datadog/appsec/contrib/active_record/patcher.rb +101 -0
  59. data/lib/datadog/appsec/contrib/auto_instrument.rb +1 -1
  60. data/lib/datadog/appsec/contrib/devise/configuration.rb +52 -0
  61. data/lib/datadog/appsec/contrib/devise/data_extractor.rb +78 -0
  62. data/lib/datadog/appsec/contrib/devise/ext.rb +22 -0
  63. data/lib/datadog/appsec/contrib/devise/integration.rb +1 -2
  64. data/lib/datadog/appsec/contrib/devise/patcher.rb +33 -25
  65. data/lib/datadog/appsec/contrib/devise/patches/signin_tracking_patch.rb +102 -0
  66. data/lib/datadog/appsec/contrib/devise/patches/signup_tracking_patch.rb +69 -0
  67. data/lib/datadog/appsec/contrib/devise/{patcher/rememberable_patch.rb → patches/skip_signin_tracking_patch.rb} +3 -3
  68. data/lib/datadog/appsec/contrib/devise/tracking_middleware.rb +106 -0
  69. data/lib/datadog/appsec/contrib/excon/integration.rb +41 -0
  70. data/lib/datadog/appsec/contrib/excon/patcher.rb +28 -0
  71. data/lib/datadog/appsec/contrib/excon/ssrf_detection_middleware.rb +42 -0
  72. data/lib/datadog/appsec/contrib/faraday/connection_patch.rb +22 -0
  73. data/lib/datadog/appsec/contrib/faraday/integration.rb +42 -0
  74. data/lib/datadog/appsec/contrib/faraday/patcher.rb +53 -0
  75. data/lib/datadog/appsec/contrib/faraday/rack_builder_patch.rb +22 -0
  76. data/lib/datadog/appsec/contrib/faraday/ssrf_detection_middleware.rb +41 -0
  77. data/lib/datadog/appsec/contrib/graphql/appsec_trace.rb +1 -7
  78. data/lib/datadog/appsec/contrib/graphql/gateway/watcher.rb +17 -30
  79. data/lib/datadog/appsec/contrib/graphql/integration.rb +1 -1
  80. data/lib/datadog/appsec/contrib/graphql/patcher.rb +0 -3
  81. data/lib/datadog/appsec/contrib/rack/ext.rb +34 -0
  82. data/lib/datadog/appsec/contrib/rack/gateway/response.rb +3 -3
  83. data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +78 -98
  84. data/lib/datadog/appsec/contrib/rack/integration.rb +1 -1
  85. data/lib/datadog/appsec/contrib/rack/patcher.rb +0 -3
  86. data/lib/datadog/appsec/contrib/rack/request_body_middleware.rb +10 -11
  87. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +52 -68
  88. data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +16 -33
  89. data/lib/datadog/appsec/contrib/rails/integration.rb +1 -1
  90. data/lib/datadog/appsec/contrib/rails/patcher.rb +25 -38
  91. data/lib/datadog/appsec/contrib/rest_client/integration.rb +45 -0
  92. data/lib/datadog/appsec/contrib/rest_client/patcher.rb +28 -0
  93. data/lib/datadog/appsec/contrib/rest_client/request_ssrf_detection_patch.rb +38 -0
  94. data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +31 -68
  95. data/lib/datadog/appsec/contrib/sinatra/integration.rb +1 -1
  96. data/lib/datadog/appsec/contrib/sinatra/patcher.rb +5 -31
  97. data/lib/datadog/appsec/event.rb +96 -135
  98. data/lib/datadog/appsec/ext.rb +12 -3
  99. data/lib/datadog/appsec/instrumentation/gateway/argument.rb +7 -2
  100. data/lib/datadog/appsec/instrumentation/gateway/middleware.rb +24 -0
  101. data/lib/datadog/appsec/instrumentation/gateway.rb +17 -22
  102. data/lib/datadog/appsec/metrics/collector.rb +38 -0
  103. data/lib/datadog/appsec/metrics/exporter.rb +35 -0
  104. data/lib/datadog/appsec/metrics/telemetry.rb +23 -0
  105. data/lib/datadog/appsec/metrics.rb +13 -0
  106. data/lib/datadog/appsec/monitor/gateway/watcher.rb +52 -32
  107. data/lib/datadog/appsec/processor/rule_loader.rb +26 -31
  108. data/lib/datadog/appsec/processor/rule_merger.rb +7 -6
  109. data/lib/datadog/appsec/processor.rb +5 -4
  110. data/lib/datadog/appsec/remote.rb +26 -12
  111. data/lib/datadog/appsec/response.rb +19 -85
  112. data/lib/datadog/appsec/security_engine/result.rb +67 -0
  113. data/lib/datadog/appsec/security_engine/runner.rb +88 -0
  114. data/lib/datadog/appsec/security_engine.rb +9 -0
  115. data/lib/datadog/appsec/security_event.rb +39 -0
  116. data/lib/datadog/appsec/utils.rb +0 -2
  117. data/lib/datadog/appsec.rb +23 -10
  118. data/lib/datadog/auto_instrument.rb +3 -0
  119. data/lib/datadog/core/buffer/random.rb +18 -2
  120. data/lib/datadog/core/configuration/agent_settings_resolver.rb +42 -14
  121. data/lib/datadog/core/configuration/agentless_settings_resolver.rb +176 -0
  122. data/lib/datadog/core/configuration/components.rb +76 -32
  123. data/lib/datadog/core/configuration/components_state.rb +23 -0
  124. data/lib/datadog/core/configuration/ext.rb +5 -1
  125. data/lib/datadog/core/configuration/option.rb +79 -43
  126. data/lib/datadog/core/configuration/option_definition.rb +6 -4
  127. data/lib/datadog/core/configuration/options.rb +3 -3
  128. data/lib/datadog/core/configuration/settings.rb +100 -41
  129. data/lib/datadog/core/configuration/stable_config.rb +23 -0
  130. data/lib/datadog/core/configuration.rb +43 -11
  131. data/lib/datadog/{tracing → core}/contrib/rails/utils.rb +1 -3
  132. data/lib/datadog/core/crashtracking/component.rb +4 -13
  133. data/lib/datadog/core/diagnostics/environment_logger.rb +1 -1
  134. data/lib/datadog/core/encoding.rb +17 -1
  135. data/lib/datadog/core/environment/agent_info.rb +78 -0
  136. data/lib/datadog/core/environment/cgroup.rb +10 -12
  137. data/lib/datadog/core/environment/container.rb +38 -40
  138. data/lib/datadog/core/environment/ext.rb +6 -6
  139. data/lib/datadog/core/environment/git.rb +1 -0
  140. data/lib/datadog/core/environment/identity.rb +3 -3
  141. data/lib/datadog/core/environment/platform.rb +3 -3
  142. data/lib/datadog/core/environment/variable_helpers.rb +1 -1
  143. data/lib/datadog/core/error.rb +11 -9
  144. data/lib/datadog/core/logger.rb +2 -2
  145. data/lib/datadog/core/metrics/client.rb +27 -27
  146. data/lib/datadog/core/metrics/logging.rb +5 -5
  147. data/lib/datadog/core/process_discovery.rb +32 -0
  148. data/lib/datadog/core/rate_limiter.rb +4 -2
  149. data/lib/datadog/core/remote/client/capabilities.rb +6 -0
  150. data/lib/datadog/core/remote/client.rb +107 -92
  151. data/lib/datadog/core/remote/component.rb +18 -19
  152. data/lib/datadog/core/remote/configuration/digest.rb +7 -7
  153. data/lib/datadog/core/remote/configuration/path.rb +1 -1
  154. data/lib/datadog/core/remote/configuration/repository.rb +2 -1
  155. data/lib/datadog/core/remote/negotiation.rb +9 -9
  156. data/lib/datadog/core/remote/transport/config.rb +4 -3
  157. data/lib/datadog/core/remote/transport/http/api.rb +13 -18
  158. data/lib/datadog/core/remote/transport/http/client.rb +5 -4
  159. data/lib/datadog/core/remote/transport/http/config.rb +27 -55
  160. data/lib/datadog/core/remote/transport/http/negotiation.rb +8 -51
  161. data/lib/datadog/core/remote/transport/http.rb +25 -94
  162. data/lib/datadog/core/remote/transport/negotiation.rb +17 -4
  163. data/lib/datadog/core/remote/worker.rb +10 -7
  164. data/lib/datadog/core/runtime/metrics.rb +12 -5
  165. data/lib/datadog/core/telemetry/component.rb +84 -49
  166. data/lib/datadog/core/telemetry/emitter.rb +23 -11
  167. data/lib/datadog/core/telemetry/event/app_client_configuration_change.rb +65 -0
  168. data/lib/datadog/core/telemetry/event/app_closing.rb +18 -0
  169. data/lib/datadog/core/telemetry/event/app_dependencies_loaded.rb +33 -0
  170. data/lib/datadog/core/telemetry/event/app_heartbeat.rb +18 -0
  171. data/lib/datadog/core/telemetry/event/app_integrations_change.rb +58 -0
  172. data/lib/datadog/core/telemetry/event/app_started.rb +179 -0
  173. data/lib/datadog/core/telemetry/event/base.rb +40 -0
  174. data/lib/datadog/core/telemetry/event/distributions.rb +18 -0
  175. data/lib/datadog/core/telemetry/event/generate_metrics.rb +43 -0
  176. data/lib/datadog/core/telemetry/event/log.rb +76 -0
  177. data/lib/datadog/core/telemetry/event/message_batch.rb +42 -0
  178. data/lib/datadog/core/telemetry/event/synth_app_client_configuration_change.rb +43 -0
  179. data/lib/datadog/core/telemetry/event.rb +17 -383
  180. data/lib/datadog/core/telemetry/ext.rb +1 -0
  181. data/lib/datadog/core/telemetry/http/adapters/net.rb +12 -97
  182. data/lib/datadog/core/telemetry/logger.rb +1 -1
  183. data/lib/datadog/core/telemetry/logging.rb +2 -2
  184. data/lib/datadog/core/telemetry/metric.rb +28 -6
  185. data/lib/datadog/core/telemetry/request.rb +4 -4
  186. data/lib/datadog/core/telemetry/transport/http/api.rb +43 -0
  187. data/lib/datadog/core/telemetry/transport/http/client.rb +49 -0
  188. data/lib/datadog/core/telemetry/transport/http/telemetry.rb +92 -0
  189. data/lib/datadog/core/telemetry/transport/http.rb +63 -0
  190. data/lib/datadog/core/telemetry/transport/telemetry.rb +51 -0
  191. data/lib/datadog/core/telemetry/worker.rb +128 -25
  192. data/lib/datadog/core/transport/http/adapters/test.rb +2 -1
  193. data/lib/datadog/core/transport/http/adapters/unix_socket.rb +1 -1
  194. data/lib/datadog/{tracing → core}/transport/http/api/instance.rb +18 -1
  195. data/lib/datadog/core/transport/http/api/spec.rb +36 -0
  196. data/lib/datadog/{tracing → core}/transport/http/builder.rb +53 -31
  197. data/lib/datadog/core/transport/http.rb +75 -0
  198. data/lib/datadog/core/transport/response.rb +4 -0
  199. data/lib/datadog/core/utils/at_fork_monkey_patch.rb +6 -6
  200. data/lib/datadog/core/utils/duration.rb +32 -32
  201. data/lib/datadog/core/utils/forking.rb +2 -2
  202. data/lib/datadog/core/utils/network.rb +6 -6
  203. data/lib/datadog/core/utils/only_once_successful.rb +16 -5
  204. data/lib/datadog/core/utils/time.rb +20 -0
  205. data/lib/datadog/core/utils/truncation.rb +21 -0
  206. data/lib/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rb +1 -1
  207. data/lib/datadog/core/vendor/multipart-post/multipart/post/multipartable.rb +8 -8
  208. data/lib/datadog/core/vendor/multipart-post/multipart/post/parts.rb +7 -7
  209. data/lib/datadog/core/worker.rb +1 -1
  210. data/lib/datadog/core/workers/async.rb +29 -12
  211. data/lib/datadog/core/workers/interval_loop.rb +12 -1
  212. data/lib/datadog/core/workers/runtime_metrics.rb +2 -2
  213. data/lib/datadog/core.rb +8 -0
  214. data/lib/datadog/di/base.rb +115 -0
  215. data/lib/datadog/di/boot.rb +34 -0
  216. data/lib/datadog/di/code_tracker.rb +26 -15
  217. data/lib/datadog/di/component.rb +23 -14
  218. data/lib/datadog/di/configuration/settings.rb +25 -1
  219. data/lib/datadog/di/contrib/active_record.rb +1 -0
  220. data/lib/datadog/di/contrib/railtie.rb +15 -0
  221. data/lib/datadog/di/contrib.rb +28 -0
  222. data/lib/datadog/di/error.rb +5 -0
  223. data/lib/datadog/di/instrumenter.rb +111 -20
  224. data/lib/datadog/di/logger.rb +30 -0
  225. data/lib/datadog/di/preload.rb +18 -0
  226. data/lib/datadog/di/probe.rb +14 -7
  227. data/lib/datadog/di/probe_builder.rb +1 -0
  228. data/lib/datadog/di/probe_manager.rb +11 -5
  229. data/lib/datadog/di/probe_notification_builder.rb +34 -8
  230. data/lib/datadog/di/probe_notifier_worker.rb +52 -26
  231. data/lib/datadog/di/redactor.rb +0 -1
  232. data/lib/datadog/di/remote.rb +147 -0
  233. data/lib/datadog/di/serializer.rb +14 -7
  234. data/lib/datadog/di/transport/diagnostics.rb +62 -0
  235. data/lib/datadog/di/transport/http/api.rb +42 -0
  236. data/lib/datadog/di/transport/http/client.rb +47 -0
  237. data/lib/datadog/di/transport/http/diagnostics.rb +65 -0
  238. data/lib/datadog/di/transport/http/input.rb +67 -0
  239. data/lib/datadog/di/transport/http.rb +57 -0
  240. data/lib/datadog/di/transport/input.rb +62 -0
  241. data/lib/datadog/di/utils.rb +103 -0
  242. data/lib/datadog/di.rb +14 -76
  243. data/lib/datadog/error_tracking/collector.rb +87 -0
  244. data/lib/datadog/error_tracking/component.rb +167 -0
  245. data/lib/datadog/error_tracking/configuration/settings.rb +63 -0
  246. data/lib/datadog/error_tracking/configuration.rb +11 -0
  247. data/lib/datadog/error_tracking/ext.rb +18 -0
  248. data/lib/datadog/error_tracking/extensions.rb +16 -0
  249. data/lib/datadog/error_tracking/filters.rb +77 -0
  250. data/lib/datadog/error_tracking.rb +18 -0
  251. data/lib/datadog/kit/appsec/events.rb +15 -3
  252. data/lib/datadog/kit/identity.rb +9 -5
  253. data/lib/datadog/opentelemetry/api/baggage.rb +90 -0
  254. data/lib/datadog/opentelemetry/api/baggage.rbs +26 -0
  255. data/lib/datadog/opentelemetry/api/context.rb +16 -2
  256. data/lib/datadog/opentelemetry/sdk/trace/span.rb +1 -1
  257. data/lib/datadog/opentelemetry.rb +2 -1
  258. data/lib/datadog/profiling/collectors/code_provenance.rb +1 -1
  259. data/lib/datadog/profiling/collectors/info.rb +3 -0
  260. data/lib/datadog/profiling/collectors/thread_context.rb +1 -1
  261. data/lib/datadog/profiling/component.rb +60 -76
  262. data/lib/datadog/profiling/encoded_profile.rb +11 -0
  263. data/lib/datadog/profiling/exporter.rb +3 -4
  264. data/lib/datadog/profiling/ext.rb +0 -2
  265. data/lib/datadog/profiling/flush.rb +5 -8
  266. data/lib/datadog/profiling/http_transport.rb +6 -85
  267. data/lib/datadog/profiling/load_native_extension.rb +1 -33
  268. data/lib/datadog/profiling/scheduler.rb +8 -1
  269. data/lib/datadog/profiling/stack_recorder.rb +4 -4
  270. data/lib/datadog/profiling/tag_builder.rb +1 -5
  271. data/lib/datadog/profiling.rb +6 -2
  272. data/lib/datadog/tracing/analytics.rb +1 -1
  273. data/lib/datadog/tracing/component.rb +16 -12
  274. data/lib/datadog/tracing/configuration/ext.rb +8 -1
  275. data/lib/datadog/tracing/configuration/settings.rb +22 -10
  276. data/lib/datadog/tracing/context_provider.rb +1 -1
  277. data/lib/datadog/tracing/contrib/action_cable/integration.rb +5 -2
  278. data/lib/datadog/tracing/contrib/action_mailer/integration.rb +6 -2
  279. data/lib/datadog/tracing/contrib/action_pack/integration.rb +5 -2
  280. data/lib/datadog/tracing/contrib/action_view/integration.rb +5 -2
  281. data/lib/datadog/tracing/contrib/active_job/integration.rb +5 -2
  282. data/lib/datadog/tracing/contrib/active_record/integration.rb +7 -3
  283. data/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb +7 -2
  284. data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +36 -1
  285. data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +4 -0
  286. data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +14 -4
  287. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +10 -0
  288. data/lib/datadog/tracing/contrib/active_support/integration.rb +5 -2
  289. data/lib/datadog/tracing/contrib/auto_instrument.rb +2 -2
  290. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +10 -0
  291. data/lib/datadog/tracing/contrib/aws/integration.rb +3 -0
  292. data/lib/datadog/tracing/contrib/aws/parsed_context.rb +5 -1
  293. data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +3 -0
  294. data/lib/datadog/tracing/contrib/configuration/settings.rb +1 -1
  295. data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +4 -0
  296. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +6 -1
  297. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +4 -5
  298. data/lib/datadog/tracing/contrib/excon/middleware.rb +5 -3
  299. data/lib/datadog/tracing/contrib/ext.rb +1 -0
  300. data/lib/datadog/tracing/contrib/extensions.rb +29 -3
  301. data/lib/datadog/tracing/contrib/faraday/middleware.rb +5 -3
  302. data/lib/datadog/tracing/contrib/graphql/configuration/error_extension_env_parser.rb +21 -0
  303. data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +11 -0
  304. data/lib/datadog/tracing/contrib/graphql/ext.rb +5 -0
  305. data/lib/datadog/tracing/contrib/graphql/unified_trace.rb +102 -11
  306. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +7 -1
  307. data/lib/datadog/tracing/contrib/grpc/distributed/propagation.rb +3 -0
  308. data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +0 -15
  309. data/lib/datadog/tracing/contrib/http/distributed/propagation.rb +4 -1
  310. data/lib/datadog/tracing/contrib/http/instrumentation.rb +6 -10
  311. data/lib/datadog/tracing/contrib/http/integration.rb +3 -0
  312. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +6 -16
  313. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +7 -15
  314. data/lib/datadog/tracing/contrib/httprb/integration.rb +3 -0
  315. data/lib/datadog/tracing/contrib/kafka/integration.rb +3 -0
  316. data/lib/datadog/tracing/contrib/karafka/configuration/settings.rb +27 -0
  317. data/lib/datadog/tracing/contrib/karafka/distributed/propagation.rb +48 -0
  318. data/lib/datadog/tracing/contrib/karafka/ext.rb +27 -0
  319. data/lib/datadog/tracing/contrib/karafka/integration.rb +45 -0
  320. data/lib/datadog/tracing/contrib/karafka/monitor.rb +66 -0
  321. data/lib/datadog/tracing/contrib/karafka/patcher.rb +71 -0
  322. data/lib/datadog/tracing/contrib/karafka.rb +37 -0
  323. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +8 -0
  324. data/lib/datadog/tracing/contrib/mongodb/ext.rb +1 -0
  325. data/lib/datadog/tracing/contrib/mongodb/integration.rb +3 -0
  326. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +18 -1
  327. data/lib/datadog/tracing/contrib/opensearch/configuration/settings.rb +17 -0
  328. data/lib/datadog/tracing/contrib/opensearch/ext.rb +9 -0
  329. data/lib/datadog/tracing/contrib/opensearch/integration.rb +3 -0
  330. data/lib/datadog/tracing/contrib/opensearch/patcher.rb +5 -1
  331. data/lib/datadog/tracing/contrib/patcher.rb +5 -2
  332. data/lib/datadog/tracing/contrib/presto/integration.rb +3 -0
  333. data/lib/datadog/tracing/contrib/rack/header_collection.rb +11 -1
  334. data/lib/datadog/tracing/contrib/rack/integration.rb +2 -2
  335. data/lib/datadog/tracing/contrib/rack/middlewares.rb +1 -1
  336. data/lib/datadog/tracing/contrib/rack/request_queue.rb +1 -1
  337. data/lib/datadog/tracing/contrib/rails/framework.rb +2 -2
  338. data/lib/datadog/tracing/contrib/rails/patcher.rb +1 -1
  339. data/lib/datadog/tracing/contrib/rest_client/integration.rb +3 -0
  340. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +5 -3
  341. data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +6 -1
  342. data/lib/datadog/tracing/contrib/sidekiq/distributed/propagation.rb +3 -0
  343. data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +1 -1
  344. data/lib/datadog/tracing/contrib/span_attribute_schema.rb +6 -1
  345. data/lib/datadog/tracing/contrib/support.rb +28 -0
  346. data/lib/datadog/tracing/contrib.rb +1 -0
  347. data/lib/datadog/tracing/correlation.rb +9 -2
  348. data/lib/datadog/tracing/distributed/b3_multi.rb +1 -1
  349. data/lib/datadog/tracing/distributed/b3_single.rb +1 -1
  350. data/lib/datadog/tracing/distributed/baggage.rb +131 -0
  351. data/lib/datadog/tracing/distributed/datadog.rb +4 -2
  352. data/lib/datadog/tracing/distributed/propagation.rb +25 -4
  353. data/lib/datadog/tracing/distributed/propagation_policy.rb +42 -0
  354. data/lib/datadog/tracing/metadata/errors.rb +4 -4
  355. data/lib/datadog/tracing/metadata/ext.rb +5 -0
  356. data/lib/datadog/tracing/metadata/metastruct.rb +36 -0
  357. data/lib/datadog/tracing/metadata/metastruct_tagging.rb +42 -0
  358. data/lib/datadog/tracing/metadata.rb +2 -0
  359. data/lib/datadog/tracing/sampling/rate_sampler.rb +2 -1
  360. data/lib/datadog/tracing/sampling/span/rule.rb +0 -1
  361. data/lib/datadog/tracing/span.rb +22 -5
  362. data/lib/datadog/tracing/span_event.rb +124 -4
  363. data/lib/datadog/tracing/span_operation.rb +52 -16
  364. data/lib/datadog/tracing/sync_writer.rb +9 -5
  365. data/lib/datadog/tracing/trace_digest.rb +9 -2
  366. data/lib/datadog/tracing/trace_operation.rb +44 -24
  367. data/lib/datadog/tracing/trace_segment.rb +6 -4
  368. data/lib/datadog/tracing/tracer.rb +60 -12
  369. data/lib/datadog/tracing/transport/http/api.rb +5 -4
  370. data/lib/datadog/tracing/transport/http/client.rb +5 -4
  371. data/lib/datadog/tracing/transport/http/traces.rb +13 -44
  372. data/lib/datadog/tracing/transport/http.rb +13 -70
  373. data/lib/datadog/tracing/transport/serializable_trace.rb +31 -7
  374. data/lib/datadog/tracing/transport/trace_formatter.rb +7 -0
  375. data/lib/datadog/tracing/transport/traces.rb +47 -13
  376. data/lib/datadog/tracing/utils.rb +1 -1
  377. data/lib/datadog/tracing/workers/trace_writer.rb +8 -5
  378. data/lib/datadog/tracing/workers.rb +5 -4
  379. data/lib/datadog/tracing/writer.rb +10 -6
  380. data/lib/datadog/tracing.rb +16 -3
  381. data/lib/datadog/version.rb +2 -2
  382. data/lib/datadog.rb +2 -0
  383. metadata +143 -50
  384. data/ext/datadog_profiling_loader/datadog_profiling_loader.c +0 -142
  385. data/ext/datadog_profiling_loader/extconf.rb +0 -60
  386. data/lib/datadog/appsec/contrib/devise/event.rb +0 -57
  387. data/lib/datadog/appsec/contrib/devise/patcher/authenticatable_patch.rb +0 -77
  388. data/lib/datadog/appsec/contrib/devise/patcher/registration_controller_patch.rb +0 -54
  389. data/lib/datadog/appsec/contrib/devise/resource.rb +0 -35
  390. data/lib/datadog/appsec/contrib/devise/tracking.rb +0 -57
  391. data/lib/datadog/appsec/contrib/graphql/reactive/multiplex.rb +0 -46
  392. data/lib/datadog/appsec/contrib/patcher.rb +0 -12
  393. data/lib/datadog/appsec/contrib/rack/reactive/request.rb +0 -69
  394. data/lib/datadog/appsec/contrib/rack/reactive/request_body.rb +0 -47
  395. data/lib/datadog/appsec/contrib/rack/reactive/response.rb +0 -53
  396. data/lib/datadog/appsec/contrib/rails/reactive/action.rb +0 -53
  397. data/lib/datadog/appsec/contrib/sinatra/ext.rb +0 -14
  398. data/lib/datadog/appsec/contrib/sinatra/reactive/routed.rb +0 -48
  399. data/lib/datadog/appsec/monitor/reactive/set_user.rb +0 -45
  400. data/lib/datadog/appsec/processor/actions.rb +0 -49
  401. data/lib/datadog/appsec/processor/context.rb +0 -107
  402. data/lib/datadog/appsec/reactive/address_hash.rb +0 -22
  403. data/lib/datadog/appsec/reactive/engine.rb +0 -47
  404. data/lib/datadog/appsec/reactive/operation.rb +0 -68
  405. data/lib/datadog/appsec/reactive/subscriber.rb +0 -19
  406. data/lib/datadog/appsec/scope.rb +0 -58
  407. data/lib/datadog/appsec/utils/trace_operation.rb +0 -15
  408. data/lib/datadog/core/crashtracking/agent_base_url.rb +0 -21
  409. data/lib/datadog/core/remote/transport/http/api/instance.rb +0 -39
  410. data/lib/datadog/core/remote/transport/http/api/spec.rb +0 -21
  411. data/lib/datadog/core/remote/transport/http/builder.rb +0 -219
  412. data/lib/datadog/core/telemetry/http/env.rb +0 -20
  413. data/lib/datadog/core/telemetry/http/ext.rb +0 -28
  414. data/lib/datadog/core/telemetry/http/response.rb +0 -70
  415. data/lib/datadog/core/telemetry/http/transport.rb +0 -90
  416. data/lib/datadog/di/transport.rb +0 -81
  417. data/lib/datadog/tracing/transport/http/api/spec.rb +0 -19
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: datadog
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.7.1
4
+ version: 2.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Datadog, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-11-28 00:00:00.000000000 Z
11
+ date: 2025-06-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack
@@ -30,42 +30,62 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '3.3'
33
+ version: '3.4'
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: 3.4.1
34
37
  type: :runtime
35
38
  prerelease: false
36
39
  version_requirements: !ruby/object:Gem::Requirement
37
40
  requirements:
38
41
  - - "~>"
39
42
  - !ruby/object:Gem::Version
40
- version: '3.3'
43
+ version: '3.4'
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 3.4.1
41
47
  - !ruby/object:Gem::Dependency
42
48
  name: libddwaf
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
51
  - - "~>"
46
52
  - !ruby/object:Gem::Version
47
- version: 1.15.0.0.0
53
+ version: 1.22.0.0.2
48
54
  type: :runtime
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
51
57
  requirements:
52
58
  - - "~>"
53
59
  - !ruby/object:Gem::Version
54
- version: 1.15.0.0.0
60
+ version: 1.22.0.0.2
55
61
  - !ruby/object:Gem::Dependency
56
62
  name: libdatadog
57
63
  requirement: !ruby/object:Gem::Requirement
58
64
  requirements:
59
65
  - - "~>"
60
66
  - !ruby/object:Gem::Version
61
- version: 14.1.0.1.0
67
+ version: 18.1.0.1.0
62
68
  type: :runtime
63
69
  prerelease: false
64
70
  version_requirements: !ruby/object:Gem::Requirement
65
71
  requirements:
66
72
  - - "~>"
67
73
  - !ruby/object:Gem::Version
68
- version: 14.1.0.1.0
74
+ version: 18.1.0.1.0
75
+ - !ruby/object:Gem::Dependency
76
+ name: logger
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ type: :runtime
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
69
89
  description: |
70
90
  datadog is Datadog's client library for Ruby. It includes a suite of tools
71
91
  which provide visibility into the performance and security of Ruby applications,
@@ -76,7 +96,6 @@ executables:
76
96
  - ddprofrb
77
97
  extensions:
78
98
  - ext/datadog_profiling_native_extension/extconf.rb
79
- - ext/datadog_profiling_loader/extconf.rb
80
99
  - ext/libdatadog_api/extconf.rb
81
100
  extra_rdoc_files: []
82
101
  files:
@@ -88,8 +107,6 @@ files:
88
107
  - NOTICE
89
108
  - README.md
90
109
  - bin/ddprofrb
91
- - ext/datadog_profiling_loader/datadog_profiling_loader.c
92
- - ext/datadog_profiling_loader/extconf.rb
93
110
  - ext/datadog_profiling_native_extension/NativeExtensionDesign.md
94
111
  - ext/datadog_profiling_native_extension/clock_id.h
95
112
  - ext/datadog_profiling_native_extension/clock_id_from_pthread.c
@@ -109,6 +126,8 @@ files:
109
126
  - ext/datadog_profiling_native_extension/collectors_thread_context.h
110
127
  - ext/datadog_profiling_native_extension/datadog_ruby_common.c
111
128
  - ext/datadog_profiling_native_extension/datadog_ruby_common.h
129
+ - ext/datadog_profiling_native_extension/encoded_profile.c
130
+ - ext/datadog_profiling_native_extension/encoded_profile.h
112
131
  - ext/datadog_profiling_native_extension/extconf.rb
113
132
  - ext/datadog_profiling_native_extension/gvl_profiling_helper.c
114
133
  - ext/datadog_profiling_native_extension/gvl_profiling_helper.h
@@ -130,14 +149,27 @@ files:
130
149
  - ext/datadog_profiling_native_extension/stack_recorder.h
131
150
  - ext/datadog_profiling_native_extension/time_helpers.c
132
151
  - ext/datadog_profiling_native_extension/time_helpers.h
152
+ - ext/datadog_profiling_native_extension/unsafe_api_calls_check.c
153
+ - ext/datadog_profiling_native_extension/unsafe_api_calls_check.h
133
154
  - ext/libdatadog_api/crashtracker.c
155
+ - ext/libdatadog_api/crashtracker.h
134
156
  - ext/libdatadog_api/datadog_ruby_common.c
135
157
  - ext/libdatadog_api/datadog_ruby_common.h
136
158
  - ext/libdatadog_api/extconf.rb
159
+ - ext/libdatadog_api/init.c
160
+ - ext/libdatadog_api/library_config.c
161
+ - ext/libdatadog_api/library_config.h
137
162
  - ext/libdatadog_api/macos_development.md
163
+ - ext/libdatadog_api/process_discovery.c
164
+ - ext/libdatadog_api/process_discovery.h
138
165
  - ext/libdatadog_extconf_helpers.rb
139
166
  - lib/datadog.rb
140
167
  - lib/datadog/appsec.rb
168
+ - lib/datadog/appsec/actions_handler.rb
169
+ - lib/datadog/appsec/actions_handler/serializable_backtrace.rb
170
+ - lib/datadog/appsec/anonymizer.rb
171
+ - lib/datadog/appsec/api_security.rb
172
+ - lib/datadog/appsec/api_security/lru_cache.rb
141
173
  - lib/datadog/appsec/assets.rb
142
174
  - lib/datadog/appsec/assets/blocked.html
143
175
  - lib/datadog/appsec/assets/blocked.json
@@ -149,35 +181,43 @@ files:
149
181
  - lib/datadog/appsec/assets/waf_rules/strict.json
150
182
  - lib/datadog/appsec/autoload.rb
151
183
  - lib/datadog/appsec/component.rb
184
+ - lib/datadog/appsec/compressed_json.rb
152
185
  - lib/datadog/appsec/configuration.rb
153
186
  - lib/datadog/appsec/configuration/settings.rb
187
+ - lib/datadog/appsec/context.rb
188
+ - lib/datadog/appsec/contrib/active_record/instrumentation.rb
189
+ - lib/datadog/appsec/contrib/active_record/integration.rb
190
+ - lib/datadog/appsec/contrib/active_record/patcher.rb
154
191
  - lib/datadog/appsec/contrib/auto_instrument.rb
155
- - lib/datadog/appsec/contrib/devise/event.rb
192
+ - lib/datadog/appsec/contrib/devise/configuration.rb
193
+ - lib/datadog/appsec/contrib/devise/data_extractor.rb
156
194
  - lib/datadog/appsec/contrib/devise/ext.rb
157
195
  - lib/datadog/appsec/contrib/devise/integration.rb
158
196
  - lib/datadog/appsec/contrib/devise/patcher.rb
159
- - lib/datadog/appsec/contrib/devise/patcher/authenticatable_patch.rb
160
- - lib/datadog/appsec/contrib/devise/patcher/registration_controller_patch.rb
161
- - lib/datadog/appsec/contrib/devise/patcher/rememberable_patch.rb
162
- - lib/datadog/appsec/contrib/devise/resource.rb
163
- - lib/datadog/appsec/contrib/devise/tracking.rb
197
+ - lib/datadog/appsec/contrib/devise/patches/signin_tracking_patch.rb
198
+ - lib/datadog/appsec/contrib/devise/patches/signup_tracking_patch.rb
199
+ - lib/datadog/appsec/contrib/devise/patches/skip_signin_tracking_patch.rb
200
+ - lib/datadog/appsec/contrib/devise/tracking_middleware.rb
201
+ - lib/datadog/appsec/contrib/excon/integration.rb
202
+ - lib/datadog/appsec/contrib/excon/patcher.rb
203
+ - lib/datadog/appsec/contrib/excon/ssrf_detection_middleware.rb
204
+ - lib/datadog/appsec/contrib/faraday/connection_patch.rb
205
+ - lib/datadog/appsec/contrib/faraday/integration.rb
206
+ - lib/datadog/appsec/contrib/faraday/patcher.rb
207
+ - lib/datadog/appsec/contrib/faraday/rack_builder_patch.rb
208
+ - lib/datadog/appsec/contrib/faraday/ssrf_detection_middleware.rb
164
209
  - lib/datadog/appsec/contrib/graphql/appsec_trace.rb
165
210
  - lib/datadog/appsec/contrib/graphql/gateway/multiplex.rb
166
211
  - lib/datadog/appsec/contrib/graphql/gateway/watcher.rb
167
212
  - lib/datadog/appsec/contrib/graphql/integration.rb
168
213
  - lib/datadog/appsec/contrib/graphql/patcher.rb
169
- - lib/datadog/appsec/contrib/graphql/reactive/multiplex.rb
170
214
  - lib/datadog/appsec/contrib/integration.rb
171
- - lib/datadog/appsec/contrib/patcher.rb
172
215
  - lib/datadog/appsec/contrib/rack/ext.rb
173
216
  - lib/datadog/appsec/contrib/rack/gateway/request.rb
174
217
  - lib/datadog/appsec/contrib/rack/gateway/response.rb
175
218
  - lib/datadog/appsec/contrib/rack/gateway/watcher.rb
176
219
  - lib/datadog/appsec/contrib/rack/integration.rb
177
220
  - lib/datadog/appsec/contrib/rack/patcher.rb
178
- - lib/datadog/appsec/contrib/rack/reactive/request.rb
179
- - lib/datadog/appsec/contrib/rack/reactive/request_body.rb
180
- - lib/datadog/appsec/contrib/rack/reactive/response.rb
181
221
  - lib/datadog/appsec/contrib/rack/request_body_middleware.rb
182
222
  - lib/datadog/appsec/contrib/rack/request_middleware.rb
183
223
  - lib/datadog/appsec/contrib/rails/ext.rb
@@ -186,17 +226,17 @@ files:
186
226
  - lib/datadog/appsec/contrib/rails/gateway/watcher.rb
187
227
  - lib/datadog/appsec/contrib/rails/integration.rb
188
228
  - lib/datadog/appsec/contrib/rails/patcher.rb
189
- - lib/datadog/appsec/contrib/rails/reactive/action.rb
190
229
  - lib/datadog/appsec/contrib/rails/request.rb
191
230
  - lib/datadog/appsec/contrib/rails/request_middleware.rb
192
- - lib/datadog/appsec/contrib/sinatra/ext.rb
231
+ - lib/datadog/appsec/contrib/rest_client/integration.rb
232
+ - lib/datadog/appsec/contrib/rest_client/patcher.rb
233
+ - lib/datadog/appsec/contrib/rest_client/request_ssrf_detection_patch.rb
193
234
  - lib/datadog/appsec/contrib/sinatra/framework.rb
194
235
  - lib/datadog/appsec/contrib/sinatra/gateway/request.rb
195
236
  - lib/datadog/appsec/contrib/sinatra/gateway/route_params.rb
196
237
  - lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb
197
238
  - lib/datadog/appsec/contrib/sinatra/integration.rb
198
239
  - lib/datadog/appsec/contrib/sinatra/patcher.rb
199
- - lib/datadog/appsec/contrib/sinatra/reactive/routed.rb
200
240
  - lib/datadog/appsec/contrib/sinatra/request_middleware.rb
201
241
  - lib/datadog/appsec/event.rb
202
242
  - lib/datadog/appsec/ext.rb
@@ -204,28 +244,28 @@ files:
204
244
  - lib/datadog/appsec/instrumentation.rb
205
245
  - lib/datadog/appsec/instrumentation/gateway.rb
206
246
  - lib/datadog/appsec/instrumentation/gateway/argument.rb
247
+ - lib/datadog/appsec/instrumentation/gateway/middleware.rb
248
+ - lib/datadog/appsec/metrics.rb
249
+ - lib/datadog/appsec/metrics/collector.rb
250
+ - lib/datadog/appsec/metrics/exporter.rb
251
+ - lib/datadog/appsec/metrics/telemetry.rb
207
252
  - lib/datadog/appsec/monitor.rb
208
253
  - lib/datadog/appsec/monitor/gateway/watcher.rb
209
- - lib/datadog/appsec/monitor/reactive/set_user.rb
210
254
  - lib/datadog/appsec/processor.rb
211
- - lib/datadog/appsec/processor/actions.rb
212
- - lib/datadog/appsec/processor/context.rb
213
255
  - lib/datadog/appsec/processor/rule_loader.rb
214
256
  - lib/datadog/appsec/processor/rule_merger.rb
215
257
  - lib/datadog/appsec/rate_limiter.rb
216
- - lib/datadog/appsec/reactive/address_hash.rb
217
- - lib/datadog/appsec/reactive/engine.rb
218
- - lib/datadog/appsec/reactive/operation.rb
219
- - lib/datadog/appsec/reactive/subscriber.rb
220
258
  - lib/datadog/appsec/remote.rb
221
259
  - lib/datadog/appsec/response.rb
222
260
  - lib/datadog/appsec/sample_rate.rb
223
- - lib/datadog/appsec/scope.rb
261
+ - lib/datadog/appsec/security_engine.rb
262
+ - lib/datadog/appsec/security_engine/result.rb
263
+ - lib/datadog/appsec/security_engine/runner.rb
264
+ - lib/datadog/appsec/security_event.rb
224
265
  - lib/datadog/appsec/utils.rb
225
266
  - lib/datadog/appsec/utils/http.rb
226
267
  - lib/datadog/appsec/utils/http/media_range.rb
227
268
  - lib/datadog/appsec/utils/http/media_type.rb
228
- - lib/datadog/appsec/utils/trace_operation.rb
229
269
  - lib/datadog/auto_instrument.rb
230
270
  - lib/datadog/auto_instrument_base.rb
231
271
  - lib/datadog/core.rb
@@ -235,20 +275,24 @@ files:
235
275
  - lib/datadog/core/chunker.rb
236
276
  - lib/datadog/core/configuration.rb
237
277
  - lib/datadog/core/configuration/agent_settings_resolver.rb
278
+ - lib/datadog/core/configuration/agentless_settings_resolver.rb
238
279
  - lib/datadog/core/configuration/base.rb
239
280
  - lib/datadog/core/configuration/components.rb
281
+ - lib/datadog/core/configuration/components_state.rb
240
282
  - lib/datadog/core/configuration/ext.rb
241
283
  - lib/datadog/core/configuration/option.rb
242
284
  - lib/datadog/core/configuration/option_definition.rb
243
285
  - lib/datadog/core/configuration/options.rb
244
286
  - lib/datadog/core/configuration/settings.rb
245
- - lib/datadog/core/crashtracking/agent_base_url.rb
287
+ - lib/datadog/core/configuration/stable_config.rb
288
+ - lib/datadog/core/contrib/rails/utils.rb
246
289
  - lib/datadog/core/crashtracking/component.rb
247
290
  - lib/datadog/core/crashtracking/tag_builder.rb
248
291
  - lib/datadog/core/deprecations.rb
249
292
  - lib/datadog/core/diagnostics/environment_logger.rb
250
293
  - lib/datadog/core/diagnostics/health.rb
251
294
  - lib/datadog/core/encoding.rb
295
+ - lib/datadog/core/environment/agent_info.rb
252
296
  - lib/datadog/core/environment/cgroup.rb
253
297
  - lib/datadog/core/environment/class_count.rb
254
298
  - lib/datadog/core/environment/container.rb
@@ -276,6 +320,7 @@ files:
276
320
  - lib/datadog/core/metrics/metric.rb
277
321
  - lib/datadog/core/metrics/options.rb
278
322
  - lib/datadog/core/pin.rb
323
+ - lib/datadog/core/process_discovery.rb
279
324
  - lib/datadog/core/rate_limiter.rb
280
325
  - lib/datadog/core/remote.rb
281
326
  - lib/datadog/core/remote/client.rb
@@ -295,9 +340,6 @@ files:
295
340
  - lib/datadog/core/remote/transport/config.rb
296
341
  - lib/datadog/core/remote/transport/http.rb
297
342
  - lib/datadog/core/remote/transport/http/api.rb
298
- - lib/datadog/core/remote/transport/http/api/instance.rb
299
- - lib/datadog/core/remote/transport/http/api/spec.rb
300
- - lib/datadog/core/remote/transport/http/builder.rb
301
343
  - lib/datadog/core/remote/transport/http/client.rb
302
344
  - lib/datadog/core/remote/transport/http/config.rb
303
345
  - lib/datadog/core/remote/transport/http/negotiation.rb
@@ -309,27 +351,44 @@ files:
309
351
  - lib/datadog/core/telemetry/component.rb
310
352
  - lib/datadog/core/telemetry/emitter.rb
311
353
  - lib/datadog/core/telemetry/event.rb
354
+ - lib/datadog/core/telemetry/event/app_client_configuration_change.rb
355
+ - lib/datadog/core/telemetry/event/app_closing.rb
356
+ - lib/datadog/core/telemetry/event/app_dependencies_loaded.rb
357
+ - lib/datadog/core/telemetry/event/app_heartbeat.rb
358
+ - lib/datadog/core/telemetry/event/app_integrations_change.rb
359
+ - lib/datadog/core/telemetry/event/app_started.rb
360
+ - lib/datadog/core/telemetry/event/base.rb
361
+ - lib/datadog/core/telemetry/event/distributions.rb
362
+ - lib/datadog/core/telemetry/event/generate_metrics.rb
363
+ - lib/datadog/core/telemetry/event/log.rb
364
+ - lib/datadog/core/telemetry/event/message_batch.rb
365
+ - lib/datadog/core/telemetry/event/synth_app_client_configuration_change.rb
312
366
  - lib/datadog/core/telemetry/ext.rb
313
367
  - lib/datadog/core/telemetry/http/adapters/net.rb
314
- - lib/datadog/core/telemetry/http/env.rb
315
- - lib/datadog/core/telemetry/http/ext.rb
316
- - lib/datadog/core/telemetry/http/response.rb
317
- - lib/datadog/core/telemetry/http/transport.rb
318
368
  - lib/datadog/core/telemetry/logger.rb
319
369
  - lib/datadog/core/telemetry/logging.rb
320
370
  - lib/datadog/core/telemetry/metric.rb
321
371
  - lib/datadog/core/telemetry/metrics_collection.rb
322
372
  - lib/datadog/core/telemetry/metrics_manager.rb
323
373
  - lib/datadog/core/telemetry/request.rb
374
+ - lib/datadog/core/telemetry/transport/http.rb
375
+ - lib/datadog/core/telemetry/transport/http/api.rb
376
+ - lib/datadog/core/telemetry/transport/http/client.rb
377
+ - lib/datadog/core/telemetry/transport/http/telemetry.rb
378
+ - lib/datadog/core/telemetry/transport/telemetry.rb
324
379
  - lib/datadog/core/telemetry/worker.rb
325
380
  - lib/datadog/core/transport/ext.rb
381
+ - lib/datadog/core/transport/http.rb
326
382
  - lib/datadog/core/transport/http/adapters/net.rb
327
383
  - lib/datadog/core/transport/http/adapters/registry.rb
328
384
  - lib/datadog/core/transport/http/adapters/test.rb
329
385
  - lib/datadog/core/transport/http/adapters/unix_socket.rb
330
386
  - lib/datadog/core/transport/http/api/endpoint.rb
331
387
  - lib/datadog/core/transport/http/api/fallbacks.rb
388
+ - lib/datadog/core/transport/http/api/instance.rb
332
389
  - lib/datadog/core/transport/http/api/map.rb
390
+ - lib/datadog/core/transport/http/api/spec.rb
391
+ - lib/datadog/core/transport/http/builder.rb
333
392
  - lib/datadog/core/transport/http/env.rb
334
393
  - lib/datadog/core/transport/http/response.rb
335
394
  - lib/datadog/core/transport/parcel.rb
@@ -347,6 +406,7 @@ files:
347
406
  - lib/datadog/core/utils/safe_dup.rb
348
407
  - lib/datadog/core/utils/sequence.rb
349
408
  - lib/datadog/core/utils/time.rb
409
+ - lib/datadog/core/utils/truncation.rb
350
410
  - lib/datadog/core/utils/url.rb
351
411
  - lib/datadog/core/vendor/multipart-post/LICENSE
352
412
  - lib/datadog/core/vendor/multipart-post/multipart.rb
@@ -363,28 +423,51 @@ files:
363
423
  - lib/datadog/core/workers/queue.rb
364
424
  - lib/datadog/core/workers/runtime_metrics.rb
365
425
  - lib/datadog/di.rb
426
+ - lib/datadog/di/base.rb
427
+ - lib/datadog/di/boot.rb
366
428
  - lib/datadog/di/code_tracker.rb
367
429
  - lib/datadog/di/component.rb
368
430
  - lib/datadog/di/configuration.rb
369
431
  - lib/datadog/di/configuration/settings.rb
432
+ - lib/datadog/di/contrib.rb
370
433
  - lib/datadog/di/contrib/active_record.rb
434
+ - lib/datadog/di/contrib/railtie.rb
371
435
  - lib/datadog/di/error.rb
372
436
  - lib/datadog/di/extensions.rb
373
437
  - lib/datadog/di/instrumenter.rb
438
+ - lib/datadog/di/logger.rb
439
+ - lib/datadog/di/preload.rb
374
440
  - lib/datadog/di/probe.rb
375
441
  - lib/datadog/di/probe_builder.rb
376
442
  - lib/datadog/di/probe_manager.rb
377
443
  - lib/datadog/di/probe_notification_builder.rb
378
444
  - lib/datadog/di/probe_notifier_worker.rb
379
445
  - lib/datadog/di/redactor.rb
446
+ - lib/datadog/di/remote.rb
380
447
  - lib/datadog/di/serializer.rb
381
- - lib/datadog/di/transport.rb
448
+ - lib/datadog/di/transport/diagnostics.rb
449
+ - lib/datadog/di/transport/http.rb
450
+ - lib/datadog/di/transport/http/api.rb
451
+ - lib/datadog/di/transport/http/client.rb
452
+ - lib/datadog/di/transport/http/diagnostics.rb
453
+ - lib/datadog/di/transport/http/input.rb
454
+ - lib/datadog/di/transport/input.rb
382
455
  - lib/datadog/di/utils.rb
456
+ - lib/datadog/error_tracking.rb
457
+ - lib/datadog/error_tracking/collector.rb
458
+ - lib/datadog/error_tracking/component.rb
459
+ - lib/datadog/error_tracking/configuration.rb
460
+ - lib/datadog/error_tracking/configuration/settings.rb
461
+ - lib/datadog/error_tracking/ext.rb
462
+ - lib/datadog/error_tracking/extensions.rb
463
+ - lib/datadog/error_tracking/filters.rb
383
464
  - lib/datadog/kit.rb
384
465
  - lib/datadog/kit/appsec/events.rb
385
466
  - lib/datadog/kit/enable_core_dumps.rb
386
467
  - lib/datadog/kit/identity.rb
387
468
  - lib/datadog/opentelemetry.rb
469
+ - lib/datadog/opentelemetry/api/baggage.rb
470
+ - lib/datadog/opentelemetry/api/baggage.rbs
388
471
  - lib/datadog/opentelemetry/api/context.rb
389
472
  - lib/datadog/opentelemetry/api/trace/span.rb
390
473
  - lib/datadog/opentelemetry/sdk/configurator.rb
@@ -402,6 +485,7 @@ files:
402
485
  - lib/datadog/profiling/collectors/stack.rb
403
486
  - lib/datadog/profiling/collectors/thread_context.rb
404
487
  - lib/datadog/profiling/component.rb
488
+ - lib/datadog/profiling/encoded_profile.rb
405
489
  - lib/datadog/profiling/exporter.rb
406
490
  - lib/datadog/profiling/ext.rb
407
491
  - lib/datadog/profiling/ext/dir_monkey_patches.rb
@@ -585,6 +669,7 @@ files:
585
669
  - lib/datadog/tracing/contrib/grape/instrumentation.rb
586
670
  - lib/datadog/tracing/contrib/grape/integration.rb
587
671
  - lib/datadog/tracing/contrib/grape/patcher.rb
672
+ - lib/datadog/tracing/contrib/graphql/configuration/error_extension_env_parser.rb
588
673
  - lib/datadog/tracing/contrib/graphql/configuration/settings.rb
589
674
  - lib/datadog/tracing/contrib/graphql/ext.rb
590
675
  - lib/datadog/tracing/contrib/graphql/integration.rb
@@ -651,6 +736,13 @@ files:
651
736
  - lib/datadog/tracing/contrib/kafka/ext.rb
652
737
  - lib/datadog/tracing/contrib/kafka/integration.rb
653
738
  - lib/datadog/tracing/contrib/kafka/patcher.rb
739
+ - lib/datadog/tracing/contrib/karafka.rb
740
+ - lib/datadog/tracing/contrib/karafka/configuration/settings.rb
741
+ - lib/datadog/tracing/contrib/karafka/distributed/propagation.rb
742
+ - lib/datadog/tracing/contrib/karafka/ext.rb
743
+ - lib/datadog/tracing/contrib/karafka/integration.rb
744
+ - lib/datadog/tracing/contrib/karafka/monitor.rb
745
+ - lib/datadog/tracing/contrib/karafka/patcher.rb
654
746
  - lib/datadog/tracing/contrib/lograge/configuration/settings.rb
655
747
  - lib/datadog/tracing/contrib/lograge/ext.rb
656
748
  - lib/datadog/tracing/contrib/lograge/instrumentation.rb
@@ -722,7 +814,6 @@ files:
722
814
  - lib/datadog/tracing/contrib/rails/patcher.rb
723
815
  - lib/datadog/tracing/contrib/rails/railtie.rb
724
816
  - lib/datadog/tracing/contrib/rails/runner.rb
725
- - lib/datadog/tracing/contrib/rails/utils.rb
726
817
  - lib/datadog/tracing/contrib/rake/configuration/settings.rb
727
818
  - lib/datadog/tracing/contrib/rake/ext.rb
728
819
  - lib/datadog/tracing/contrib/rake/instrumentation.rb
@@ -814,6 +905,7 @@ files:
814
905
  - lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb
815
906
  - lib/datadog/tracing/contrib/sucker_punch/integration.rb
816
907
  - lib/datadog/tracing/contrib/sucker_punch/patcher.rb
908
+ - lib/datadog/tracing/contrib/support.rb
817
909
  - lib/datadog/tracing/contrib/trilogy/configuration/settings.rb
818
910
  - lib/datadog/tracing/contrib/trilogy/ext.rb
819
911
  - lib/datadog/tracing/contrib/trilogy/instrumentation.rb
@@ -828,12 +920,14 @@ files:
828
920
  - lib/datadog/tracing/diagnostics/health.rb
829
921
  - lib/datadog/tracing/distributed/b3_multi.rb
830
922
  - lib/datadog/tracing/distributed/b3_single.rb
923
+ - lib/datadog/tracing/distributed/baggage.rb
831
924
  - lib/datadog/tracing/distributed/datadog.rb
832
925
  - lib/datadog/tracing/distributed/datadog_tags_codec.rb
833
926
  - lib/datadog/tracing/distributed/fetcher.rb
834
927
  - lib/datadog/tracing/distributed/helpers.rb
835
928
  - lib/datadog/tracing/distributed/none.rb
836
929
  - lib/datadog/tracing/distributed/propagation.rb
930
+ - lib/datadog/tracing/distributed/propagation_policy.rb
837
931
  - lib/datadog/tracing/distributed/trace_context.rb
838
932
  - lib/datadog/tracing/event.rb
839
933
  - lib/datadog/tracing/flush.rb
@@ -841,6 +935,8 @@ files:
841
935
  - lib/datadog/tracing/metadata/analytics.rb
842
936
  - lib/datadog/tracing/metadata/errors.rb
843
937
  - lib/datadog/tracing/metadata/ext.rb
938
+ - lib/datadog/tracing/metadata/metastruct.rb
939
+ - lib/datadog/tracing/metadata/metastruct_tagging.rb
844
940
  - lib/datadog/tracing/metadata/tagging.rb
845
941
  - lib/datadog/tracing/pipeline.rb
846
942
  - lib/datadog/tracing/pipeline/span_filter.rb
@@ -873,9 +969,6 @@ files:
873
969
  - lib/datadog/tracing/tracer.rb
874
970
  - lib/datadog/tracing/transport/http.rb
875
971
  - lib/datadog/tracing/transport/http/api.rb
876
- - lib/datadog/tracing/transport/http/api/instance.rb
877
- - lib/datadog/tracing/transport/http/api/spec.rb
878
- - lib/datadog/tracing/transport/http/builder.rb
879
972
  - lib/datadog/tracing/transport/http/client.rb
880
973
  - lib/datadog/tracing/transport/http/statistics.rb
881
974
  - lib/datadog/tracing/transport/http/traces.rb
@@ -898,8 +991,8 @@ licenses:
898
991
  - Apache-2.0
899
992
  metadata:
900
993
  allowed_push_host: https://rubygems.org
901
- changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.7.1/CHANGELOG.md
902
- source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.7.1
994
+ changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.17.0/CHANGELOG.md
995
+ source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.17.0
903
996
  post_install_message:
904
997
  rdoc_options: []
905
998
  require_paths:
@@ -918,7 +1011,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
918
1011
  - !ruby/object:Gem::Version
919
1012
  version: 2.0.0
920
1013
  requirements: []
921
- rubygems_version: 3.5.16
1014
+ rubygems_version: 3.5.22
922
1015
  signing_key:
923
1016
  specification_version: 4
924
1017
  summary: Datadog tracing code for your Ruby applications
@@ -1,142 +0,0 @@
1
- #include <stdbool.h>
2
- #include <dlfcn.h>
3
- #include <ruby.h>
4
-
5
- // Why this exists:
6
- //
7
- // The Datadog::Profiling::Loader exists because when Ruby loads a native extension (using `require`), it uses
8
- // `dlopen(..., RTLD_LAZY | RTLD_GLOBAL)` (https://github.com/ruby/ruby/blob/67950a4c0a884bdb78d9beb4405ebf7459229b21/dln.c#L362).
9
- // This means that every symbol exposed directly or indirectly by that native extension becomes visible to every other
10
- // extension in the Ruby process. This can cause issues, see https://github.com/rubyjs/mini_racer/pull/179.
11
- //
12
- // Instead of `RTLD_LAZY | RTLD_GLOBAL`, we want to call `dlopen` with `RTLD_LAZY | RTLD_LOCAL | RTLD_DEEPBIND` when
13
- // loading the profiling native extension, to avoid leaking any unintended symbols (`RTLD_LOCAL`) and avoid picking
14
- // up other's symbols (`RTLD_DEEPBIND`).
15
- //
16
- // But Ruby's extension loading mechanism is not configurable -- there's no way to tell it to use different flags when
17
- // calling `dlopen`. To get around this, this file (datadog_profiling_loader.c) introduces another extension
18
- // (profiling loader) which has only a single responsibility: mimic Ruby's extension loading mechanism, but when calling
19
- // `dlopen` use a different set of flags.
20
- // This idea was shamelessly stolen from @lloeki's work in https://github.com/rubyjs/mini_racer/pull/179, big thanks!
21
- //
22
- // Extra note: Currently (May 2022), that we know of, the profiling native extension only exposes one potentially
23
- // problematic symbol: `rust_eh_personality` (coming from libdatadog).
24
- // Future versions of Rust have been patched not to expose this
25
- // (see https://github.com/rust-lang/rust/pull/95604#issuecomment-1108563434) so we may want to revisit the need
26
- // for this loader in the future, and perhaps delete it if we no longer require its services :)
27
-
28
- #ifndef RTLD_DEEPBIND
29
- #define RTLD_DEEPBIND 0
30
- #endif
31
-
32
- // Used to mark function arguments that are deliberately left unused
33
- #ifdef __GNUC__
34
- #define DDTRACE_UNUSED __attribute__((unused))
35
- #else
36
- #define DDTRACE_UNUSED
37
- #endif
38
-
39
- static VALUE ok_symbol = Qnil; // :ok in Ruby
40
- static VALUE error_symbol = Qnil; // :error in Ruby
41
-
42
- static VALUE _native_load(DDTRACE_UNUSED VALUE self, VALUE ruby_path, VALUE ruby_init_name);
43
- static bool failed_to_load(void *handle, VALUE *failure_details);
44
- static bool incompatible_library(void *handle, VALUE *failure_details);
45
- static bool failed_to_initialize(void *handle, char *init_name, VALUE *failure_details);
46
- static void set_failure_from_dlerror(VALUE *failure_details);
47
- static void unload_failed_library(void *handle);
48
-
49
- #define DDTRACE_EXPORT __attribute__ ((visibility ("default")))
50
-
51
- void DDTRACE_EXPORT Init_datadog_profiling_loader(void) {
52
- VALUE datadog_module = rb_define_module("Datadog");
53
- VALUE profiling_module = rb_define_module_under(datadog_module, "Profiling");
54
- VALUE loader_module = rb_define_module_under(profiling_module, "Loader");
55
- rb_define_singleton_method(loader_module, "_native_load", _native_load, 2);
56
-
57
- ok_symbol = ID2SYM(rb_intern_const("ok"));
58
- error_symbol = ID2SYM(rb_intern_const("error"));
59
- }
60
-
61
- static VALUE _native_load(DDTRACE_UNUSED VALUE self, VALUE ruby_path, VALUE ruby_init_name) {
62
- Check_Type(ruby_path, T_STRING);
63
- Check_Type(ruby_init_name, T_STRING);
64
-
65
- char *path = StringValueCStr(ruby_path);
66
- char *init_name = StringValueCStr(ruby_init_name);
67
-
68
- int dlopen_flags = RTLD_LAZY | RTLD_LOCAL | RTLD_DEEPBIND;
69
-
70
- #if defined(__has_feature)
71
- #if __has_feature(address_sanitizer)
72
- dlopen_flags &= ~RTLD_DEEPBIND; // Not supported by ASAN
73
- #endif
74
- #endif
75
-
76
- void *handle = dlopen(path, dlopen_flags);
77
-
78
- VALUE failure_details = Qnil;
79
-
80
- if (
81
- failed_to_load(handle, &failure_details) ||
82
- incompatible_library(handle, &failure_details) ||
83
- failed_to_initialize(handle, init_name, &failure_details)
84
- ) {
85
- return rb_ary_new_from_args(2, error_symbol, failure_details);
86
- }
87
-
88
- return rb_ary_new_from_args(2, ok_symbol, Qnil);
89
- }
90
-
91
- static bool failed_to_load(void *handle, VALUE *failure_details) {
92
- if (handle == NULL) {
93
- set_failure_from_dlerror(failure_details);
94
- return true;
95
- } else {
96
- return false;
97
- }
98
- }
99
-
100
- static bool incompatible_library(void *handle, VALUE *failure_details) {
101
- // The library being loaded may be linked to a different libruby than the current executing Ruby.
102
- // We check if this is the case by checking if a well-known symbol resolves to a common address.
103
-
104
- void *xmalloc_from_library = dlsym(handle, "ruby_xmalloc");
105
-
106
- if (xmalloc_from_library == NULL) {
107
- // This happens when ruby is built without a `libruby.so` by using `--disable-shared` at compilation time.
108
- // In this situation, no conflict between libruby version is possible.
109
- return false;
110
- }
111
-
112
- if (xmalloc_from_library != &ruby_xmalloc) {
113
- *failure_details = rb_str_new_cstr("library was compiled and linked to a different Ruby version");
114
- unload_failed_library(handle);
115
- return true;
116
- } else {
117
- return false;
118
- }
119
- }
120
-
121
- static bool failed_to_initialize(void *handle, char *init_name, VALUE *failure_details) {
122
- void (*initialization_function)(void) = dlsym(handle, init_name);
123
-
124
- if (initialization_function == NULL) {
125
- set_failure_from_dlerror(failure_details);
126
- unload_failed_library(handle);
127
- return true;
128
- } else {
129
- (*initialization_function)();
130
- return false;
131
- }
132
- }
133
-
134
- static void set_failure_from_dlerror(VALUE *failure_details) {
135
- char *failure = dlerror();
136
- *failure_details = failure == NULL ? Qnil : rb_str_new_cstr(failure);
137
- }
138
-
139
- static void unload_failed_library(void *handle) {
140
- // Note: According to the Ruby VM sources, this may fail with a segfault on really old versions of macOS (< 10.11)
141
- dlclose(handle);
142
- }