ddtrace 1.9.0 → 1.10.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 (692) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +63 -2
  3. data/ext/ddtrace_profiling_loader/extconf.rb +0 -2
  4. data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +81 -36
  5. data/ext/ddtrace_profiling_native_extension/collectors_idle_sampling_helper.c +3 -3
  6. data/ext/ddtrace_profiling_native_extension/collectors_stack.c +37 -48
  7. data/ext/ddtrace_profiling_native_extension/collectors_stack.h +3 -1
  8. data/ext/ddtrace_profiling_native_extension/{collectors_cpu_and_wall_time.c → collectors_thread_context.c} +222 -143
  9. data/ext/ddtrace_profiling_native_extension/collectors_thread_context.h +14 -0
  10. data/ext/ddtrace_profiling_native_extension/extconf.rb +7 -18
  11. data/ext/ddtrace_profiling_native_extension/http_transport.c +25 -32
  12. data/ext/ddtrace_profiling_native_extension/libdatadog_helpers.h +9 -2
  13. data/ext/ddtrace_profiling_native_extension/native_extension_helpers.rb +9 -9
  14. data/ext/ddtrace_profiling_native_extension/private_vm_api_access.c +7 -121
  15. data/ext/ddtrace_profiling_native_extension/private_vm_api_access.h +1 -1
  16. data/ext/ddtrace_profiling_native_extension/profiling.c +2 -2
  17. data/ext/ddtrace_profiling_native_extension/ruby_helpers.c +2 -2
  18. data/ext/ddtrace_profiling_native_extension/ruby_helpers.h +1 -1
  19. data/ext/ddtrace_profiling_native_extension/stack_recorder.c +125 -21
  20. data/ext/ddtrace_profiling_native_extension/stack_recorder.h +9 -34
  21. data/lib/datadog/appsec/assets/waf_rules/recommended.json +321 -185
  22. data/lib/datadog/appsec/assets/waf_rules/strict.json +59 -2
  23. data/lib/datadog/appsec/assets.rb +0 -2
  24. data/lib/datadog/appsec/autoload.rb +4 -11
  25. data/lib/datadog/appsec/component.rb +41 -0
  26. data/lib/datadog/appsec/configuration/settings.rb +8 -3
  27. data/lib/datadog/appsec/configuration.rb +4 -2
  28. data/lib/datadog/appsec/contrib/auto_instrument.rb +0 -2
  29. data/lib/datadog/appsec/contrib/configuration/settings.rb +0 -2
  30. data/lib/datadog/appsec/contrib/integration.rb +0 -2
  31. data/lib/datadog/appsec/contrib/patcher.rb +0 -2
  32. data/lib/datadog/appsec/contrib/rack/configuration/settings.rb +0 -2
  33. data/lib/datadog/appsec/contrib/rack/ext.rb +0 -2
  34. data/lib/datadog/appsec/contrib/rack/gateway/request.rb +104 -0
  35. data/lib/datadog/appsec/contrib/rack/gateway/response.rb +30 -0
  36. data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +111 -109
  37. data/lib/datadog/appsec/contrib/rack/integration.rb +0 -2
  38. data/lib/datadog/appsec/contrib/rack/patcher.rb +2 -2
  39. data/lib/datadog/appsec/contrib/rack/reactive/request.rb +18 -21
  40. data/lib/datadog/appsec/contrib/rack/reactive/request_body.rb +10 -11
  41. data/lib/datadog/appsec/contrib/rack/reactive/response.rb +10 -11
  42. data/lib/datadog/appsec/contrib/rack/request_body_middleware.rb +6 -4
  43. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +40 -26
  44. data/lib/datadog/appsec/contrib/rails/configuration/settings.rb +0 -2
  45. data/lib/datadog/appsec/contrib/rails/ext.rb +0 -2
  46. data/lib/datadog/appsec/contrib/rails/framework.rb +0 -2
  47. data/lib/datadog/appsec/contrib/rails/gateway/request.rb +67 -0
  48. data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +41 -37
  49. data/lib/datadog/appsec/contrib/rails/integration.rb +0 -2
  50. data/lib/datadog/appsec/contrib/rails/patcher.rb +3 -3
  51. data/lib/datadog/appsec/contrib/rails/reactive/action.rb +12 -11
  52. data/lib/datadog/appsec/contrib/rails/request.rb +0 -2
  53. data/lib/datadog/appsec/contrib/rails/request_middleware.rb +0 -2
  54. data/lib/datadog/appsec/contrib/sinatra/configuration/settings.rb +0 -2
  55. data/lib/datadog/appsec/contrib/sinatra/ext.rb +0 -2
  56. data/lib/datadog/appsec/contrib/sinatra/framework.rb +0 -2
  57. data/lib/datadog/appsec/contrib/sinatra/gateway/request.rb +17 -0
  58. data/lib/datadog/appsec/contrib/sinatra/gateway/route_params.rb +23 -0
  59. data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +76 -71
  60. data/lib/datadog/appsec/contrib/sinatra/integration.rb +0 -2
  61. data/lib/datadog/appsec/contrib/sinatra/patcher.rb +12 -4
  62. data/lib/datadog/appsec/contrib/sinatra/reactive/routed.rb +10 -9
  63. data/lib/datadog/appsec/contrib/sinatra/request_middleware.rb +0 -2
  64. data/lib/datadog/appsec/event.rb +4 -8
  65. data/lib/datadog/appsec/ext.rb +9 -0
  66. data/lib/datadog/appsec/extensions.rb +10 -2
  67. data/lib/datadog/appsec/instrumentation/gateway/argument.rb +24 -0
  68. data/lib/datadog/appsec/instrumentation/gateway.rb +11 -5
  69. data/lib/datadog/appsec/instrumentation.rb +9 -0
  70. data/lib/datadog/appsec/monitor/gateway/watcher.rb +86 -0
  71. data/lib/datadog/appsec/monitor/reactive/set_user.rb +61 -0
  72. data/lib/datadog/appsec/monitor.rb +11 -0
  73. data/lib/datadog/appsec/processor.rb +74 -25
  74. data/lib/datadog/appsec/rate_limiter.rb +0 -2
  75. data/lib/datadog/appsec/reactive/address_hash.rb +6 -2
  76. data/lib/datadog/appsec/reactive/engine.rb +10 -7
  77. data/lib/datadog/appsec/reactive/operation.rb +19 -2
  78. data/lib/datadog/appsec/reactive/subscriber.rb +2 -1
  79. data/lib/datadog/appsec/response.rb +0 -2
  80. data/lib/datadog/appsec/utils/http/media_range.rb +0 -2
  81. data/lib/datadog/appsec/utils/http/media_type.rb +0 -2
  82. data/lib/datadog/appsec.rb +20 -2
  83. data/lib/datadog/ci/configuration/components.rb +0 -2
  84. data/lib/datadog/ci/configuration/settings.rb +0 -2
  85. data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +0 -2
  86. data/lib/datadog/ci/contrib/cucumber/ext.rb +0 -2
  87. data/lib/datadog/ci/contrib/cucumber/formatter.rb +0 -2
  88. data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +0 -2
  89. data/lib/datadog/ci/contrib/cucumber/integration.rb +0 -2
  90. data/lib/datadog/ci/contrib/cucumber/patcher.rb +0 -2
  91. data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +0 -2
  92. data/lib/datadog/ci/contrib/rspec/example.rb +0 -2
  93. data/lib/datadog/ci/contrib/rspec/ext.rb +0 -2
  94. data/lib/datadog/ci/contrib/rspec/integration.rb +0 -2
  95. data/lib/datadog/ci/contrib/rspec/patcher.rb +0 -2
  96. data/lib/datadog/ci/ext/app_types.rb +0 -2
  97. data/lib/datadog/ci/ext/environment.rb +0 -4
  98. data/lib/datadog/ci/ext/settings.rb +0 -2
  99. data/lib/datadog/ci/ext/test.rb +0 -2
  100. data/lib/datadog/ci/extensions.rb +0 -2
  101. data/lib/datadog/ci/flush.rb +0 -2
  102. data/lib/datadog/ci/test.rb +0 -2
  103. data/lib/datadog/ci.rb +0 -2
  104. data/lib/datadog/core/buffer/cruby.rb +0 -2
  105. data/lib/datadog/core/buffer/random.rb +0 -2
  106. data/lib/datadog/core/buffer/thread_safe.rb +0 -2
  107. data/lib/datadog/core/chunker.rb +0 -2
  108. data/lib/datadog/core/configuration/agent_settings_resolver.rb +0 -17
  109. data/lib/datadog/core/configuration/base.rb +0 -2
  110. data/lib/datadog/core/configuration/components.rb +14 -318
  111. data/lib/datadog/core/configuration/dependency_resolver.rb +0 -2
  112. data/lib/datadog/core/configuration/ext.rb +0 -2
  113. data/lib/datadog/core/configuration/option.rb +0 -2
  114. data/lib/datadog/core/configuration/option_definition.rb +0 -2
  115. data/lib/datadog/core/configuration/option_definition_set.rb +0 -2
  116. data/lib/datadog/core/configuration/option_set.rb +0 -2
  117. data/lib/datadog/core/configuration/options.rb +0 -2
  118. data/lib/datadog/core/configuration/settings.rb +14 -5
  119. data/lib/datadog/core/configuration.rb +0 -4
  120. data/lib/datadog/core/diagnostics/environment_logger.rb +0 -2
  121. data/lib/datadog/core/diagnostics/health.rb +0 -2
  122. data/lib/datadog/core/encoding.rb +0 -4
  123. data/lib/datadog/core/environment/cgroup.rb +0 -4
  124. data/lib/datadog/core/environment/class_count.rb +0 -2
  125. data/lib/datadog/core/environment/container.rb +0 -4
  126. data/lib/datadog/core/environment/ext.rb +0 -2
  127. data/lib/datadog/core/environment/gc.rb +0 -2
  128. data/lib/datadog/core/environment/identity.rb +0 -2
  129. data/lib/datadog/core/environment/platform.rb +0 -2
  130. data/lib/datadog/core/environment/socket.rb +0 -2
  131. data/lib/datadog/core/environment/thread_count.rb +0 -2
  132. data/lib/datadog/core/environment/variable_helpers.rb +0 -2
  133. data/lib/datadog/core/environment/vm_cache.rb +17 -2
  134. data/lib/datadog/core/error.rb +0 -2
  135. data/lib/datadog/core/extensions.rb +0 -2
  136. data/lib/datadog/core/git/ext.rb +0 -2
  137. data/lib/datadog/core/logger.rb +0 -2
  138. data/lib/datadog/core/metrics/client.rb +0 -2
  139. data/lib/datadog/core/metrics/ext.rb +0 -2
  140. data/lib/datadog/core/metrics/helpers.rb +0 -2
  141. data/lib/datadog/core/metrics/logging.rb +0 -2
  142. data/lib/datadog/core/metrics/metric.rb +0 -2
  143. data/lib/datadog/core/metrics/options.rb +0 -2
  144. data/lib/datadog/core/pin.rb +0 -2
  145. data/lib/datadog/core/runtime/ext.rb +2 -2
  146. data/lib/datadog/core/runtime/metrics.rb +21 -7
  147. data/lib/datadog/core/telemetry/client.rb +0 -2
  148. data/lib/datadog/core/telemetry/collector.rb +0 -2
  149. data/lib/datadog/core/telemetry/emitter.rb +0 -2
  150. data/lib/datadog/core/telemetry/event.rb +0 -4
  151. data/lib/datadog/core/telemetry/ext.rb +0 -2
  152. data/lib/datadog/core/telemetry/heartbeat.rb +0 -2
  153. data/lib/datadog/core/telemetry/http/adapters/net.rb +0 -2
  154. data/lib/datadog/core/telemetry/http/env.rb +0 -2
  155. data/lib/datadog/core/telemetry/http/response.rb +0 -4
  156. data/lib/datadog/core/telemetry/http/transport.rb +0 -2
  157. data/lib/datadog/core/telemetry/v1/app_event.rb +0 -2
  158. data/lib/datadog/core/utils/compression.rb +0 -2
  159. data/lib/datadog/core/utils/forking.rb +0 -2
  160. data/lib/datadog/core/utils/object_set.rb +0 -2
  161. data/lib/datadog/core/utils/only_once.rb +0 -2
  162. data/lib/datadog/core/utils/safe_dup.rb +0 -2
  163. data/lib/datadog/core/utils/sequence.rb +0 -2
  164. data/lib/datadog/core/utils/string_table.rb +0 -2
  165. data/lib/datadog/core/utils/time.rb +0 -4
  166. data/lib/datadog/core/utils.rb +0 -2
  167. data/lib/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rb +0 -2
  168. data/lib/datadog/core/vendor/multipart-post/multipart/post/multipartable.rb +0 -2
  169. data/lib/datadog/core/vendor/multipart-post/multipart/post/parts.rb +0 -2
  170. data/lib/datadog/core/vendor/multipart-post/multipart/post/version.rb +0 -2
  171. data/lib/datadog/core/vendor/multipart-post/multipart/post.rb +0 -2
  172. data/lib/datadog/core/vendor/multipart-post/multipart.rb +0 -2
  173. data/lib/datadog/core/vendor/multipart-post/net/http/post/multipart.rb +0 -2
  174. data/lib/datadog/core/worker.rb +0 -2
  175. data/lib/datadog/core/workers/async.rb +0 -2
  176. data/lib/datadog/core/workers/interval_loop.rb +0 -2
  177. data/lib/datadog/core/workers/polling.rb +0 -2
  178. data/lib/datadog/core/workers/queue.rb +0 -2
  179. data/lib/datadog/core/workers/runtime_metrics.rb +0 -2
  180. data/lib/datadog/core.rb +0 -1
  181. data/lib/datadog/kit/appsec/events.rb +0 -1
  182. data/lib/datadog/kit/enable_core_dumps.rb +5 -6
  183. data/lib/datadog/kit/identity.rb +7 -1
  184. data/lib/datadog/kit.rb +0 -2
  185. data/lib/datadog/opentelemetry/api/context.rb +0 -1
  186. data/lib/datadog/opentelemetry/api/trace/span.rb +0 -1
  187. data/lib/datadog/opentelemetry/sdk/configurator.rb +0 -1
  188. data/lib/datadog/opentelemetry/sdk/id_generator.rb +0 -1
  189. data/lib/datadog/opentelemetry/sdk/propagator.rb +0 -1
  190. data/lib/datadog/opentelemetry/sdk/span_processor.rb +0 -1
  191. data/lib/datadog/opentelemetry.rb +0 -1
  192. data/lib/datadog/opentracer/binary_propagator.rb +0 -2
  193. data/lib/datadog/opentracer/carrier.rb +0 -2
  194. data/lib/datadog/opentracer/distributed_headers.rb +0 -2
  195. data/lib/datadog/opentracer/global_tracer.rb +0 -2
  196. data/lib/datadog/opentracer/propagator.rb +0 -2
  197. data/lib/datadog/opentracer/rack_propagator.rb +0 -2
  198. data/lib/datadog/opentracer/scope.rb +0 -2
  199. data/lib/datadog/opentracer/scope_manager.rb +0 -2
  200. data/lib/datadog/opentracer/span.rb +0 -2
  201. data/lib/datadog/opentracer/span_context.rb +0 -2
  202. data/lib/datadog/opentracer/span_context_factory.rb +0 -2
  203. data/lib/datadog/opentracer/text_map_propagator.rb +0 -2
  204. data/lib/datadog/opentracer/thread_local_scope.rb +0 -2
  205. data/lib/datadog/opentracer/thread_local_scope_manager.rb +0 -2
  206. data/lib/datadog/opentracer/tracer.rb +0 -2
  207. data/lib/datadog/opentracer.rb +0 -2
  208. data/lib/datadog/profiling/backtrace_location.rb +0 -2
  209. data/lib/datadog/profiling/buffer.rb +0 -2
  210. data/lib/datadog/profiling/collectors/code_provenance.rb +0 -2
  211. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +12 -7
  212. data/lib/datadog/profiling/collectors/dynamic_sampling_rate.rb +0 -2
  213. data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +1 -3
  214. data/lib/datadog/profiling/collectors/old_stack.rb +1 -5
  215. data/lib/datadog/profiling/collectors/stack.rb +0 -2
  216. data/lib/datadog/profiling/collectors/{cpu_and_wall_time.rb → thread_context.rb} +8 -5
  217. data/lib/datadog/profiling/component.rb +161 -0
  218. data/lib/datadog/profiling/encoding/profile.rb +0 -2
  219. data/lib/datadog/profiling/event.rb +0 -2
  220. data/lib/datadog/profiling/events/stack.rb +0 -2
  221. data/lib/datadog/profiling/exporter.rb +0 -2
  222. data/lib/datadog/profiling/ext/forking.rb +0 -2
  223. data/lib/datadog/profiling/ext.rb +0 -2
  224. data/lib/datadog/profiling/flush.rb +0 -2
  225. data/lib/datadog/profiling/http_transport.rb +0 -2
  226. data/lib/datadog/profiling/load_native_extension.rb +0 -2
  227. data/lib/datadog/profiling/native_extension.rb +0 -2
  228. data/lib/datadog/profiling/old_recorder.rb +0 -2
  229. data/lib/datadog/profiling/pprof/builder.rb +0 -2
  230. data/lib/datadog/profiling/pprof/converter.rb +0 -2
  231. data/lib/datadog/profiling/pprof/message_set.rb +0 -2
  232. data/lib/datadog/profiling/pprof/payload.rb +0 -2
  233. data/lib/datadog/profiling/pprof/pprof_pb.rb +0 -2
  234. data/lib/datadog/profiling/pprof/stack_sample.rb +0 -2
  235. data/lib/datadog/profiling/pprof/string_table.rb +0 -2
  236. data/lib/datadog/profiling/pprof/template.rb +0 -2
  237. data/lib/datadog/profiling/preload.rb +0 -2
  238. data/lib/datadog/profiling/profiler.rb +0 -2
  239. data/lib/datadog/profiling/scheduler.rb +0 -2
  240. data/lib/datadog/profiling/stack_recorder.rb +3 -8
  241. data/lib/datadog/profiling/tag_builder.rb +0 -2
  242. data/lib/datadog/profiling/tasks/exec.rb +0 -2
  243. data/lib/datadog/profiling/tasks/help.rb +0 -2
  244. data/lib/datadog/profiling/tasks/setup.rb +0 -2
  245. data/lib/datadog/profiling/trace_identifiers/ddtrace.rb +0 -2
  246. data/lib/datadog/profiling/trace_identifiers/helper.rb +0 -2
  247. data/lib/datadog/profiling.rb +44 -7
  248. data/lib/datadog/tracing/analytics.rb +0 -2
  249. data/lib/datadog/tracing/buffer.rb +0 -4
  250. data/lib/datadog/tracing/client_ip.rb +0 -2
  251. data/lib/datadog/tracing/component.rb +176 -0
  252. data/lib/datadog/tracing/configuration/ext.rb +2 -2
  253. data/lib/datadog/tracing/configuration/settings.rb +20 -2
  254. data/lib/datadog/tracing/context.rb +0 -2
  255. data/lib/datadog/tracing/context_provider.rb +0 -2
  256. data/lib/datadog/tracing/contrib/action_cable/configuration/settings.rb +0 -2
  257. data/lib/datadog/tracing/contrib/action_cable/event.rb +0 -2
  258. data/lib/datadog/tracing/contrib/action_cable/events/broadcast.rb +0 -2
  259. data/lib/datadog/tracing/contrib/action_cable/events/perform_action.rb +0 -2
  260. data/lib/datadog/tracing/contrib/action_cable/events/transmit.rb +0 -2
  261. data/lib/datadog/tracing/contrib/action_cable/events.rb +0 -2
  262. data/lib/datadog/tracing/contrib/action_cable/ext.rb +0 -2
  263. data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +0 -2
  264. data/lib/datadog/tracing/contrib/action_cable/integration.rb +0 -2
  265. data/lib/datadog/tracing/contrib/action_cable/patcher.rb +0 -2
  266. data/lib/datadog/tracing/contrib/action_mailer/configuration/settings.rb +0 -2
  267. data/lib/datadog/tracing/contrib/action_mailer/event.rb +0 -2
  268. data/lib/datadog/tracing/contrib/action_mailer/events/deliver.rb +0 -2
  269. data/lib/datadog/tracing/contrib/action_mailer/events/process.rb +0 -2
  270. data/lib/datadog/tracing/contrib/action_mailer/events.rb +0 -2
  271. data/lib/datadog/tracing/contrib/action_mailer/ext.rb +0 -2
  272. data/lib/datadog/tracing/contrib/action_mailer/integration.rb +0 -2
  273. data/lib/datadog/tracing/contrib/action_mailer/patcher.rb +0 -2
  274. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +0 -2
  275. data/lib/datadog/tracing/contrib/action_pack/action_controller/patcher.rb +0 -2
  276. data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +0 -2
  277. data/lib/datadog/tracing/contrib/action_pack/ext.rb +0 -2
  278. data/lib/datadog/tracing/contrib/action_pack/integration.rb +0 -2
  279. data/lib/datadog/tracing/contrib/action_pack/patcher.rb +0 -2
  280. data/lib/datadog/tracing/contrib/action_pack/utils.rb +0 -2
  281. data/lib/datadog/tracing/contrib/action_view/configuration/settings.rb +0 -2
  282. data/lib/datadog/tracing/contrib/action_view/event.rb +0 -2
  283. data/lib/datadog/tracing/contrib/action_view/events/render_partial.rb +0 -2
  284. data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +0 -2
  285. data/lib/datadog/tracing/contrib/action_view/events.rb +0 -2
  286. data/lib/datadog/tracing/contrib/action_view/ext.rb +0 -2
  287. data/lib/datadog/tracing/contrib/action_view/instrumentation/partial_renderer.rb +0 -2
  288. data/lib/datadog/tracing/contrib/action_view/instrumentation/template_renderer.rb +0 -2
  289. data/lib/datadog/tracing/contrib/action_view/integration.rb +0 -2
  290. data/lib/datadog/tracing/contrib/action_view/patcher.rb +0 -2
  291. data/lib/datadog/tracing/contrib/action_view/utils.rb +0 -2
  292. data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +0 -2
  293. data/lib/datadog/tracing/contrib/active_job/event.rb +0 -2
  294. data/lib/datadog/tracing/contrib/active_job/events/discard.rb +0 -2
  295. data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +0 -2
  296. data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +0 -2
  297. data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +0 -2
  298. data/lib/datadog/tracing/contrib/active_job/events/perform.rb +0 -2
  299. data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +0 -2
  300. data/lib/datadog/tracing/contrib/active_job/events.rb +0 -2
  301. data/lib/datadog/tracing/contrib/active_job/ext.rb +0 -2
  302. data/lib/datadog/tracing/contrib/active_job/integration.rb +0 -2
  303. data/lib/datadog/tracing/contrib/active_job/log_injection.rb +0 -2
  304. data/lib/datadog/tracing/contrib/active_job/patcher.rb +0 -2
  305. data/lib/datadog/tracing/contrib/active_model_serializers/configuration/settings.rb +0 -2
  306. data/lib/datadog/tracing/contrib/active_model_serializers/event.rb +0 -2
  307. data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +0 -2
  308. data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +0 -2
  309. data/lib/datadog/tracing/contrib/active_model_serializers/events.rb +0 -2
  310. data/lib/datadog/tracing/contrib/active_model_serializers/ext.rb +0 -2
  311. data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +0 -2
  312. data/lib/datadog/tracing/contrib/active_model_serializers/patcher.rb +0 -2
  313. data/lib/datadog/tracing/contrib/active_record/configuration/makara_resolver.rb +0 -2
  314. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +0 -2
  315. data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +0 -2
  316. data/lib/datadog/tracing/contrib/active_record/event.rb +0 -2
  317. data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +0 -2
  318. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +0 -2
  319. data/lib/datadog/tracing/contrib/active_record/events.rb +0 -2
  320. data/lib/datadog/tracing/contrib/active_record/ext.rb +0 -2
  321. data/lib/datadog/tracing/contrib/active_record/integration.rb +0 -2
  322. data/lib/datadog/tracing/contrib/active_record/patcher.rb +0 -2
  323. data/lib/datadog/tracing/contrib/active_record/utils.rb +0 -2
  324. data/lib/datadog/tracing/contrib/active_record/vendor/connection_specification.rb +0 -2
  325. data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +0 -2
  326. data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +0 -2
  327. data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +0 -2
  328. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +0 -2
  329. data/lib/datadog/tracing/contrib/active_support/ext.rb +0 -2
  330. data/lib/datadog/tracing/contrib/active_support/integration.rb +0 -2
  331. data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +0 -2
  332. data/lib/datadog/tracing/contrib/active_support/notifications/subscriber.rb +0 -2
  333. data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +0 -2
  334. data/lib/datadog/tracing/contrib/active_support/patcher.rb +0 -2
  335. data/lib/datadog/tracing/contrib/analytics.rb +0 -2
  336. data/lib/datadog/tracing/contrib/auto_instrument.rb +0 -2
  337. data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +0 -2
  338. data/lib/datadog/tracing/contrib/aws/ext.rb +0 -2
  339. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +0 -2
  340. data/lib/datadog/tracing/contrib/aws/integration.rb +0 -2
  341. data/lib/datadog/tracing/contrib/aws/parsed_context.rb +0 -2
  342. data/lib/datadog/tracing/contrib/aws/patcher.rb +0 -2
  343. data/lib/datadog/tracing/contrib/aws/services.rb +0 -2
  344. data/lib/datadog/tracing/contrib/concurrent_ruby/configuration/settings.rb +0 -2
  345. data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +0 -2
  346. data/lib/datadog/tracing/contrib/concurrent_ruby/ext.rb +0 -2
  347. data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +0 -2
  348. data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +0 -2
  349. data/lib/datadog/tracing/contrib/concurrent_ruby/patcher.rb +0 -3
  350. data/lib/datadog/tracing/contrib/configurable.rb +0 -2
  351. data/lib/datadog/tracing/contrib/configuration/resolver.rb +0 -2
  352. data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +0 -2
  353. data/lib/datadog/tracing/contrib/configuration/settings.rb +0 -4
  354. data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +0 -2
  355. data/lib/datadog/tracing/contrib/dalli/ext.rb +0 -2
  356. data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +2 -2
  357. data/lib/datadog/tracing/contrib/dalli/integration.rb +0 -2
  358. data/lib/datadog/tracing/contrib/dalli/patcher.rb +0 -2
  359. data/lib/datadog/tracing/contrib/dalli/quantize.rb +0 -2
  360. data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +0 -2
  361. data/lib/datadog/tracing/contrib/delayed_job/ext.rb +0 -2
  362. data/lib/datadog/tracing/contrib/delayed_job/integration.rb +0 -2
  363. data/lib/datadog/tracing/contrib/delayed_job/patcher.rb +0 -2
  364. data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +4 -2
  365. data/lib/datadog/tracing/contrib/delayed_job/server_internal_tracer/worker.rb +2 -2
  366. data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +0 -2
  367. data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +0 -2
  368. data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +0 -2
  369. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +3 -4
  370. data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +0 -4
  371. data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +0 -2
  372. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +0 -2
  373. data/lib/datadog/tracing/contrib/ethon/ext.rb +0 -2
  374. data/lib/datadog/tracing/contrib/ethon/integration.rb +0 -2
  375. data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +0 -2
  376. data/lib/datadog/tracing/contrib/ethon/patcher.rb +0 -3
  377. data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +0 -2
  378. data/lib/datadog/tracing/contrib/excon/ext.rb +0 -2
  379. data/lib/datadog/tracing/contrib/excon/integration.rb +0 -2
  380. data/lib/datadog/tracing/contrib/excon/middleware.rb +0 -2
  381. data/lib/datadog/tracing/contrib/excon/patcher.rb +0 -2
  382. data/lib/datadog/tracing/contrib/ext.rb +5 -0
  383. data/lib/datadog/tracing/contrib/extensions.rb +0 -2
  384. data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +0 -2
  385. data/lib/datadog/tracing/contrib/faraday/connection.rb +0 -2
  386. data/lib/datadog/tracing/contrib/faraday/ext.rb +0 -2
  387. data/lib/datadog/tracing/contrib/faraday/integration.rb +0 -2
  388. data/lib/datadog/tracing/contrib/faraday/middleware.rb +0 -2
  389. data/lib/datadog/tracing/contrib/faraday/patcher.rb +0 -2
  390. data/lib/datadog/tracing/contrib/faraday/rack_builder.rb +0 -2
  391. data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +0 -2
  392. data/lib/datadog/tracing/contrib/grape/endpoint.rb +0 -2
  393. data/lib/datadog/tracing/contrib/grape/ext.rb +0 -2
  394. data/lib/datadog/tracing/contrib/grape/instrumentation.rb +0 -2
  395. data/lib/datadog/tracing/contrib/grape/integration.rb +0 -2
  396. data/lib/datadog/tracing/contrib/grape/patcher.rb +0 -2
  397. data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +0 -2
  398. data/lib/datadog/tracing/contrib/graphql/ext.rb +0 -2
  399. data/lib/datadog/tracing/contrib/graphql/integration.rb +0 -2
  400. data/lib/datadog/tracing/contrib/graphql/patcher.rb +0 -2
  401. data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +0 -2
  402. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +0 -2
  403. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +0 -2
  404. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb +0 -2
  405. data/lib/datadog/tracing/contrib/grpc/distributed/fetcher.rb +0 -1
  406. data/lib/datadog/tracing/contrib/grpc/distributed/propagation.rb +0 -1
  407. data/lib/datadog/tracing/contrib/grpc/ext.rb +0 -2
  408. data/lib/datadog/tracing/contrib/grpc/integration.rb +8 -3
  409. data/lib/datadog/tracing/contrib/grpc/intercept_with_datadog.rb +0 -2
  410. data/lib/datadog/tracing/contrib/grpc/patcher.rb +0 -3
  411. data/lib/datadog/tracing/contrib/hanami/action_tracer.rb +0 -2
  412. data/lib/datadog/tracing/contrib/hanami/configuration/settings.rb +0 -2
  413. data/lib/datadog/tracing/contrib/hanami/ext.rb +0 -2
  414. data/lib/datadog/tracing/contrib/hanami/integration.rb +0 -2
  415. data/lib/datadog/tracing/contrib/hanami/patcher.rb +0 -2
  416. data/lib/datadog/tracing/contrib/hanami/plugin.rb +0 -2
  417. data/lib/datadog/tracing/contrib/hanami/renderer_policy_tracing.rb +0 -2
  418. data/lib/datadog/tracing/contrib/hanami/router_tracing.rb +0 -2
  419. data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +0 -2
  420. data/lib/datadog/tracing/contrib/http/configuration/settings.rb +0 -2
  421. data/lib/datadog/tracing/contrib/http/distributed/fetcher.rb +0 -1
  422. data/lib/datadog/tracing/contrib/http/distributed/propagation.rb +0 -1
  423. data/lib/datadog/tracing/contrib/http/ext.rb +0 -2
  424. data/lib/datadog/tracing/contrib/http/instrumentation.rb +0 -2
  425. data/lib/datadog/tracing/contrib/http/integration.rb +0 -2
  426. data/lib/datadog/tracing/contrib/http/patcher.rb +0 -2
  427. data/lib/datadog/tracing/contrib/http_annotation_helper.rb +0 -2
  428. data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +0 -2
  429. data/lib/datadog/tracing/contrib/httpclient/ext.rb +0 -2
  430. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +0 -2
  431. data/lib/datadog/tracing/contrib/httpclient/integration.rb +0 -2
  432. data/lib/datadog/tracing/contrib/httpclient/patcher.rb +0 -2
  433. data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +0 -2
  434. data/lib/datadog/tracing/contrib/httprb/ext.rb +0 -2
  435. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +0 -2
  436. data/lib/datadog/tracing/contrib/httprb/integration.rb +0 -2
  437. data/lib/datadog/tracing/contrib/httprb/patcher.rb +0 -2
  438. data/lib/datadog/tracing/contrib/integration.rb +0 -2
  439. data/lib/datadog/tracing/contrib/kafka/configuration/settings.rb +0 -2
  440. data/lib/datadog/tracing/contrib/kafka/consumer_event.rb +0 -2
  441. data/lib/datadog/tracing/contrib/kafka/consumer_group_event.rb +0 -2
  442. data/lib/datadog/tracing/contrib/kafka/event.rb +1 -2
  443. data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +0 -2
  444. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +0 -2
  445. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +0 -2
  446. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +0 -2
  447. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +0 -2
  448. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +0 -2
  449. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +0 -2
  450. data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +0 -2
  451. data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +0 -2
  452. data/lib/datadog/tracing/contrib/kafka/events.rb +0 -2
  453. data/lib/datadog/tracing/contrib/kafka/ext.rb +1 -2
  454. data/lib/datadog/tracing/contrib/kafka/integration.rb +0 -2
  455. data/lib/datadog/tracing/contrib/kafka/patcher.rb +0 -2
  456. data/lib/datadog/tracing/contrib/lograge/configuration/settings.rb +0 -2
  457. data/lib/datadog/tracing/contrib/lograge/ext.rb +0 -2
  458. data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +0 -2
  459. data/lib/datadog/tracing/contrib/lograge/integration.rb +0 -2
  460. data/lib/datadog/tracing/contrib/lograge/patcher.rb +0 -2
  461. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +0 -2
  462. data/lib/datadog/tracing/contrib/mongodb/ext.rb +0 -2
  463. data/lib/datadog/tracing/contrib/mongodb/instrumentation.rb +0 -2
  464. data/lib/datadog/tracing/contrib/mongodb/integration.rb +0 -2
  465. data/lib/datadog/tracing/contrib/mongodb/parsers.rb +0 -2
  466. data/lib/datadog/tracing/contrib/mongodb/patcher.rb +0 -2
  467. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +0 -2
  468. data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +0 -2
  469. data/lib/datadog/tracing/contrib/mysql2/ext.rb +0 -2
  470. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +0 -2
  471. data/lib/datadog/tracing/contrib/mysql2/integration.rb +0 -2
  472. data/lib/datadog/tracing/contrib/mysql2/patcher.rb +0 -2
  473. data/lib/datadog/tracing/contrib/patchable.rb +0 -2
  474. data/lib/datadog/tracing/contrib/patcher.rb +0 -2
  475. data/lib/datadog/tracing/contrib/pg/configuration/settings.rb +0 -2
  476. data/lib/datadog/tracing/contrib/pg/ext.rb +0 -2
  477. data/lib/datadog/tracing/contrib/pg/instrumentation.rb +0 -2
  478. data/lib/datadog/tracing/contrib/pg/integration.rb +0 -2
  479. data/lib/datadog/tracing/contrib/pg/patcher.rb +0 -2
  480. data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +0 -2
  481. data/lib/datadog/tracing/contrib/presto/ext.rb +1 -2
  482. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +3 -2
  483. data/lib/datadog/tracing/contrib/presto/integration.rb +0 -2
  484. data/lib/datadog/tracing/contrib/presto/patcher.rb +0 -2
  485. data/lib/datadog/tracing/contrib/propagation/sql_comment/comment.rb +0 -2
  486. data/lib/datadog/tracing/contrib/propagation/sql_comment/ext.rb +0 -2
  487. data/lib/datadog/tracing/contrib/propagation/sql_comment/mode.rb +0 -2
  488. data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +0 -2
  489. data/lib/datadog/tracing/contrib/qless/configuration/settings.rb +0 -2
  490. data/lib/datadog/tracing/contrib/qless/ext.rb +0 -2
  491. data/lib/datadog/tracing/contrib/qless/integration.rb +0 -2
  492. data/lib/datadog/tracing/contrib/qless/patcher.rb +0 -3
  493. data/lib/datadog/tracing/contrib/qless/qless_job.rb +3 -2
  494. data/lib/datadog/tracing/contrib/qless/tracer_cleaner.rb +0 -2
  495. data/lib/datadog/tracing/contrib/que/configuration/settings.rb +0 -2
  496. data/lib/datadog/tracing/contrib/que/ext.rb +0 -2
  497. data/lib/datadog/tracing/contrib/que/integration.rb +0 -2
  498. data/lib/datadog/tracing/contrib/que/patcher.rb +0 -2
  499. data/lib/datadog/tracing/contrib/que/tracer.rb +2 -2
  500. data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +0 -2
  501. data/lib/datadog/tracing/contrib/racecar/event.rb +1 -2
  502. data/lib/datadog/tracing/contrib/racecar/events/batch.rb +0 -2
  503. data/lib/datadog/tracing/contrib/racecar/events/consume.rb +0 -2
  504. data/lib/datadog/tracing/contrib/racecar/events/message.rb +0 -2
  505. data/lib/datadog/tracing/contrib/racecar/events.rb +0 -2
  506. data/lib/datadog/tracing/contrib/racecar/ext.rb +1 -2
  507. data/lib/datadog/tracing/contrib/racecar/integration.rb +0 -2
  508. data/lib/datadog/tracing/contrib/racecar/patcher.rb +0 -2
  509. data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +0 -2
  510. data/lib/datadog/tracing/contrib/rack/ext.rb +5 -2
  511. data/lib/datadog/tracing/contrib/rack/integration.rb +0 -2
  512. data/lib/datadog/tracing/contrib/rack/middlewares.rb +42 -18
  513. data/lib/datadog/tracing/contrib/rack/patcher.rb +0 -2
  514. data/lib/datadog/tracing/contrib/rack/request_queue.rb +0 -2
  515. data/lib/datadog/tracing/contrib/rails/auto_instrument_railtie.rb +0 -2
  516. data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +0 -2
  517. data/lib/datadog/tracing/contrib/rails/ext.rb +0 -2
  518. data/lib/datadog/tracing/contrib/rails/framework.rb +0 -2
  519. data/lib/datadog/tracing/contrib/rails/integration.rb +0 -2
  520. data/lib/datadog/tracing/contrib/rails/log_injection.rb +0 -2
  521. data/lib/datadog/tracing/contrib/rails/middlewares.rb +0 -2
  522. data/lib/datadog/tracing/contrib/rails/patcher.rb +0 -2
  523. data/lib/datadog/tracing/contrib/rails/railtie.rb +0 -2
  524. data/lib/datadog/tracing/contrib/rails/utils.rb +0 -2
  525. data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +0 -2
  526. data/lib/datadog/tracing/contrib/rake/ext.rb +0 -2
  527. data/lib/datadog/tracing/contrib/rake/instrumentation.rb +0 -2
  528. data/lib/datadog/tracing/contrib/rake/integration.rb +0 -2
  529. data/lib/datadog/tracing/contrib/rake/patcher.rb +0 -2
  530. data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +0 -2
  531. data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +0 -2
  532. data/lib/datadog/tracing/contrib/redis/ext.rb +0 -2
  533. data/lib/datadog/tracing/contrib/redis/instrumentation.rb +0 -2
  534. data/lib/datadog/tracing/contrib/redis/integration.rb +0 -2
  535. data/lib/datadog/tracing/contrib/redis/patcher.rb +0 -2
  536. data/lib/datadog/tracing/contrib/redis/quantize.rb +0 -2
  537. data/lib/datadog/tracing/contrib/redis/tags.rb +0 -2
  538. data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +0 -2
  539. data/lib/datadog/tracing/contrib/redis/vendor/resolver.rb +0 -2
  540. data/lib/datadog/tracing/contrib/registerable.rb +0 -2
  541. data/lib/datadog/tracing/contrib/registry.rb +0 -2
  542. data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +0 -2
  543. data/lib/datadog/tracing/contrib/resque/ext.rb +0 -2
  544. data/lib/datadog/tracing/contrib/resque/integration.rb +0 -2
  545. data/lib/datadog/tracing/contrib/resque/patcher.rb +0 -2
  546. data/lib/datadog/tracing/contrib/resque/resque_job.rb +2 -2
  547. data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +0 -2
  548. data/lib/datadog/tracing/contrib/rest_client/ext.rb +0 -2
  549. data/lib/datadog/tracing/contrib/rest_client/integration.rb +0 -2
  550. data/lib/datadog/tracing/contrib/rest_client/patcher.rb +0 -3
  551. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +0 -2
  552. data/lib/datadog/tracing/contrib/semantic_logger/configuration/settings.rb +0 -2
  553. data/lib/datadog/tracing/contrib/semantic_logger/ext.rb +0 -2
  554. data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +0 -2
  555. data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +0 -2
  556. data/lib/datadog/tracing/contrib/semantic_logger/patcher.rb +0 -2
  557. data/lib/datadog/tracing/contrib/sequel/configuration/settings.rb +0 -2
  558. data/lib/datadog/tracing/contrib/sequel/database.rb +0 -2
  559. data/lib/datadog/tracing/contrib/sequel/dataset.rb +0 -2
  560. data/lib/datadog/tracing/contrib/sequel/ext.rb +0 -2
  561. data/lib/datadog/tracing/contrib/sequel/integration.rb +0 -2
  562. data/lib/datadog/tracing/contrib/sequel/patcher.rb +0 -2
  563. data/lib/datadog/tracing/contrib/sequel/utils.rb +0 -2
  564. data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +0 -2
  565. data/lib/datadog/tracing/contrib/shoryuken/ext.rb +1 -2
  566. data/lib/datadog/tracing/contrib/shoryuken/integration.rb +0 -2
  567. data/lib/datadog/tracing/contrib/shoryuken/patcher.rb +0 -2
  568. data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +2 -2
  569. data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +2 -2
  570. data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +0 -2
  571. data/lib/datadog/tracing/contrib/sidekiq/ext.rb +0 -2
  572. data/lib/datadog/tracing/contrib/sidekiq/integration.rb +0 -2
  573. data/lib/datadog/tracing/contrib/sidekiq/patcher.rb +0 -2
  574. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/heartbeat.rb +4 -2
  575. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/job_fetch.rb +2 -2
  576. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/redis_info.rb +2 -2
  577. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/scheduled_poller.rb +4 -2
  578. data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +2 -2
  579. data/lib/datadog/tracing/contrib/sidekiq/tracing.rb +0 -2
  580. data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +0 -2
  581. data/lib/datadog/tracing/contrib/sinatra/env.rb +0 -2
  582. data/lib/datadog/tracing/contrib/sinatra/ext.rb +0 -2
  583. data/lib/datadog/tracing/contrib/sinatra/framework.rb +0 -2
  584. data/lib/datadog/tracing/contrib/sinatra/headers.rb +0 -2
  585. data/lib/datadog/tracing/contrib/sinatra/integration.rb +0 -2
  586. data/lib/datadog/tracing/contrib/sinatra/patcher.rb +0 -3
  587. data/lib/datadog/tracing/contrib/sinatra/tracer.rb +0 -2
  588. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +0 -2
  589. data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +0 -2
  590. data/lib/datadog/tracing/contrib/sneakers/ext.rb +1 -2
  591. data/lib/datadog/tracing/contrib/sneakers/integration.rb +0 -2
  592. data/lib/datadog/tracing/contrib/sneakers/patcher.rb +0 -2
  593. data/lib/datadog/tracing/contrib/sneakers/tracer.rb +3 -2
  594. data/lib/datadog/tracing/contrib/status_code_matcher.rb +0 -2
  595. data/lib/datadog/tracing/contrib/stripe/patcher.rb +0 -1
  596. data/lib/datadog/tracing/contrib/sucker_punch/configuration/settings.rb +0 -2
  597. data/lib/datadog/tracing/contrib/sucker_punch/exception_handler.rb +0 -2
  598. data/lib/datadog/tracing/contrib/sucker_punch/ext.rb +0 -2
  599. data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +0 -2
  600. data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +0 -2
  601. data/lib/datadog/tracing/contrib/sucker_punch/patcher.rb +0 -3
  602. data/lib/datadog/tracing/contrib/utils/database.rb +0 -2
  603. data/lib/datadog/tracing/contrib/utils/quantization/hash.rb +0 -2
  604. data/lib/datadog/tracing/contrib/utils/quantization/http.rb +0 -4
  605. data/lib/datadog/tracing/contrib.rb +0 -2
  606. data/lib/datadog/tracing/correlation.rb +15 -3
  607. data/lib/datadog/tracing/diagnostics/ext.rb +0 -2
  608. data/lib/datadog/tracing/diagnostics/health.rb +0 -2
  609. data/lib/datadog/tracing/distributed/b3_multi.rb +12 -6
  610. data/lib/datadog/tracing/distributed/b3_single.rb +8 -6
  611. data/lib/datadog/tracing/distributed/datadog.rb +58 -11
  612. data/lib/datadog/tracing/distributed/datadog_tags_codec.rb +0 -1
  613. data/lib/datadog/tracing/distributed/fetcher.rb +0 -9
  614. data/lib/datadog/tracing/distributed/headers/ext.rb +0 -1
  615. data/lib/datadog/tracing/distributed/helpers.rb +21 -36
  616. data/lib/datadog/tracing/distributed/none.rb +0 -1
  617. data/lib/datadog/tracing/distributed/propagation.rb +0 -1
  618. data/lib/datadog/tracing/distributed/trace_context.rb +8 -13
  619. data/lib/datadog/tracing/event.rb +0 -2
  620. data/lib/datadog/tracing/flush.rb +0 -2
  621. data/lib/datadog/tracing/metadata/analytics.rb +0 -2
  622. data/lib/datadog/tracing/metadata/errors.rb +0 -2
  623. data/lib/datadog/tracing/metadata/ext.rb +6 -2
  624. data/lib/datadog/tracing/metadata/tagging.rb +0 -2
  625. data/lib/datadog/tracing/metadata.rb +0 -2
  626. data/lib/datadog/tracing/pipeline/span_filter.rb +0 -2
  627. data/lib/datadog/tracing/pipeline/span_processor.rb +0 -2
  628. data/lib/datadog/tracing/pipeline.rb +0 -2
  629. data/lib/datadog/tracing/propagation/http.rb +0 -2
  630. data/lib/datadog/tracing/runtime/metrics.rb +0 -2
  631. data/lib/datadog/tracing/sampling/all_sampler.rb +0 -2
  632. data/lib/datadog/tracing/sampling/ext.rb +0 -2
  633. data/lib/datadog/tracing/sampling/matcher.rb +0 -2
  634. data/lib/datadog/tracing/sampling/priority_sampler.rb +0 -2
  635. data/lib/datadog/tracing/sampling/rate_by_key_sampler.rb +0 -2
  636. data/lib/datadog/tracing/sampling/rate_by_service_sampler.rb +0 -2
  637. data/lib/datadog/tracing/sampling/rate_limiter.rb +0 -2
  638. data/lib/datadog/tracing/sampling/rate_sampler.rb +0 -2
  639. data/lib/datadog/tracing/sampling/rule.rb +0 -2
  640. data/lib/datadog/tracing/sampling/rule_sampler.rb +0 -2
  641. data/lib/datadog/tracing/sampling/sampler.rb +0 -2
  642. data/lib/datadog/tracing/span.rb +0 -2
  643. data/lib/datadog/tracing/span_operation.rb +1 -3
  644. data/lib/datadog/tracing/sync_writer.rb +0 -2
  645. data/lib/datadog/tracing/trace_digest.rb +0 -2
  646. data/lib/datadog/tracing/trace_operation.rb +1 -3
  647. data/lib/datadog/tracing/trace_segment.rb +7 -2
  648. data/lib/datadog/tracing/tracer.rb +0 -2
  649. data/lib/datadog/tracing/utils.rb +33 -2
  650. data/lib/datadog/tracing/workers/trace_writer.rb +0 -2
  651. data/lib/datadog/tracing/workers.rb +0 -2
  652. data/lib/datadog/tracing/writer.rb +0 -2
  653. data/lib/datadog/tracing.rb +0 -2
  654. data/lib/ddtrace/auto_instrument.rb +0 -2
  655. data/lib/ddtrace/auto_instrument_base.rb +0 -2
  656. data/lib/ddtrace/profiling/preload.rb +0 -2
  657. data/lib/ddtrace/transport/ext.rb +0 -2
  658. data/lib/ddtrace/transport/http/adapters/net.rb +0 -2
  659. data/lib/ddtrace/transport/http/adapters/registry.rb +0 -2
  660. data/lib/ddtrace/transport/http/adapters/test.rb +0 -2
  661. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +0 -2
  662. data/lib/ddtrace/transport/http/api/endpoint.rb +0 -2
  663. data/lib/ddtrace/transport/http/api/fallbacks.rb +0 -2
  664. data/lib/ddtrace/transport/http/api/instance.rb +0 -2
  665. data/lib/ddtrace/transport/http/api/map.rb +0 -2
  666. data/lib/ddtrace/transport/http/api/spec.rb +0 -2
  667. data/lib/ddtrace/transport/http/api.rb +0 -2
  668. data/lib/ddtrace/transport/http/builder.rb +0 -2
  669. data/lib/ddtrace/transport/http/client.rb +0 -2
  670. data/lib/ddtrace/transport/http/env.rb +0 -2
  671. data/lib/ddtrace/transport/http/response.rb +0 -2
  672. data/lib/ddtrace/transport/http/statistics.rb +0 -2
  673. data/lib/ddtrace/transport/http/traces.rb +0 -2
  674. data/lib/ddtrace/transport/http.rb +0 -4
  675. data/lib/ddtrace/transport/io/client.rb +0 -2
  676. data/lib/ddtrace/transport/io/response.rb +0 -2
  677. data/lib/ddtrace/transport/io/traces.rb +0 -4
  678. data/lib/ddtrace/transport/io.rb +0 -2
  679. data/lib/ddtrace/transport/parcel.rb +0 -4
  680. data/lib/ddtrace/transport/request.rb +0 -2
  681. data/lib/ddtrace/transport/response.rb +0 -2
  682. data/lib/ddtrace/transport/serializable_trace.rb +9 -5
  683. data/lib/ddtrace/transport/statistics.rb +0 -2
  684. data/lib/ddtrace/transport/trace_formatter.rb +7 -2
  685. data/lib/ddtrace/transport/traces.rb +0 -2
  686. data/lib/ddtrace/version.rb +1 -3
  687. data/lib/ddtrace.rb +1 -5
  688. metadata +27 -16
  689. data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time.h +0 -9
  690. data/lib/datadog/appsec/assets/waf_rules/risky.json +0 -1499
  691. data/lib/datadog/appsec/contrib/rack/request.rb +0 -78
  692. data/lib/datadog/appsec/contrib/rack/response.rb +0 -24
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1ba4a81593411a12abfa1665b3910e49e35429b1b266779e93accb0f84a478d2
4
- data.tar.gz: e72362dc1a1e682a3c52b8af8017fcd12e60d353843cdd129f65a55dbb0c312d
3
+ metadata.gz: 1d6ef41c3e2f14b483d24a4aca9955a2a4b0ddf850d25e5e19932e62299c3905
4
+ data.tar.gz: de145f2e113f13e6d5d3360967e5fc3dc0273fb62c47dc6fae5d455e9c5f088c
5
5
  SHA512:
6
- metadata.gz: a083b23cfadccc78e67a5aa2a3ae067bc868e4721d92d1fb9fcbadc7536332fabd20f6638fb157712e5e909afd3e3e505a2011838a4f0e98dbebaa64a38f7db6
7
- data.tar.gz: 81b27dbbf685c01ee99ab79a8774aefca4a2feb93363a41e1a3465b01b1b07f571d5bdd75a73880658ae05254a3d742651bdf8df98fd48c040f73bb6a16702d0
6
+ metadata.gz: a3d6558cd4d7bbc1d8c6cdcb0500dec28eb8d451b9a92086db9cb70fec0ebf6f183c5a0b2b31287c364f9f322b3c9ad303f12b9826c808723684bab713e79563
7
+ data.tar.gz: 7ed0b3255a67e3d8016dc0a6a0769cbd95f960f6a6324ec79a27f16026e08dd3b3e9bb8e28d728797a72e6eca8b1ab73646ff815bae32a52358481c0501b864d
data/CHANGELOG.md CHANGED
@@ -2,6 +2,39 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [1.10.0] - 2023-03-06
6
+
7
+ ### Added
8
+
9
+ * Support Ruby 3.2 ([#2601][])
10
+ * Publish init container image (beta) for `dd-trace-rb` injection through K8s admission controller ([#2606][])
11
+ * Tracing: Support 128 bits trace id ([#2543][])
12
+ * Tracing: Add tags to integrations (`que` / `racecar` / `resque`/ `shoryken` / `sneakers` / `qless` / `delayed_job` / `kafka` / `sidekiq` / `dalli` / `presto` / `elasticsearch`) ([#2619][], [#2613][] , [#2608][], [#2590][])
13
+ * Appsec: Introduce `AppSec::Instrumentation::Gateway::Argument` ([#2648][])
14
+ * Appsec: Block request when user ID matches rules ([#2642][])
15
+ * Appsec: Block request base on response addresses matches ([#2605][])
16
+ * Appsec: Allow to set user id denylist ([#2612][])
17
+ * Profiling: Show profiler overhead in flamegraph for CPU Profiling 2.0 ([#2607][])
18
+ * Profiling: Add support for allocation samples to `ThreadContext` ([#2657][])
19
+ * Profiling: Exclude disabled profiling sample value types from output ([#2634][])
20
+ * Profiling: Extend stack collector to record the alloc-samples metric ([#2618][])
21
+ * Profiling: Add `Profiling.allocation_count` API for new profiler ([#2635][])
22
+
23
+ ### Changed
24
+
25
+ * Tracing: `rack` instrumentation counts time spent in queue as part of the `http_server.queue` span ([#2591][]) ([@agrobbin][])
26
+ * Appsec: Update ruleset to 1.5.2 ([#2662][], [#2659][], [#2598][])
27
+ * Appsec: Update `libddwaf` version to 1.6.2.0.0 ([#2614][])
28
+ * Profiling: Upgrade profiler to use `libdatadog` v2.0.0 ([#2599][])
29
+ * Profiling: Remove support for profiling Ruby 2.2 ([#2592][])
30
+
31
+ ### Fixed
32
+
33
+ * Fix broken Ruby VM statistics for Ruby 3.2 ([#2600][])
34
+ * Tracing: Fix 'uninitialized constant GRPC::Interceptor' error with 'gapic-common' gem ([#2649][])
35
+ * Profiling: Fix profiler not adding the "In native code" placeholder ([#2594][])
36
+ * Fix profiler detection for google-protobuf installation ([#2595][])
37
+
5
38
  ## [1.9.0] - 2023-01-30
6
39
 
7
40
  As of ddtrace 1.9.0, CPU Profiling 2.0 is now in opt-in (that is, disabled by default) public beta. For more details, check the release notes.
@@ -2281,7 +2314,8 @@ Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.3.1
2281
2314
 
2282
2315
  Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
2283
2316
 
2284
- [Unreleased]: https://github.com/DataDog/dd-trace-rb/compare/v1.9.0...master
2317
+ [Unreleased]: https://github.com/DataDog/dd-trace-rb/compare/v1.10.0...master
2318
+ [1.10.0]: https://github.com/DataDog/dd-trace-rb/compare/v1.9.0...v1.10.0
2285
2319
  [1.9.0]: https://github.com/DataDog/dd-trace-rb/compare/v1.8.0...v1.9.0
2286
2320
  [1.8.0]: https://github.com/DataDog/dd-trace-rb/compare/v1.7.0...v1.8.0
2287
2321
  [1.7.0]: https://github.com/DataDog/dd-trace-rb/compare/v1.6.1...v1.7.0
@@ -3254,12 +3288,39 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
3254
3288
  [#2530]: https://github.com/DataDog/dd-trace-rb/issues/2530
3255
3289
  [#2531]: https://github.com/DataDog/dd-trace-rb/issues/2531
3256
3290
  [#2541]: https://github.com/DataDog/dd-trace-rb/issues/2541
3291
+ [#2543]: https://github.com/DataDog/dd-trace-rb/issues/2543
3257
3292
  [#2557]: https://github.com/DataDog/dd-trace-rb/issues/2557
3258
3293
  [#2562]: https://github.com/DataDog/dd-trace-rb/issues/2562
3259
3294
  [#2573]: https://github.com/DataDog/dd-trace-rb/issues/2573
3260
3295
  [#2576]: https://github.com/DataDog/dd-trace-rb/issues/2576
3261
3296
  [#2580]: https://github.com/DataDog/dd-trace-rb/issues/2580
3262
3297
  [#2586]: https://github.com/DataDog/dd-trace-rb/issues/2586
3298
+ [#2590]: https://github.com/DataDog/dd-trace-rb/issues/2590
3299
+ [#2591]: https://github.com/DataDog/dd-trace-rb/issues/2591
3300
+ [#2592]: https://github.com/DataDog/dd-trace-rb/issues/2592
3301
+ [#2594]: https://github.com/DataDog/dd-trace-rb/issues/2594
3302
+ [#2595]: https://github.com/DataDog/dd-trace-rb/issues/2595
3303
+ [#2598]: https://github.com/DataDog/dd-trace-rb/issues/2598
3304
+ [#2599]: https://github.com/DataDog/dd-trace-rb/issues/2599
3305
+ [#2600]: https://github.com/DataDog/dd-trace-rb/issues/2600
3306
+ [#2601]: https://github.com/DataDog/dd-trace-rb/issues/2601
3307
+ [#2605]: https://github.com/DataDog/dd-trace-rb/issues/2605
3308
+ [#2606]: https://github.com/DataDog/dd-trace-rb/issues/2606
3309
+ [#2607]: https://github.com/DataDog/dd-trace-rb/issues/2607
3310
+ [#2608]: https://github.com/DataDog/dd-trace-rb/issues/2608
3311
+ [#2612]: https://github.com/DataDog/dd-trace-rb/issues/2612
3312
+ [#2613]: https://github.com/DataDog/dd-trace-rb/issues/2613
3313
+ [#2614]: https://github.com/DataDog/dd-trace-rb/issues/2614
3314
+ [#2618]: https://github.com/DataDog/dd-trace-rb/issues/2618
3315
+ [#2619]: https://github.com/DataDog/dd-trace-rb/issues/2619
3316
+ [#2634]: https://github.com/DataDog/dd-trace-rb/issues/2634
3317
+ [#2635]: https://github.com/DataDog/dd-trace-rb/issues/2635
3318
+ [#2642]: https://github.com/DataDog/dd-trace-rb/issues/2642
3319
+ [#2648]: https://github.com/DataDog/dd-trace-rb/issues/2648
3320
+ [#2649]: https://github.com/DataDog/dd-trace-rb/issues/2649
3321
+ [#2657]: https://github.com/DataDog/dd-trace-rb/issues/2657
3322
+ [#2659]: https://github.com/DataDog/dd-trace-rb/issues/2659
3323
+ [#2662]: https://github.com/DataDog/dd-trace-rb/issues/2662
3263
3324
  [@AdrianLC]: https://github.com/AdrianLC
3264
3325
  [@Azure7111]: https://github.com/Azure7111
3265
3326
  [@BabyGroot]: https://github.com/BabyGroot
@@ -3405,4 +3466,4 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
3405
3466
  [@y-yagi]: https://github.com/y-yagi
3406
3467
  [@yujideveloper]: https://github.com/yujideveloper
3407
3468
  [@yukimurasawa]: https://github.com/yukimurasawa
3408
- [@zachmccormick]: https://github.com/zachmccormick
3469
+ [@zachmccormick]: https://github.com/zachmccormick
@@ -1,5 +1,3 @@
1
- # typed: ignore
2
-
3
1
  # rubocop:disable Style/StderrPuts
4
2
  # rubocop:disable Style/GlobalVars
5
3
 
@@ -9,15 +9,15 @@
9
9
 
10
10
  #include "helpers.h"
11
11
  #include "ruby_helpers.h"
12
- #include "collectors_cpu_and_wall_time.h"
12
+ #include "collectors_thread_context.h"
13
13
  #include "collectors_dynamic_sampling_rate.h"
14
14
  #include "collectors_idle_sampling_helper.h"
15
15
  #include "private_vm_api_access.h"
16
16
  #include "setup_signal_handler.h"
17
17
  #include "time_helpers.h"
18
18
 
19
- // Used to trigger the periodic execution of Collectors::CpuAndWallTime, which implements all of the sampling logic
20
- // itself; this class only implements the "doing it periodically" part.
19
+ // Used to trigger the execution of Collectors::ThreadState, which implements all of the sampling logic
20
+ // itself; this class only implements the "when to do it" part.
21
21
  //
22
22
  // This file implements the native bits of the Datadog::Profiling::Collectors::CpuAndWallTimeWorker class
23
23
 
@@ -61,7 +61,7 @@
61
61
  // "as soon as it can".
62
62
  //
63
63
  // 4. The Ruby VM calls our `sample_from_postponed_job` from a thread holding the global VM lock. A sample is recorded by
64
- // calling `cpu_and_wall_time_collector_sample`.
64
+ // calling `thread_context_collector_sample`.
65
65
  //
66
66
  // ### TracePoints and Forking
67
67
  //
@@ -80,8 +80,9 @@ struct cpu_and_wall_time_worker_state {
80
80
  atomic_bool should_run;
81
81
 
82
82
  bool gc_profiling_enabled;
83
+ bool allocation_counting_enabled;
83
84
  VALUE self_instance;
84
- VALUE cpu_and_wall_time_collector_instance;
85
+ VALUE thread_context_collector_instance;
85
86
  VALUE idle_sampling_helper_instance;
86
87
  VALUE owner_thread;
87
88
  dynamic_sampling_rate_state dynamic_sampling_rate;
@@ -95,6 +96,8 @@ struct cpu_and_wall_time_worker_state {
95
96
  // Used to get gc start/finish information
96
97
  VALUE gc_tracepoint;
97
98
 
99
+ VALUE object_allocation_tracepoint;
100
+
98
101
  struct stats {
99
102
  // How many times we tried to trigger a sample
100
103
  unsigned int trigger_sample_attempts;
@@ -119,9 +122,10 @@ static VALUE _native_new(VALUE klass);
119
122
  static VALUE _native_initialize(
120
123
  DDTRACE_UNUSED VALUE _self,
121
124
  VALUE self_instance,
122
- VALUE cpu_and_wall_time_collector_instance,
125
+ VALUE thread_context_collector_instance,
123
126
  VALUE gc_profiling_enabled,
124
- VALUE idle_sampling_helper_instance
127
+ VALUE idle_sampling_helper_instance,
128
+ VALUE allocation_counting_enabled
125
129
  );
126
130
  static void cpu_and_wall_time_worker_typed_data_mark(void *state_ptr);
127
131
  static VALUE _native_sampling_loop(VALUE self, VALUE instance);
@@ -153,6 +157,9 @@ void *simulate_sampling_signal_delivery(DDTRACE_UNUSED void *_unused);
153
157
  static void grab_gvl_and_sample(void);
154
158
  static void reset_stats(struct cpu_and_wall_time_worker_state *state);
155
159
  static void sleep_for(uint64_t time_ns);
160
+ static VALUE _native_allocation_count(DDTRACE_UNUSED VALUE self);
161
+ static void on_newobj_event(DDTRACE_UNUSED VALUE tracepoint_data, DDTRACE_UNUSED void *unused);
162
+ static void disable_tracepoints(struct cpu_and_wall_time_worker_state *state);
156
163
 
157
164
  // Note on sampler global state safety:
158
165
  //
@@ -163,7 +170,14 @@ static void sleep_for(uint64_t time_ns);
163
170
  // This global state is needed because a bunch of functions on this file need to access it from situations
164
171
  // (e.g. signal handler) where it's impossible or just awkward to pass it as an argument.
165
172
  static VALUE active_sampler_instance = Qnil;
166
- struct cpu_and_wall_time_worker_state *active_sampler_instance_state = NULL;
173
+ static struct cpu_and_wall_time_worker_state *active_sampler_instance_state = NULL;
174
+
175
+ // Used to implement CpuAndWallTimeWorker._native_allocation_count . To be able to use cheap thread-local variables
176
+ // (here with `__thread`, see https://gcc.gnu.org/onlinedocs/gcc/Thread-Local.html), this needs to be global.
177
+ //
178
+ // Carryover of state between profiler instances can happen and is not considered to be a problem -- see expectations for this
179
+ // API documented in profiling.rb .
180
+ __thread uint64_t allocation_count = 0;
167
181
 
168
182
  void collectors_cpu_and_wall_time_worker_init(VALUE profiling_module) {
169
183
  rb_global_variable(&active_sampler_instance);
@@ -183,11 +197,12 @@ void collectors_cpu_and_wall_time_worker_init(VALUE profiling_module) {
183
197
  // https://bugs.ruby-lang.org/issues/18007 for a discussion around this.
184
198
  rb_define_alloc_func(collectors_cpu_and_wall_time_worker_class, _native_new);
185
199
 
186
- rb_define_singleton_method(collectors_cpu_and_wall_time_worker_class, "_native_initialize", _native_initialize, 4);
200
+ rb_define_singleton_method(collectors_cpu_and_wall_time_worker_class, "_native_initialize", _native_initialize, 5);
187
201
  rb_define_singleton_method(collectors_cpu_and_wall_time_worker_class, "_native_sampling_loop", _native_sampling_loop, 1);
188
202
  rb_define_singleton_method(collectors_cpu_and_wall_time_worker_class, "_native_stop", _native_stop, 2);
189
203
  rb_define_singleton_method(collectors_cpu_and_wall_time_worker_class, "_native_reset_after_fork", _native_reset_after_fork, 1);
190
204
  rb_define_singleton_method(collectors_cpu_and_wall_time_worker_class, "_native_stats", _native_stats, 1);
205
+ rb_define_singleton_method(collectors_cpu_and_wall_time_worker_class, "_native_allocation_count", _native_allocation_count, 0);
191
206
  rb_define_singleton_method(testing_module, "_native_current_sigprof_signal_handler", _native_current_sigprof_signal_handler, 0);
192
207
  rb_define_singleton_method(testing_module, "_native_is_running?", _native_is_running, 1);
193
208
  rb_define_singleton_method(testing_module, "_native_install_testing_signal_handler", _native_install_testing_signal_handler, 0);
@@ -217,13 +232,15 @@ static VALUE _native_new(VALUE klass) {
217
232
 
218
233
  atomic_init(&state->should_run, false);
219
234
  state->gc_profiling_enabled = false;
220
- state->cpu_and_wall_time_collector_instance = Qnil;
235
+ state->allocation_counting_enabled = false;
236
+ state->thread_context_collector_instance = Qnil;
221
237
  state->idle_sampling_helper_instance = Qnil;
222
238
  state->owner_thread = Qnil;
223
239
  dynamic_sampling_rate_init(&state->dynamic_sampling_rate);
224
240
  state->failure_exception = Qnil;
225
241
  state->stop_thread = Qnil;
226
242
  state->gc_tracepoint = Qnil;
243
+ state->object_allocation_tracepoint = Qnil;
227
244
  reset_stats(state);
228
245
 
229
246
  return state->self_instance = TypedData_Wrap_Struct(klass, &cpu_and_wall_time_worker_typed_data, state);
@@ -232,19 +249,23 @@ static VALUE _native_new(VALUE klass) {
232
249
  static VALUE _native_initialize(
233
250
  DDTRACE_UNUSED VALUE _self,
234
251
  VALUE self_instance,
235
- VALUE cpu_and_wall_time_collector_instance,
252
+ VALUE thread_context_collector_instance,
236
253
  VALUE gc_profiling_enabled,
237
- VALUE idle_sampling_helper_instance
254
+ VALUE idle_sampling_helper_instance,
255
+ VALUE allocation_counting_enabled
238
256
  ) {
239
257
  ENFORCE_BOOLEAN(gc_profiling_enabled);
258
+ ENFORCE_BOOLEAN(allocation_counting_enabled);
240
259
 
241
260
  struct cpu_and_wall_time_worker_state *state;
242
261
  TypedData_Get_Struct(self_instance, struct cpu_and_wall_time_worker_state, &cpu_and_wall_time_worker_typed_data, state);
243
262
 
244
263
  state->gc_profiling_enabled = (gc_profiling_enabled == Qtrue);
245
- state->cpu_and_wall_time_collector_instance = enforce_cpu_and_wall_time_collector_instance(cpu_and_wall_time_collector_instance);
264
+ state->allocation_counting_enabled = (allocation_counting_enabled == Qtrue);
265
+ state->thread_context_collector_instance = enforce_thread_context_collector_instance(thread_context_collector_instance);
246
266
  state->idle_sampling_helper_instance = idle_sampling_helper_instance;
247
267
  state->gc_tracepoint = rb_tracepoint_new(Qnil, RUBY_INTERNAL_EVENT_GC_ENTER | RUBY_INTERNAL_EVENT_GC_EXIT, on_gc_event, NULL /* unused */);
268
+ state->object_allocation_tracepoint = rb_tracepoint_new(Qnil, RUBY_INTERNAL_EVENT_NEWOBJ, on_newobj_event, NULL /* unused */);
248
269
 
249
270
  return Qtrue;
250
271
  }
@@ -253,12 +274,13 @@ static VALUE _native_initialize(
253
274
  static void cpu_and_wall_time_worker_typed_data_mark(void *state_ptr) {
254
275
  struct cpu_and_wall_time_worker_state *state = (struct cpu_and_wall_time_worker_state *) state_ptr;
255
276
 
256
- rb_gc_mark(state->cpu_and_wall_time_collector_instance);
277
+ rb_gc_mark(state->thread_context_collector_instance);
257
278
  rb_gc_mark(state->idle_sampling_helper_instance);
258
279
  rb_gc_mark(state->owner_thread);
259
280
  rb_gc_mark(state->failure_exception);
260
281
  rb_gc_mark(state->stop_thread);
261
282
  rb_gc_mark(state->gc_tracepoint);
283
+ rb_gc_mark(state->object_allocation_tracepoint);
262
284
  }
263
285
 
264
286
  // Called in a background thread created in CpuAndWallTimeWorker#start
@@ -275,14 +297,13 @@ static VALUE _native_sampling_loop(DDTRACE_UNUSED VALUE _self, VALUE instance) {
275
297
  );
276
298
  } else {
277
299
  // The previously active thread seems to have died without cleaning up after itself.
278
- // In this case, we can still go ahead and start the profiler BUT we make sure to disable any existing GC tracepoint
300
+ // In this case, we can still go ahead and start the profiler BUT we make sure to disable any existing tracepoint
279
301
  // first as:
280
302
  // a) If this is a new instance of the CpuAndWallTimeWorker, we don't want the tracepoint from the old instance
281
303
  // being kept around
282
304
  // b) If this is the same instance of the CpuAndWallTimeWorker if we call enable on a tracepoint that is already
283
305
  // enabled, it will start firing more than once, see https://bugs.ruby-lang.org/issues/19114 for details.
284
-
285
- rb_tracepoint_disable(old_state->gc_tracepoint);
306
+ disable_tracepoints(old_state);
286
307
  }
287
308
  }
288
309
 
@@ -308,7 +329,7 @@ static VALUE _native_sampling_loop(DDTRACE_UNUSED VALUE _self, VALUE instance) {
308
329
 
309
330
  // The sample trigger loop finished (either cleanly or with an error); let's clean up
310
331
 
311
- rb_tracepoint_disable(state->gc_tracepoint);
332
+ disable_tracepoints(state);
312
333
 
313
334
  active_sampler_instance_state = NULL;
314
335
  active_sampler_instance = Qnil;
@@ -360,8 +381,8 @@ static VALUE stop(VALUE self_instance, VALUE optional_exception) {
360
381
  atomic_store(&state->should_run, false);
361
382
  state->failure_exception = optional_exception;
362
383
 
363
- // Disable the GC tracepoint as soon as possible, so the VM doesn't keep on calling it
364
- rb_tracepoint_disable(state->gc_tracepoint);
384
+ // Disable the tracepoints as soon as possible, so the VM doesn't keep on calling them
385
+ disable_tracepoints(state);
365
386
 
366
387
  return Qtrue;
367
388
  }
@@ -481,7 +502,8 @@ static VALUE rescued_sample_from_postponed_job(VALUE self_instance) {
481
502
 
482
503
  state->stats.sampled++;
483
504
 
484
- cpu_and_wall_time_collector_sample(state->cpu_and_wall_time_collector_instance, wall_time_ns_before_sample);
505
+ VALUE profiler_overhead_stack_thread = state->owner_thread; // Used to attribute profiler overhead to a different stack
506
+ thread_context_collector_sample(state->thread_context_collector_instance, wall_time_ns_before_sample, profiler_overhead_stack_thread);
485
507
 
486
508
  long wall_time_ns_after_sample = monotonic_wall_time_now_ns(RAISE_ON_FAILURE);
487
509
  long delta_ns = wall_time_ns_after_sample - wall_time_ns_before_sample;
@@ -527,10 +549,11 @@ static VALUE release_gvl_and_run_sampling_trigger_loop(VALUE instance) {
527
549
  struct cpu_and_wall_time_worker_state *state;
528
550
  TypedData_Get_Struct(instance, struct cpu_and_wall_time_worker_state, &cpu_and_wall_time_worker_typed_data, state);
529
551
 
530
- // Final preparations: Setup signal handler and enable tracepoint. We run these here and not in `_native_sampling_loop`
552
+ // Final preparations: Setup signal handler and enable tracepoints. We run these here and not in `_native_sampling_loop`
531
553
  // because they may raise exceptions.
532
554
  install_sigprof_signal_handler(handle_sampling_signal, "handle_sampling_signal");
533
555
  if (state->gc_profiling_enabled) rb_tracepoint_enable(state->gc_tracepoint);
556
+ if (state->allocation_counting_enabled) rb_tracepoint_enable(state->object_allocation_tracepoint);
534
557
 
535
558
  rb_thread_call_without_gvl(run_sampling_trigger_loop, state, interrupt_sampling_trigger_loop, state);
536
559
 
@@ -586,9 +609,9 @@ static VALUE _native_gc_tracepoint(DDTRACE_UNUSED VALUE self, VALUE instance) {
586
609
  // when the RUBY_INTERNAL_EVENT_GC_ENTER and RUBY_INTERNAL_EVENT_GC_EXIT events are triggered.
587
610
  //
588
611
  // See the comments on
589
- // * cpu_and_wall_time_collector_on_gc_start
590
- // * cpu_and_wall_time_collector_on_gc_finish
591
- // * cpu_and_wall_time_collector_sample_after_gc
612
+ // * thread_context_collector_on_gc_start
613
+ // * thread_context_collector_on_gc_finish
614
+ // * thread_context_collector_sample_after_gc
592
615
  //
593
616
  // For the expected times in which to call them, and their assumptions.
594
617
  //
@@ -610,11 +633,11 @@ static void on_gc_event(VALUE tracepoint_data, DDTRACE_UNUSED void *unused) {
610
633
  if (state == NULL) return;
611
634
 
612
635
  if (event == RUBY_INTERNAL_EVENT_GC_ENTER) {
613
- cpu_and_wall_time_collector_on_gc_start(state->cpu_and_wall_time_collector_instance);
636
+ thread_context_collector_on_gc_start(state->thread_context_collector_instance);
614
637
  } else if (event == RUBY_INTERNAL_EVENT_GC_EXIT) {
615
638
  // Design: In an earlier iteration of this feature (see https://github.com/DataDog/dd-trace-rb/pull/2308) we
616
- // actually had a single method to implement the behavior of both cpu_and_wall_time_collector_on_gc_finish
617
- // and cpu_and_wall_time_collector_sample_after_gc (the latter is called via after_gc_from_postponed_job).
639
+ // actually had a single method to implement the behavior of both thread_context_collector_on_gc_finish
640
+ // and thread_context_collector_sample_after_gc (the latter is called via after_gc_from_postponed_job).
618
641
  //
619
642
  // Unfortunately, then we discovered the safety issue around no allocations, and thus decided to separate them -- so that
620
643
  // the sampling could run outside the tight safety constraints of the garbage collection process.
@@ -624,11 +647,11 @@ static void on_gc_event(VALUE tracepoint_data, DDTRACE_UNUSED void *unused) {
624
647
  // it should be pointing at.
625
648
  // Alternatives to solve this would be to capture no stack for garbage collection (as we do for Java and .net);
626
649
  // making the sampling process allocation-safe (very hard); or separate stack sampling from sample recording,
627
- // e.g. enabling us to capture the stack in cpu_and_wall_time_collector_on_gc_finish and do the rest later
650
+ // e.g. enabling us to capture the stack in thread_context_collector_on_gc_finish and do the rest later
628
651
  // (medium hard).
629
652
 
630
- cpu_and_wall_time_collector_on_gc_finish(state->cpu_and_wall_time_collector_instance);
631
- // We use rb_postponed_job_register_one to ask Ruby to run cpu_and_wall_time_collector_sample_after_gc after if
653
+ thread_context_collector_on_gc_finish(state->thread_context_collector_instance);
654
+ // We use rb_postponed_job_register_one to ask Ruby to run thread_context_collector_sample_after_gc after if
632
655
  // fully finishes the garbage collection, so that one is allowed to do allocations and throw exceptions as usual.
633
656
  //
634
657
  // Note: If we ever want to get rid of rb_postponed_job_register_one, remember not to clobber Ruby exceptions, as
@@ -649,8 +672,8 @@ static void after_gc_from_postponed_job(DDTRACE_UNUSED void *_unused) {
649
672
  return; // We're not on the main Ractor; we currently don't support profiling non-main Ractors
650
673
  }
651
674
 
652
- // Trigger sampling using the Collectors::CpuAndWallTime; rescue against any exceptions that happen during sampling
653
- safely_call(cpu_and_wall_time_collector_sample_after_gc, state->cpu_and_wall_time_collector_instance, state->self_instance);
675
+ // Trigger sampling using the Collectors::ThreadState; rescue against any exceptions that happen during sampling
676
+ safely_call(thread_context_collector_sample_after_gc, state->thread_context_collector_instance, state->self_instance);
654
677
  }
655
678
 
656
679
  // Equivalent to Ruby begin/rescue call, where we call a C function and jump to the exception handler if an
@@ -694,12 +717,12 @@ static VALUE _native_reset_after_fork(DDTRACE_UNUSED VALUE self, VALUE instance)
694
717
  TypedData_Get_Struct(instance, struct cpu_and_wall_time_worker_state, &cpu_and_wall_time_worker_typed_data, state);
695
718
 
696
719
  // Disable all tracepoints, so that there are no more attempts to mutate the profile
697
- rb_tracepoint_disable(state->gc_tracepoint);
720
+ disable_tracepoints(state);
698
721
 
699
722
  reset_stats(state);
700
723
 
701
- // Remove all state from the `Collectors::CpuAndWallTime` and connected downstream components
702
- rb_funcall(state->cpu_and_wall_time_collector_instance, rb_intern("reset_after_fork"), 0);
724
+ // Remove all state from the `Collectors::ThreadState` and connected downstream components
725
+ rb_funcall(state->thread_context_collector_instance, rb_intern("reset_after_fork"), 0);
703
726
 
704
727
  return Qtrue;
705
728
  }
@@ -774,3 +797,25 @@ static void sleep_for(uint64_t time_ns) {
774
797
  }
775
798
  }
776
799
  }
800
+
801
+ static VALUE _native_allocation_count(DDTRACE_UNUSED VALUE self) {
802
+ bool is_profiler_running = active_sampler_instance_state != NULL;
803
+
804
+ return is_profiler_running ? ULL2NUM(allocation_count) : Qnil;
805
+ }
806
+
807
+ // Implements memory-related profiling events. This function is called by Ruby via the `object_allocation_tracepoint`
808
+ // when the RUBY_INTERNAL_EVENT_NEWOBJ event is triggered.
809
+ static void on_newobj_event(DDTRACE_UNUSED VALUE tracepoint_data, DDTRACE_UNUSED void *unused) {
810
+ // Update thread-local allocation count
811
+ if (RB_UNLIKELY(allocation_count == UINT64_MAX)) {
812
+ allocation_count = 0;
813
+ } else {
814
+ allocation_count++;
815
+ }
816
+ }
817
+
818
+ static void disable_tracepoints(struct cpu_and_wall_time_worker_state *state) {
819
+ rb_tracepoint_disable(state->gc_tracepoint);
820
+ rb_tracepoint_disable(state->object_allocation_tracepoint);
821
+ }
@@ -170,15 +170,15 @@ static void interrupt_idle_sampling_loop(void *state_ptr) {
170
170
  // ask the thread to stop, instead of exiting early.
171
171
 
172
172
  error = pthread_mutex_lock(&state->wakeup_mutex);
173
- if (error) { fprintf(stderr, "[DDTRACE] Error during pthread_mutex_lock in interrupt_idle_sampling_loop (%s)\n", strerror(error)); }
173
+ if (error) { fprintf(stderr, "[ddtrace] Error during pthread_mutex_lock in interrupt_idle_sampling_loop (%s)\n", strerror(error)); }
174
174
 
175
175
  state->requested_action = ACTION_STOP;
176
176
 
177
177
  error = pthread_mutex_unlock(&state->wakeup_mutex);
178
- if (error) { fprintf(stderr, "[DDTRACE] Error during pthread_mutex_unlock in interrupt_idle_sampling_loop (%s)\n", strerror(error)); }
178
+ if (error) { fprintf(stderr, "[ddtrace] Error during pthread_mutex_unlock in interrupt_idle_sampling_loop (%s)\n", strerror(error)); }
179
179
 
180
180
  error = pthread_cond_broadcast(&state->wakeup);
181
- if (error) { fprintf(stderr, "[DDTRACE] Error during pthread_cond_broadcast in interrupt_idle_sampling_loop (%s)\n", strerror(error)); }
181
+ if (error) { fprintf(stderr, "[ddtrace] Error during pthread_cond_broadcast in interrupt_idle_sampling_loop (%s)\n", strerror(error)); }
182
182
  }
183
183
 
184
184
  static VALUE _native_stop(DDTRACE_UNUSED VALUE self, VALUE self_instance) {
@@ -32,6 +32,7 @@ static VALUE _native_sample(
32
32
  VALUE recorder_instance,
33
33
  VALUE metric_values_hash,
34
34
  VALUE labels_array,
35
+ VALUE numeric_labels_array,
35
36
  VALUE max_frames,
36
37
  VALUE in_gc
37
38
  );
@@ -39,7 +40,7 @@ static void maybe_add_placeholder_frames_omitted(VALUE thread, sampling_buffer*
39
40
  static void record_placeholder_stack_in_native_code(
40
41
  sampling_buffer* buffer,
41
42
  VALUE recorder_instance,
42
- ddog_Slice_I64 metric_values,
43
+ sample_values values,
43
44
  ddog_prof_Slice_Label labels,
44
45
  sampling_buffer *record_buffer,
45
46
  int extra_frames_in_record_buffer
@@ -48,7 +49,7 @@ static void sample_thread_internal(
48
49
  VALUE thread,
49
50
  sampling_buffer* buffer,
50
51
  VALUE recorder_instance,
51
- ddog_Slice_I64 metric_values,
52
+ sample_values values,
52
53
  ddog_prof_Slice_Label labels,
53
54
  sampling_buffer *record_buffer,
54
55
  int extra_frames_in_record_buffer
@@ -60,7 +61,7 @@ void collectors_stack_init(VALUE profiling_module) {
60
61
  // Hosts methods used for testing the native code using RSpec
61
62
  VALUE testing_module = rb_define_module_under(collectors_stack_class, "Testing");
62
63
 
63
- rb_define_singleton_method(testing_module, "_native_sample", _native_sample, 6);
64
+ rb_define_singleton_method(testing_module, "_native_sample", _native_sample, 7);
64
65
 
65
66
  missing_string = rb_str_new2("");
66
67
  rb_global_variable(&missing_string);
@@ -74,31 +75,26 @@ static VALUE _native_sample(
74
75
  VALUE recorder_instance,
75
76
  VALUE metric_values_hash,
76
77
  VALUE labels_array,
78
+ VALUE numeric_labels_array,
77
79
  VALUE max_frames,
78
80
  VALUE in_gc
79
81
  ) {
80
82
  ENFORCE_TYPE(metric_values_hash, T_HASH);
81
83
  ENFORCE_TYPE(labels_array, T_ARRAY);
84
+ ENFORCE_TYPE(numeric_labels_array, T_ARRAY);
85
+
86
+ VALUE zero = INT2NUM(0);
87
+ sample_values values = {
88
+ .cpu_time_ns = NUM2UINT(rb_hash_lookup2(metric_values_hash, rb_str_new_cstr("cpu-time"), zero)),
89
+ .cpu_samples = NUM2UINT(rb_hash_lookup2(metric_values_hash, rb_str_new_cstr("cpu-samples"), zero)),
90
+ .wall_time_ns = NUM2UINT(rb_hash_lookup2(metric_values_hash, rb_str_new_cstr("wall-time"), zero)),
91
+ .alloc_samples = NUM2UINT(rb_hash_lookup2(metric_values_hash, rb_str_new_cstr("alloc-samples"), zero)),
92
+ };
82
93
 
83
- if (RHASH_SIZE(metric_values_hash) != ENABLED_VALUE_TYPES_COUNT) {
84
- rb_raise(
85
- rb_eArgError,
86
- "Mismatched values for metrics; expected %lu values and got %lu instead",
87
- ENABLED_VALUE_TYPES_COUNT,
88
- RHASH_SIZE(metric_values_hash)
89
- );
90
- }
91
-
92
- int64_t metric_values[ENABLED_VALUE_TYPES_COUNT];
93
- for (unsigned int i = 0; i < ENABLED_VALUE_TYPES_COUNT; i++) {
94
- VALUE metric_value = rb_hash_fetch(metric_values_hash, rb_str_new_cstr(enabled_value_types[i].type_.ptr));
95
- metric_values[i] = NUM2LONG(metric_value);
96
- }
97
-
98
- long labels_count = RARRAY_LEN(labels_array);
94
+ long labels_count = RARRAY_LEN(labels_array) + RARRAY_LEN(numeric_labels_array);
99
95
  ddog_prof_Label labels[labels_count];
100
96
 
101
- for (int i = 0; i < labels_count; i++) {
97
+ for (int i = 0; i < RARRAY_LEN(labels_array); i++) {
102
98
  VALUE key_str_pair = rb_ary_entry(labels_array, i);
103
99
 
104
100
  labels[i] = (ddog_prof_Label) {
@@ -106,6 +102,14 @@ static VALUE _native_sample(
106
102
  .str = char_slice_from_ruby_string(rb_ary_entry(key_str_pair, 1))
107
103
  };
108
104
  }
105
+ for (int i = 0; i < RARRAY_LEN(numeric_labels_array); i++) {
106
+ VALUE key_str_pair = rb_ary_entry(numeric_labels_array, i);
107
+
108
+ labels[i + RARRAY_LEN(labels_array)] = (ddog_prof_Label) {
109
+ .key = char_slice_from_ruby_string(rb_ary_entry(key_str_pair, 0)),
110
+ .num = NUM2ULL(rb_ary_entry(key_str_pair, 1))
111
+ };
112
+ }
109
113
 
110
114
  int max_frames_requested = NUM2INT(max_frames);
111
115
  if (max_frames_requested < 0) rb_raise(rb_eArgError, "Invalid max_frames: value must not be negative");
@@ -116,7 +120,7 @@ static VALUE _native_sample(
116
120
  thread,
117
121
  buffer,
118
122
  recorder_instance,
119
- (ddog_Slice_I64) {.ptr = metric_values, .len = ENABLED_VALUE_TYPES_COUNT},
123
+ values,
120
124
  (ddog_prof_Slice_Label) {.ptr = labels, .len = labels_count},
121
125
  RTEST(in_gc) ? SAMPLE_IN_GC : SAMPLE_REGULAR
122
126
  );
@@ -130,7 +134,7 @@ void sample_thread(
130
134
  VALUE thread,
131
135
  sampling_buffer* buffer,
132
136
  VALUE recorder_instance,
133
- ddog_Slice_I64 metric_values,
137
+ sample_values values,
134
138
  ddog_prof_Slice_Label labels,
135
139
  sample_type type
136
140
  ) {
@@ -138,7 +142,7 @@ void sample_thread(
138
142
  if (type == SAMPLE_REGULAR) {
139
143
  sampling_buffer *record_buffer = buffer;
140
144
  int extra_frames_in_record_buffer = 0;
141
- sample_thread_internal(thread, buffer, recorder_instance, metric_values, labels, record_buffer, extra_frames_in_record_buffer);
145
+ sample_thread_internal(thread, buffer, recorder_instance, values, labels, record_buffer, extra_frames_in_record_buffer);
142
146
  return;
143
147
  }
144
148
 
@@ -162,7 +166,7 @@ void sample_thread(
162
166
  };
163
167
  sampling_buffer *record_buffer = buffer; // We pass in the original buffer as the record_buffer, but not as the regular buffer
164
168
  int extra_frames_in_record_buffer = 1;
165
- sample_thread_internal(thread, &thread_in_gc_buffer, recorder_instance, metric_values, labels, record_buffer, extra_frames_in_record_buffer);
169
+ sample_thread_internal(thread, &thread_in_gc_buffer, recorder_instance, values, labels, record_buffer, extra_frames_in_record_buffer);
166
170
  return;
167
171
  }
168
172
 
@@ -192,7 +196,7 @@ static void sample_thread_internal(
192
196
  VALUE thread,
193
197
  sampling_buffer* buffer,
194
198
  VALUE recorder_instance,
195
- ddog_Slice_I64 metric_values,
199
+ sample_values values,
196
200
  ddog_prof_Slice_Label labels,
197
201
  sampling_buffer *record_buffer,
198
202
  int extra_frames_in_record_buffer
@@ -210,7 +214,7 @@ static void sample_thread_internal(
210
214
  record_placeholder_stack_in_native_code(
211
215
  buffer,
212
216
  recorder_instance,
213
- metric_values,
217
+ values,
214
218
  labels,
215
219
  record_buffer,
216
220
  extra_frames_in_record_buffer
@@ -238,18 +242,7 @@ static void sample_thread_internal(
238
242
  filename = rb_profile_frame_path(buffer->stack_buffer[i]);
239
243
  line = buffer->lines_buffer[i];
240
244
  } else {
241
- // **IMPORTANT**: Be very careful when calling any `rb_profile_frame_...` API with a non-Ruby frame, as legacy
242
- // Rubies may assume that what's in a buffer will lead to a Ruby frame.
243
- //
244
- // In particular for Ruby 2.2 the buffer contains a Ruby string (see the notes on our custom
245
- // rb_profile_frames for Ruby 2.2) and CALLING **ANY** OF THOSE APIs ON IT WILL CAUSE INSTANT VM CRASHES
246
-
247
- #ifndef USE_LEGACY_RB_PROFILE_FRAMES // Modern Rubies
248
245
  name = ddtrace_rb_profile_frame_method_name(buffer->stack_buffer[i]);
249
- #else // Ruby < 2.3
250
- name = buffer->stack_buffer[i];
251
- #endif
252
-
253
246
  filename = NIL_P(last_ruby_frame) ? Qnil : rb_profile_frame_path(last_ruby_frame);
254
247
  line = last_ruby_line;
255
248
  }
@@ -278,11 +271,9 @@ static void sample_thread_internal(
278
271
 
279
272
  record_sample(
280
273
  recorder_instance,
281
- (ddog_prof_Sample) {
282
- .locations = (ddog_prof_Slice_Location) {.ptr = record_buffer->locations, .len = captured_frames + extra_frames_in_record_buffer},
283
- .values = metric_values,
284
- .labels = labels,
285
- }
274
+ (ddog_prof_Slice_Location) {.ptr = record_buffer->locations, .len = captured_frames + extra_frames_in_record_buffer},
275
+ values,
276
+ labels
286
277
  );
287
278
  }
288
279
 
@@ -330,7 +321,7 @@ static void maybe_add_placeholder_frames_omitted(VALUE thread, sampling_buffer*
330
321
  static void record_placeholder_stack_in_native_code(
331
322
  sampling_buffer* buffer,
332
323
  VALUE recorder_instance,
333
- ddog_Slice_I64 metric_values,
324
+ sample_values values,
334
325
  ddog_prof_Slice_Label labels,
335
326
  sampling_buffer *record_buffer,
336
327
  int extra_frames_in_record_buffer
@@ -344,11 +335,9 @@ static void record_placeholder_stack_in_native_code(
344
335
 
345
336
  record_sample(
346
337
  recorder_instance,
347
- (ddog_prof_Sample) {
348
- .locations = (ddog_prof_Slice_Location) {.ptr = record_buffer->locations, .len = 1 + extra_frames_in_record_buffer},
349
- .values = metric_values,
350
- .labels = labels,
351
- }
338
+ (ddog_prof_Slice_Location) {.ptr = record_buffer->locations, .len = 1 + extra_frames_in_record_buffer},
339
+ values,
340
+ labels
352
341
  );
353
342
  }
354
343