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
@@ -0,0 +1,14 @@
1
+ #pragma once
2
+
3
+ #include <ruby.h>
4
+
5
+ void thread_context_collector_sample(
6
+ VALUE self_instance,
7
+ long current_monotonic_wall_time_ns,
8
+ VALUE profiler_overhead_stack_thread
9
+ );
10
+ void thread_context_collector_sample_allocation(VALUE self_instance, unsigned int sample_weight);
11
+ VALUE thread_context_collector_sample_after_gc(VALUE self_instance);
12
+ void thread_context_collector_on_gc_start(VALUE self_instance);
13
+ void thread_context_collector_on_gc_finish(VALUE self_instance);
14
+ VALUE enforce_thread_context_collector_instance(VALUE object);
@@ -1,5 +1,3 @@
1
- # typed: ignore
2
-
3
1
  # rubocop:disable Style/StderrPuts
4
2
  # rubocop:disable Style/GlobalVars
5
3
 
@@ -28,7 +26,7 @@ def skip_building_extension!(reason)
28
26
  if fail_install_if_missing_extension
29
27
  require 'mkmf'
30
28
  Logging.message(
31
- ' [ddtrace] Failure cause: ' \
29
+ '[ddtrace] Failure cause: ' \
32
30
  "#{Datadog::Profiling::NativeExtensionHelpers::Supported.render_skipped_reason_file(**reason)}\n"
33
31
  )
34
32
  else
@@ -67,9 +65,9 @@ $stderr.puts(
67
65
  # that may fail on an environment not properly setup for building Ruby extensions.
68
66
  require 'mkmf'
69
67
 
70
- Logging.message(" [ddtrace] Using compiler:\n")
68
+ Logging.message("[ddtrace] Using compiler:\n")
71
69
  xsystem("#{CONFIG['CC']} -v")
72
- Logging.message(" [ddtrace] End of compiler information\n")
70
+ Logging.message("[ddtrace] End of compiler information\n")
73
71
 
74
72
  # mkmf on modern Rubies actually has an append_cflags that does something similar
75
73
  # (see https://github.com/ruby/ruby/pull/5760), but as usual we need a bit more boilerplate to deal with legacy Rubies
@@ -125,7 +123,7 @@ if RUBY_PLATFORM.include?('linux')
125
123
  # have_library 'pthread'
126
124
  # have_func 'pthread_getcpuclockid'
127
125
  # ```
128
- # but it broke the build on Windows and on older Ruby versions (2.2)
126
+ # but a) it broke the build on Windows, b) on older Ruby versions (2.2 and below) and c) It's slower to build
129
127
  # so instead we just assume that we have the function we need on Linux, and nowhere else
130
128
  $defs << '-DHAVE_PTHREAD_GETCPUCLOCKID'
131
129
  end
@@ -162,19 +160,10 @@ if RUBY_VERSION < '2.4'
162
160
  $defs << '-DUSE_LEGACY_RB_VM_FRAME_METHOD_ENTRY'
163
161
  end
164
162
 
165
- # For REALLY OLD Rubies...
166
- if RUBY_VERSION < '2.3'
167
- # ...there was no rb_time_timespec_new function
168
- $defs << '-DNO_RB_TIME_TIMESPEC_NEW'
169
- # ...the VM changed enough that we need an alternative legacy rb_profile_frames
170
- $defs << '-DUSE_LEGACY_RB_PROFILE_FRAMES'
171
- # ... you couldn't name threads
172
- $defs << '-DNO_THREAD_NAMES'
173
- end
174
-
175
163
  # If we got here, libdatadog is available and loaded
176
164
  ENV['PKG_CONFIG_PATH'] = "#{ENV['PKG_CONFIG_PATH']}:#{Libdatadog.pkgconfig_folder}"
177
- Logging.message(" [ddtrace] PKG_CONFIG_PATH set to #{ENV['PKG_CONFIG_PATH'].inspect}\n")
165
+ Logging.message("[ddtrace] PKG_CONFIG_PATH set to #{ENV['PKG_CONFIG_PATH'].inspect}\n")
166
+ $stderr.puts("Using libdatadog #{Libdatadog::VERSION} from #{Libdatadog.pkgconfig_folder}")
178
167
 
179
168
  unless pkg_config('datadog_profiling_with_rpath')
180
169
  skip_building_extension!(
@@ -197,7 +186,7 @@ end
197
186
  $LDFLAGS += \
198
187
  ' -Wl,-rpath,$$$\\\\{ORIGIN\\}/' \
199
188
  "#{Datadog::Profiling::NativeExtensionHelpers.libdatadog_folder_relative_to_native_lib_folder}"
200
- Logging.message(" [ddtrace] After pkg-config $LDFLAGS were set to: #{$LDFLAGS.inspect}\n")
189
+ Logging.message("[ddtrace] After pkg-config $LDFLAGS were set to: #{$LDFLAGS.inspect}\n")
201
190
 
202
191
  # Tag the native extension library with the Ruby version and Ruby platform.
203
192
  # This makes it easier for development (avoids "oops I forgot to rebuild when I switched my Ruby") and ensures that
@@ -21,7 +21,7 @@ static VALUE library_version_string = Qnil;
21
21
 
22
22
  struct call_exporter_without_gvl_arguments {
23
23
  ddog_prof_Exporter *exporter;
24
- ddog_prof_Exporter_Request *request;
24
+ ddog_prof_Exporter_Request_BuildResult *build_result;
25
25
  ddog_CancellationToken *cancel_token;
26
26
  ddog_prof_Exporter_SendResult result;
27
27
  bool send_ran;
@@ -83,7 +83,7 @@ static VALUE _native_validate_exporter(DDTRACE_UNUSED VALUE _self, VALUE exporte
83
83
 
84
84
  // We don't actually need the exporter for now -- we just wanted to validate that we could create it with the
85
85
  // settings we were given
86
- ddog_prof_Exporter_NewResult_drop(exporter_result);
86
+ ddog_prof_Exporter_drop(exporter_result.ok);
87
87
 
88
88
  return rb_ary_new_from_args(2, ok_symbol, Qnil);
89
89
  }
@@ -111,13 +111,9 @@ static ddog_prof_Exporter_NewResult create_exporter(VALUE exporter_configuration
111
111
  }
112
112
 
113
113
  static VALUE handle_exporter_failure(ddog_prof_Exporter_NewResult exporter_result) {
114
- if (exporter_result.tag == DDOG_PROF_EXPORTER_NEW_RESULT_OK) return Qnil;
115
-
116
- VALUE err_details = ruby_string_from_prof_vec_u8(exporter_result.err);
117
-
118
- ddog_prof_Exporter_NewResult_drop(exporter_result);
119
-
120
- return rb_ary_new_from_args(2, error_symbol, err_details);
114
+ return exporter_result.tag == DDOG_PROF_EXPORTER_NEW_RESULT_OK ?
115
+ Qnil :
116
+ rb_ary_new_from_args(2, error_symbol, get_error_details_and_drop(&exporter_result.err));
121
117
  }
122
118
 
123
119
  static ddog_Endpoint endpoint_from(VALUE exporter_configuration) {
@@ -173,14 +169,9 @@ static ddog_Vec_Tag convert_tags(VALUE tags_as_array) {
173
169
  ddog_Vec_Tag_push(&tags, char_slice_from_ruby_string(tag_name), char_slice_from_ruby_string(tag_value));
174
170
 
175
171
  if (push_result.tag == DDOG_VEC_TAG_PUSH_RESULT_ERR) {
176
- VALUE err_details = ruby_string_from_vec_u8(push_result.err);
177
- ddog_Vec_Tag_PushResult_drop(push_result);
178
-
179
172
  // libdatadog validates tags and may catch invalid tags that ddtrace didn't actually catch.
180
173
  // We warn users about such tags, and then just ignore them.
181
- safely_log_failure_to_process_tag(tags, err_details);
182
- } else {
183
- ddog_Vec_Tag_PushResult_drop(push_result);
174
+ safely_log_failure_to_process_tag(tags, get_error_details_and_drop(&push_result.err));
184
175
  }
185
176
  }
186
177
 
@@ -206,23 +197,28 @@ static void safely_log_failure_to_process_tag(ddog_Vec_Tag tags, VALUE err_detai
206
197
  // Note: This function handles a bunch of libdatadog dynamically-allocated objects, so it MUST not use any Ruby APIs
207
198
  // which can raise exceptions, otherwise the objects will be leaked.
208
199
  static VALUE perform_export(
209
- ddog_prof_Exporter_NewResult valid_exporter_result, // Must be called with a valid exporter result
200
+ ddog_prof_Exporter *exporter,
210
201
  ddog_Timespec start,
211
202
  ddog_Timespec finish,
212
203
  ddog_prof_Exporter_Slice_File slice_files,
213
204
  ddog_Vec_Tag *additional_tags,
214
205
  uint64_t timeout_milliseconds
215
206
  ) {
216
- ddog_prof_Exporter *exporter = valid_exporter_result.ok;
217
- ddog_CancellationToken *cancel_token = ddog_CancellationToken_new();
218
207
  ddog_prof_ProfiledEndpointsStats *endpoints_stats = NULL; // Not in use yet
219
- ddog_prof_Exporter_Request *request =
208
+ ddog_prof_Exporter_Request_BuildResult build_result =
220
209
  ddog_prof_Exporter_Request_build(exporter, start, finish, slice_files, additional_tags, endpoints_stats, timeout_milliseconds);
221
210
 
211
+ if (build_result.tag == DDOG_PROF_EXPORTER_REQUEST_BUILD_RESULT_ERR) {
212
+ ddog_prof_Exporter_drop(exporter);
213
+ return rb_ary_new_from_args(2, error_symbol, get_error_details_and_drop(&build_result.err));
214
+ }
215
+
216
+ ddog_CancellationToken *cancel_token = ddog_CancellationToken_new();
217
+
222
218
  // We'll release the Global VM Lock while we're calling send, so that the Ruby VM can continue to work while this
223
219
  // is pending
224
220
  struct call_exporter_without_gvl_arguments args =
225
- {.exporter = exporter, .request = request, .cancel_token = cancel_token, .send_ran = false};
221
+ {.exporter = exporter, .build_result = &build_result, .cancel_token = cancel_token, .send_ran = false};
226
222
 
227
223
  // We use rb_thread_call_without_gvl2 instead of rb_thread_call_without_gvl as the gvl2 variant never raises any
228
224
  // exceptions.
@@ -247,26 +243,23 @@ static VALUE perform_export(
247
243
 
248
244
  // Cleanup exporter and token, no longer needed
249
245
  ddog_CancellationToken_drop(cancel_token);
250
- ddog_prof_Exporter_NewResult_drop(valid_exporter_result);
246
+ ddog_prof_Exporter_drop(exporter);
251
247
 
252
248
  if (pending_exception) {
253
249
  // If we got here send did not run, so we need to explicitly dispose of the request
254
- ddog_prof_Exporter_Request_drop(request);
250
+ ddog_prof_Exporter_Request_drop(&build_result.ok);
255
251
 
256
252
  // Let Ruby propagate the exception. This will not return.
257
253
  rb_jump_tag(pending_exception);
258
254
  }
259
255
 
260
- ddog_prof_Exporter_SendResult result = args.result;
261
- bool success = result.tag == DDOG_PROF_EXPORTER_SEND_RESULT_HTTP_RESPONSE;
262
-
263
- VALUE ruby_status = success ? ok_symbol : error_symbol;
264
- VALUE ruby_result = success ? UINT2NUM(result.http_response.code) : ruby_string_from_prof_vec_u8(result.err);
256
+ // The request itself does not need to be freed as libdatadog takes ownership of it as part of sending.
265
257
 
266
- ddog_prof_Exporter_SendResult_drop(args.result);
267
- // The request itself does not need to be freed as libdatadog takes care of it as part of sending.
258
+ ddog_prof_Exporter_SendResult result = args.result;
268
259
 
269
- return rb_ary_new_from_args(2, ruby_status, ruby_result);
260
+ return result.tag == DDOG_PROF_EXPORTER_SEND_RESULT_HTTP_RESPONSE ?
261
+ rb_ary_new_from_args(2, ok_symbol, UINT2NUM(result.http_response.code)) :
262
+ rb_ary_new_from_args(2, error_symbol, get_error_details_and_drop(&result.err));
270
263
  }
271
264
 
272
265
  static VALUE _native_do_export(
@@ -326,13 +319,13 @@ static VALUE _native_do_export(
326
319
  VALUE failure_tuple = handle_exporter_failure(exporter_result);
327
320
  if (!NIL_P(failure_tuple)) return failure_tuple;
328
321
 
329
- return perform_export(exporter_result, start, finish, slice_files, null_additional_tags, timeout_milliseconds);
322
+ return perform_export(exporter_result.ok, start, finish, slice_files, null_additional_tags, timeout_milliseconds);
330
323
  }
331
324
 
332
325
  static void *call_exporter_without_gvl(void *call_args) {
333
326
  struct call_exporter_without_gvl_arguments *args = (struct call_exporter_without_gvl_arguments*) call_args;
334
327
 
335
- args->result = ddog_prof_Exporter_send(args->exporter, args->request, args->cancel_token);
328
+ args->result = ddog_prof_Exporter_send(args->exporter, &args->build_result->ok, args->cancel_token);
336
329
  args->send_ran = true;
337
330
 
338
331
  return NULL; // Unused
@@ -13,6 +13,13 @@ inline static VALUE ruby_string_from_vec_u8(ddog_Vec_U8 string) {
13
13
  return rb_str_new((char *) string.ptr, string.len);
14
14
  }
15
15
 
16
- inline static VALUE ruby_string_from_prof_vec_u8(ddog_prof_Vec_U8 string) {
17
- return rb_str_new((char *) string.ptr, string.len);
16
+ inline static VALUE ruby_string_from_error(const ddog_Error *error) {
17
+ ddog_CharSlice char_slice = ddog_Error_message(error);
18
+ return rb_str_new(char_slice.ptr, char_slice.len);
19
+ }
20
+
21
+ inline static VALUE get_error_details_and_drop(ddog_Error *error) {
22
+ VALUE result = ruby_string_from_error(error);
23
+ ddog_Error_drop(error);
24
+ return result;
18
25
  }
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # typed: ignore
4
-
5
3
  require 'rubygems'
6
4
  require 'pathname'
7
5
 
@@ -17,7 +15,7 @@ module Datadog
17
15
  # Older Rubies don't have the MJIT header, used by the JIT compiler, so we need to use a different approach
18
16
  CAN_USE_MJIT_HEADER = RUBY_VERSION >= '2.6'
19
17
 
20
- LIBDATADOG_VERSION = '~> 1.0.1.1.0'
18
+ LIBDATADOG_VERSION = '~> 2.0.0.1.0'
21
19
 
22
20
  def self.fail_install_if_missing_extension?
23
21
  ENV[ENV_FAIL_INSTALL_IF_MISSING_EXTENSION].to_s.strip.downcase == 'true'
@@ -87,8 +85,8 @@ module Datadog
87
85
  on_windows? ||
88
86
  on_macos? ||
89
87
  on_unknown_os? ||
90
- not_on_amd64_or_arm64? ||
91
- on_ruby_2_1? ||
88
+ on_unsupported_cpu_arch? ||
89
+ on_unsupported_ruby_version? ||
92
90
  expected_to_use_mjit_but_mjit_is_disabled? ||
93
91
  libdatadog_not_available? ||
94
92
  libdatadog_not_usable?
@@ -174,6 +172,8 @@ module Datadog
174
172
  'the `pkg-config` package on Homebrew and Debian/Ubuntu-based Linux;',
175
173
  'the `pkgconf` package on Arch and Alpine-based Linux;',
176
174
  'the `pkgconf-pkg-config` package on Fedora/Red Hat-based Linux.',
175
+ '(Tip: When fixing this, ensure `pkg-config` is installed **before**',
176
+ 'running `bundle install`, and remember to clear any installed gems cache).',
177
177
  suggested: CONTACT_SUPPORT,
178
178
  )
179
179
 
@@ -251,7 +251,7 @@ module Datadog
251
251
  unknown_os_not_supported unless RUBY_PLATFORM.include?('darwin') || RUBY_PLATFORM.include?('linux')
252
252
  end
253
253
 
254
- private_class_method def self.not_on_amd64_or_arm64?
254
+ private_class_method def self.on_unsupported_cpu_arch?
255
255
  architecture_not_supported = explain_issue(
256
256
  'your CPU architecture is not supported by the Datadog Continuous Profiler.',
257
257
  suggested: GET_IN_TOUCH,
@@ -260,13 +260,13 @@ module Datadog
260
260
  architecture_not_supported unless RUBY_PLATFORM.start_with?('x86_64', 'aarch64', 'arm64')
261
261
  end
262
262
 
263
- private_class_method def self.on_ruby_2_1?
263
+ private_class_method def self.on_unsupported_ruby_version?
264
264
  ruby_version_not_supported = explain_issue(
265
- 'the profiler only supports Ruby 2.2 or newer.',
265
+ 'the profiler only supports Ruby 2.3 or newer.',
266
266
  suggested: UPGRADE_RUBY,
267
267
  )
268
268
 
269
- ruby_version_not_supported if RUBY_VERSION.start_with?('2.1.')
269
+ ruby_version_not_supported if RUBY_VERSION.start_with?('2.1.', '2.2.')
270
270
  end
271
271
 
272
272
  # On some Rubies, we require the mjit header to be present. If Ruby was installed without MJIT support, we also skip
@@ -204,8 +204,7 @@ ptrdiff_t stack_depth_for(VALUE thread) {
204
204
  #endif
205
205
 
206
206
  // Tries to match rb_thread_list() but that method isn't accessible to extensions
207
- VALUE ddtrace_thread_list(void) {
208
- VALUE result = rb_ary_new();
207
+ void ddtrace_thread_list(VALUE result_array) {
209
208
  rb_thread_t *thread = NULL;
210
209
 
211
210
  // Ruby 3 Safety: Our implementation is inspired by `rb_ractor_thread_list` BUT that method wraps the operations below
@@ -234,32 +233,20 @@ VALUE ddtrace_thread_list(void) {
234
233
  case THREAD_RUNNABLE:
235
234
  case THREAD_STOPPED:
236
235
  case THREAD_STOPPED_FOREVER:
237
- rb_ary_push(result, thread->self);
236
+ rb_ary_push(result_array, thread->self);
238
237
  default:
239
238
  break;
240
239
  }
241
240
  }
242
-
243
- return result;
244
241
  }
245
242
 
246
243
  bool is_thread_alive(VALUE thread) {
247
244
  return thread_struct_from_object(thread)->status != THREAD_KILLED;
248
245
  }
249
246
 
250
- // `thread` gets used on all Rubies except 2.2
251
- // To avoid getting false "unused argument" warnings in setups where it's not used, we need to do this weird dance
252
- // with diagnostic stuff. See https://nelkinda.com/blog/suppress-warnings-in-gcc-and-clang/#d11e364 for details.
253
- #pragma GCC diagnostic push
254
- #pragma GCC diagnostic ignored "-Wunused-parameter"
255
247
  VALUE thread_name_for(VALUE thread) {
256
- #ifdef NO_THREAD_NAMES
257
- return Qnil;
258
- #else
259
- return thread_struct_from_object(thread)->name;
260
- #endif
248
+ return thread_struct_from_object(thread)->name;
261
249
  }
262
- #pragma GCC diagnostic pop
263
250
 
264
251
  // -----------------------------------------------------------------------------
265
252
  // The sources below are modified versions of code extracted from the Ruby project.
@@ -290,8 +277,6 @@ VALUE thread_name_for(VALUE thread) {
290
277
  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
291
278
  // SUCH DAMAGE.
292
279
 
293
- #ifndef USE_LEGACY_RB_PROFILE_FRAMES // Modern Rubies
294
-
295
280
  // Taken from upstream vm_core.h at commit 5f10bd634fb6ae8f74a4ea730176233b0ca96954 (March 2022, Ruby 3.2 trunk)
296
281
  // Copyright (C) 2004-2007 Koichi Sasada
297
282
  // to support our custom rb_profile_frames (see below)
@@ -392,9 +377,6 @@ calc_lineno(const rb_iseq_t *iseq, const VALUE *pc)
392
377
  // was called from.
393
378
  // * Imported fix from https://github.com/ruby/ruby/pull/7116 to avoid sampling threads that are still being created
394
379
  //
395
- // **IMPORTANT: WHEN CHANGING THIS FUNCTION, CONSIDER IF THE SAME CHANGE ALSO NEEDS TO BE MADE TO THE VARIANT FOR
396
- // RUBY 2.2 AND BELOW WHICH IS ALSO PRESENT ON THIS FILE**
397
- //
398
380
  // What is rb_profile_frames?
399
381
  // `rb_profile_frames` is a Ruby VM debug API added for use by profilers for sampling the stack trace of a Ruby thread.
400
382
  // Its main other user is the stackprof profiler: https://github.com/tmm1/stackprof .
@@ -437,10 +419,6 @@ int ddtrace_rb_profile_frames(VALUE thread, int start, int limit, VALUE *buff, i
437
419
  const rb_control_frame_t *cfp = ec->cfp, *end_cfp = RUBY_VM_END_CONTROL_FRAME(ec);
438
420
  const rb_callable_method_entry_t *cme;
439
421
 
440
- // This should not happen for ddtrace (it can only happen when a thread is still being created), but I've imported
441
- // it from https://github.com/ruby/ruby/pull/7116 in a "just in case" kind of mindset.
442
- if (cfp == NULL) return 0;
443
-
444
422
  // Avoid sampling dead threads
445
423
  if (th->status == THREAD_KILLED) return 0;
446
424
 
@@ -448,6 +426,10 @@ int ddtrace_rb_profile_frames(VALUE thread, int start, int limit, VALUE *buff, i
448
426
  // also (not entirely sure) happen on dead threads
449
427
  if (end_cfp == NULL) return PLACEHOLDER_STACK_IN_NATIVE_CODE;
450
428
 
429
+ // This should not happen for ddtrace (it can only happen when a thread is still being created), but I've imported
430
+ // it from https://github.com/ruby/ruby/pull/7116 in a "just in case" kind of mindset.
431
+ if (cfp == NULL) return 0;
432
+
451
433
  // Fix: Skip dummy frame that shows up in main thread.
452
434
  //
453
435
  // According to a comment in `backtrace_each` (`vm_backtrace.c`), there's two dummy frames that we should ignore
@@ -722,104 +704,8 @@ check_method_entry(VALUE obj, int can_be_svar)
722
704
  return check_method_entry(ep[-1], TRUE);
723
705
  }
724
706
  #endif // USE_LEGACY_RB_VM_FRAME_METHOD_ENTRY
725
-
726
707
  #endif // RUBY_MJIT_HEADER
727
708
 
728
- #else // USE_LEGACY_RB_PROFILE_FRAMES, Ruby < 2.3
729
-
730
- // Taken from upstream vm_backtrace.c at commit bbda1a027475bf7ce5e1a9583a7b55d0be71c8fe (March 2018, ruby_2_2 branch)
731
- // Copyright (C) 1993-2012 Yukihiro Matsumoto
732
- // to support our custom rb_profile_frames (see below)
733
- // Modifications: None
734
- inline static int
735
- calc_lineno(const rb_iseq_t *iseq, const VALUE *pc)
736
- {
737
- return rb_iseq_line_no(iseq, pc - iseq->iseq_encoded);
738
- }
739
-
740
- // Taken from upstream vm_backtrace.c at commit bbda1a027475bf7ce5e1a9583a7b55d0be71c8fe (March 2018, ruby_2_2 branch)
741
- // Copyright (C) 1993-2012 Yukihiro Matsumoto
742
- // Modifications:
743
- // * Renamed rb_profile_frames => ddtrace_rb_profile_frames
744
- // * Add thread argument
745
- // * Add is_ruby_frame argument
746
- // * Removed `if (lines)` tests -- require/assume that like `buff`, `lines` is always specified
747
- // * Added support for getting the name from native methods by getting inspiration from `backtrace_each` in
748
- // `vm_backtrace.c`. Note that unlike the `rb_profile_frames` for modern Rubies, this version actually returns the
749
- // method name as as `VALUE` containing a Ruby string in the `buff`.
750
- // * Skip dummy frame that shows up in main thread
751
- // * Add `end_cfp == NULL` and `end_cfp <= cfp` safety checks. These are used in a bunch of places in
752
- // `vm_backtrace.c` (`backtrace_each`, `backtrace_size`, `rb_ec_partial_backtrace_object`) but are conspicuously
753
- // absent from `rb_profile_frames`. Oversight?
754
- // * Check thread status and do not sample if thread has been killed.
755
- // * Imported fix from https://github.com/ruby/ruby/pull/7116 to avoid sampling threads that are still being created
756
- //
757
- // The `rb_profile_frames` function changed quite a bit between Ruby 2.2 and 2.3. Since the change was quite complex
758
- // I opted not to try to extend support to Ruby 2.2 using the same custom function, and instead I started
759
- // anew from the Ruby 2.2 version of the function, applying some of the same fixes that we have for the modern version.
760
- int ddtrace_rb_profile_frames(VALUE thread, int start, int limit, VALUE *buff, int *lines, bool* is_ruby_frame)
761
- {
762
- // **IMPORTANT: THIS IS A CUSTOM RB_PROFILE_FRAMES JUST FOR RUBY 2.2;
763
- // SEE ABOVE FOR THE FUNCTION THAT GETS USED FOR MODERN RUBIES**
764
-
765
- int i;
766
- rb_thread_t *th = thread_struct_from_object(thread);
767
- rb_control_frame_t *cfp = th->cfp, *end_cfp = RUBY_VM_END_CONTROL_FRAME(th);
768
-
769
- // This should not happen for ddtrace (it can only happen when a thread is still being created), but I've imported
770
- // it from https://github.com/ruby/ruby/pull/7116 in a "just in case" kind of mindset.
771
- if (cfp == NULL) return 0;
772
-
773
- // Avoid sampling dead threads
774
- if (th->status == THREAD_KILLED) return 0;
775
-
776
- // `vm_backtrace.c` includes this check in several methods. This happens on newly-created threads, and may
777
- // also (not entirely sure) happen on dead threads
778
- if (end_cfp == NULL) return PLACEHOLDER_STACK_IN_NATIVE_CODE;
779
-
780
- // Fix: Skip dummy frame that shows up in main thread.
781
- //
782
- // According to a comment in `backtrace_each` (`vm_backtrace.c`), there's two dummy frames that we should ignore
783
- // at the base of every thread's stack.
784
- // (see https://github.com/ruby/ruby/blob/4bd38e8120f2fdfdd47a34211720e048502377f1/vm_backtrace.c#L890-L914 )
785
- //
786
- // One is being pointed to by `RUBY_VM_END_CONTROL_FRAME(ec)`, and so we need to advance to the next one, and
787
- // reaching it will be used as a condition to break out of the loop below.
788
- //
789
- // Note that in `backtrace_each` there's two calls to `RUBY_VM_NEXT_CONTROL_FRAME`, but the loop bounds there
790
- // are computed in a different way, so the two calls really are equivalent to one here.
791
- end_cfp = RUBY_VM_NEXT_CONTROL_FRAME(end_cfp);
792
-
793
- // See comment on `record_placeholder_stack_in_native_code` for a full explanation of what this means (and why we don't just return 0)
794
- if (end_cfp <= cfp) return PLACEHOLDER_STACK_IN_NATIVE_CODE;
795
-
796
- for (i=0; i<limit && cfp != end_cfp;) {
797
- if (cfp->iseq && cfp->pc) { /* should be NORMAL_ISEQ */
798
- if (start > 0) {
799
- start--;
800
- continue;
801
- }
802
-
803
- /* record frame info */
804
- buff[i] = cfp->iseq->self;
805
- lines[i] = calc_lineno(cfp->iseq, cfp->pc);
806
- is_ruby_frame[i] = true;
807
- i++;
808
- } else if (RUBYVM_CFUNC_FRAME_P(cfp)) {
809
- ID mid = cfp->me->def ? cfp->me->def->original_id : cfp->me->called_id;
810
- buff[i] = rb_id2str(mid);
811
- lines[i] = 0;
812
- is_ruby_frame[i] = false;
813
- i++;
814
- }
815
- cfp = RUBY_VM_PREVIOUS_CONTROL_FRAME(cfp);
816
- }
817
-
818
- return i;
819
- }
820
-
821
- #endif // USE_LEGACY_RB_PROFILE_FRAMES
822
-
823
709
  #ifndef NO_RACTORS
824
710
  // This API and definition are exported as a public symbol by the VM BUT the function header is not defined in any public header, so we
825
711
  // repeat it here to be able to use in our code.
@@ -23,7 +23,7 @@ bool is_current_thread_holding_the_gvl(void);
23
23
  current_gvl_owner gvl_owner(void);
24
24
  uint64_t native_thread_id_for(VALUE thread);
25
25
  ptrdiff_t stack_depth_for(VALUE thread);
26
- VALUE ddtrace_thread_list(void);
26
+ void ddtrace_thread_list(VALUE result_array);
27
27
  bool is_thread_alive(VALUE thread);
28
28
  VALUE thread_name_for(VALUE thread);
29
29
 
@@ -10,11 +10,11 @@
10
10
  #include "time_helpers.h"
11
11
 
12
12
  // Each class/module here is implemented in their separate file
13
- void collectors_cpu_and_wall_time_init(VALUE profiling_module);
14
13
  void collectors_cpu_and_wall_time_worker_init(VALUE profiling_module);
15
14
  void collectors_dynamic_sampling_rate_init(VALUE profiling_module);
16
15
  void collectors_idle_sampling_helper_init(VALUE profiling_module);
17
16
  void collectors_stack_init(VALUE profiling_module);
17
+ void collectors_thread_context_init(VALUE profiling_module);
18
18
  void http_transport_init(VALUE profiling_module);
19
19
  void stack_recorder_init(VALUE profiling_module);
20
20
 
@@ -43,11 +43,11 @@ void DDTRACE_EXPORT Init_ddtrace_profiling_native_extension(void) {
43
43
 
44
44
  rb_define_singleton_method(native_extension_module, "clock_id_for", clock_id_for, 1); // from clock_id.h
45
45
 
46
- collectors_cpu_and_wall_time_init(profiling_module);
47
46
  collectors_cpu_and_wall_time_worker_init(profiling_module);
48
47
  collectors_dynamic_sampling_rate_init(profiling_module);
49
48
  collectors_idle_sampling_helper_init(profiling_module);
50
49
  collectors_stack_init(profiling_module);
50
+ collectors_thread_context_init(profiling_module);
51
51
  http_transport_init(profiling_module);
52
52
  stack_recorder_init(profiling_module);
53
53
 
@@ -58,7 +58,7 @@ void grab_gvl_and_raise(VALUE exception_class, const char *format_string, ...) {
58
58
 
59
59
  rb_thread_call_with_gvl(trigger_raise, &args);
60
60
 
61
- rb_bug("[DDTRACE] Unexpected: Reached the end of grab_gvl_and_raise while raising '%s'\n", args.exception_message);
61
+ rb_bug("[ddtrace] Unexpected: Reached the end of grab_gvl_and_raise while raising '%s'\n", args.exception_message);
62
62
  }
63
63
 
64
64
  struct syserr_raise_arguments {
@@ -91,7 +91,7 @@ void grab_gvl_and_raise_syserr(int syserr_errno, const char *format_string, ...)
91
91
 
92
92
  rb_thread_call_with_gvl(trigger_syserr_raise, &args);
93
93
 
94
- rb_bug("[DDTRACE] Unexpected: Reached the end of grab_gvl_and_raise_syserr while raising '%s'\n", args.exception_message);
94
+ rb_bug("[ddtrace] Unexpected: Reached the end of grab_gvl_and_raise_syserr while raising '%s'\n", args.exception_message);
95
95
  }
96
96
 
97
97
  void raise_syserr(
@@ -12,7 +12,7 @@ static inline VALUE process_pending_interruptions(DDTRACE_UNUSED VALUE _) {
12
12
  return Qnil;
13
13
  }
14
14
 
15
- // RB_UNLIKELY is not supported on Ruby 2.2 and 2.3
15
+ // RB_UNLIKELY is not supported on Ruby 2.3
16
16
  #ifndef RB_UNLIKELY
17
17
  #define RB_UNLIKELY(x) x
18
18
  #endif