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
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # typed: false
4
-
5
3
  require 'set'
6
4
  require 'json'
7
5
 
@@ -1,10 +1,8 @@
1
- # typed: false
2
-
3
1
  module Datadog
4
2
  module Profiling
5
3
  module Collectors
6
- # Used to trigger the periodic execution of Collectors::CpuAndWallTime, which implements all of the sampling logic
7
- # itself; this class only implements the "doing it periodically" part.
4
+ # Used to trigger the periodic execution of Collectors::ThreadState, which implements all of the sampling logic
5
+ # itself; this class only implements the "when to do it" part.
8
6
  # Almost all of this class is implemented as native code.
9
7
  #
10
8
  # Methods prefixed with _native_ are implemented in `collectors_cpu_and_wall_time_worker.c`
@@ -20,10 +18,17 @@ module Datadog
20
18
  max_frames:,
21
19
  tracer:,
22
20
  gc_profiling_enabled:,
23
- cpu_and_wall_time_collector: CpuAndWallTime.new(recorder: recorder, max_frames: max_frames, tracer: tracer),
21
+ allocation_counting_enabled:,
22
+ thread_context_collector: ThreadContext.new(recorder: recorder, max_frames: max_frames, tracer: tracer),
24
23
  idle_sampling_helper: IdleSamplingHelper.new
25
24
  )
26
- self.class._native_initialize(self, cpu_and_wall_time_collector, gc_profiling_enabled, idle_sampling_helper)
25
+ self.class._native_initialize(
26
+ self,
27
+ thread_context_collector,
28
+ gc_profiling_enabled,
29
+ idle_sampling_helper,
30
+ allocation_counting_enabled
31
+ )
27
32
  @worker_thread = nil
28
33
  @failure_exception = nil
29
34
  @start_stop_mutex = Mutex.new
@@ -40,7 +45,7 @@ module Datadog
40
45
 
41
46
  @worker_thread = Thread.new do
42
47
  begin
43
- Thread.current.name = self.class.name unless Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.3')
48
+ Thread.current.name = self.class.name
44
49
 
45
50
  self.class._native_sampling_loop(self)
46
51
 
@@ -1,5 +1,3 @@
1
- # typed: false
2
-
3
1
  module Datadog
4
2
  module Profiling
5
3
  module Collectors
@@ -1,5 +1,3 @@
1
- # typed: false
2
-
3
1
  module Datadog
4
2
  module Profiling
5
3
  module Collectors
@@ -31,7 +29,7 @@ module Datadog
31
29
 
32
30
  @worker_thread = Thread.new do
33
31
  begin
34
- Thread.current.name = self.class.name unless Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.3')
32
+ Thread.current.name = self.class.name
35
33
 
36
34
  self.class._native_idle_sampling_loop(self)
37
35
 
@@ -1,5 +1,3 @@
1
- # typed: true
2
-
3
1
  require_relative '../../core/utils/only_once'
4
2
  require_relative '../../core/utils/time'
5
3
  require_relative '../../core/worker'
@@ -75,9 +73,7 @@ module Datadog
75
73
  # Cache this buffer, since it's pretty expensive to keep accessing it
76
74
  @stack_sample_event_recorder = recorder[Events::StackSample]
77
75
  # See below for details on why this is needed
78
- @needs_process_waiter_workaround =
79
- Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.3') &&
80
- Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.7')
76
+ @needs_process_waiter_workaround = Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.7')
81
77
  end
82
78
 
83
79
  def start
@@ -1,5 +1,3 @@
1
- # typed: false
2
-
3
1
  module Datadog
4
2
  module Profiling
5
3
  module Collectors
@@ -1,16 +1,19 @@
1
- # typed: false
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Datadog
4
4
  module Profiling
5
5
  module Collectors
6
- # Used to periodically sample threads, recording elapsed CPU-time and Wall-time between samples.
7
- # Triggering of this component (e.g. deciding when to take a sample) is implemented in
6
+ # Used to trigger sampling of threads, based on external "events", such as:
7
+ # * periodic timer for cpu-time and wall-time
8
+ # * VM garbage collection events
9
+ # * VM object allocation events
10
+ # Triggering of this component (e.g. watching for the above "events") is implemented by
8
11
  # Collectors::CpuAndWallTimeWorker.
9
12
  # The stack collection itself is handled using the Datadog::Profiling::Collectors::Stack.
10
13
  # Almost all of this class is implemented as native code.
11
14
  #
12
- # Methods prefixed with _native_ are implemented in `collectors_cpu_and_wall_time.c`
13
- class CpuAndWallTime
15
+ # Methods prefixed with _native_ are implemented in `collectors_thread_context.c`
16
+ class ThreadContext
14
17
  def initialize(recorder:, max_frames:, tracer:)
15
18
  tracer_context_key = safely_extract_context_key_from(tracer)
16
19
  self.class._native_initialize(self, recorder, max_frames, tracer_context_key)
@@ -0,0 +1,161 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Datadog
4
+ module Profiling
5
+ # Profiling component
6
+ module Component
7
+ def build_profiler(settings, agent_settings, tracer)
8
+ return unless settings.profiling.enabled
9
+
10
+ # Workaround for weird dependency direction: the Core::Configuration::Components class currently has a
11
+ # dependency on individual products, in this case the Profiler.
12
+ # (Note "currently": in the future we want to change this so core classes don't depend on specific products)
13
+ #
14
+ # If the current file included a `require 'datadog/profiler'` at its beginning, we would generate circular
15
+ # requires when used from profiling:
16
+ #
17
+ # datadog/profiling
18
+ # └─requires─> datadog/core
19
+ # └─requires─> datadog/core/configuration/components
20
+ # └─requires─> datadog/profiling # Loop!
21
+ #
22
+ # ...thus in #1998 we removed such a require.
23
+ #
24
+ # On the other hand, if datadog/core is loaded by a different product and no general `require 'ddtrace'` is
25
+ # done, then profiling may not be loaded, and thus to avoid this issue we do a require here (which is a
26
+ # no-op if profiling is already loaded).
27
+ require_relative '../profiling'
28
+ return unless Profiling.supported?
29
+
30
+ unless defined?(Profiling::Tasks::Setup)
31
+ # In #1545 a user reported a NameError due to this constant being uninitialized
32
+ # I've documented my suspicion on why that happened in
33
+ # https://github.com/DataDog/dd-trace-rb/issues/1545#issuecomment-856049025
34
+ #
35
+ # > Thanks for the info! It seems to feed into my theory: there's two moments in the code where we check if
36
+ # > profiler is "supported": 1) when loading ddtrace (inside preload) and 2) when starting the profile
37
+ # > after Datadog.configure gets run.
38
+ # > The problem is that the code assumes that both checks 1) and 2) will always reach the same conclusion:
39
+ # > either profiler is supported, or profiler is not supported.
40
+ # > In the problematic case, it looks like in your case check 1 decides that profiler is not
41
+ # > supported => doesn't load it, and then check 2 decides that it is => assumes it is loaded and tries to
42
+ # > start it.
43
+ #
44
+ # I was never able to validate if this was the issue or why exactly .supported? would change its mind BUT
45
+ # just in case it happens again, I've left this check which avoids breaking the user's application AND
46
+ # would instead direct them to report it to us instead, so that we can investigate what's wrong.
47
+ #
48
+ # TODO: As of June 2021, most checks in .supported? are related to the google-protobuf gem; so it's
49
+ # very likely that it was the origin of the issue we saw. Thus, if, as planned we end up moving away from
50
+ # protobuf OR enough time has passed and no users saw the issue again, we can remove this check altogether.
51
+ Datadog.logger.error(
52
+ 'Profiling was marked as supported and enabled, but setup task was not loaded properly. ' \
53
+ 'Please report this at https://github.com/DataDog/dd-trace-rb/blob/master/CONTRIBUTING.md#found-a-bug'
54
+ )
55
+
56
+ return
57
+ end
58
+
59
+ # Load extensions needed to support some of the Profiling features
60
+ Profiling::Tasks::Setup.new.run
61
+
62
+ # NOTE: Please update the Initialization section of ProfilingDevelopment.md with any changes to this method
63
+
64
+ if settings.profiling.advanced.force_enable_new_profiler
65
+ print_new_profiler_warnings
66
+
67
+ recorder = Datadog::Profiling::StackRecorder.new(
68
+ cpu_time_enabled: RUBY_PLATFORM.include?('linux'), # Only supported on Linux currently
69
+ alloc_samples_enabled: false, # Always disabled for now -- work in progress
70
+ )
71
+ collector = Datadog::Profiling::Collectors::CpuAndWallTimeWorker.new(
72
+ recorder: recorder,
73
+ max_frames: settings.profiling.advanced.max_frames,
74
+ tracer: tracer,
75
+ gc_profiling_enabled: should_enable_gc_profiling?(settings),
76
+ allocation_counting_enabled: settings.profiling.advanced.allocation_counting_enabled,
77
+ )
78
+ else
79
+ trace_identifiers_helper = Profiling::TraceIdentifiers::Helper.new(
80
+ tracer: tracer,
81
+ endpoint_collection_enabled: settings.profiling.advanced.endpoint.collection.enabled
82
+ )
83
+
84
+ recorder = build_profiler_old_recorder(settings)
85
+ collector = build_profiler_oldstack_collector(settings, recorder, trace_identifiers_helper)
86
+ end
87
+
88
+ exporter = build_profiler_exporter(settings, recorder)
89
+ transport = build_profiler_transport(settings, agent_settings)
90
+ scheduler = Profiling::Scheduler.new(exporter: exporter, transport: transport)
91
+
92
+ Profiling::Profiler.new([collector], scheduler)
93
+ end
94
+
95
+ private
96
+
97
+ def build_profiler_old_recorder(settings)
98
+ Profiling::OldRecorder.new([Profiling::Events::StackSample], settings.profiling.advanced.max_events)
99
+ end
100
+
101
+ def build_profiler_exporter(settings, recorder)
102
+ code_provenance_collector =
103
+ (Profiling::Collectors::CodeProvenance.new if settings.profiling.advanced.code_provenance_enabled)
104
+
105
+ Profiling::Exporter.new(pprof_recorder: recorder, code_provenance_collector: code_provenance_collector)
106
+ end
107
+
108
+ def build_profiler_oldstack_collector(settings, old_recorder, trace_identifiers_helper)
109
+ Profiling::Collectors::OldStack.new(
110
+ old_recorder,
111
+ trace_identifiers_helper: trace_identifiers_helper,
112
+ max_frames: settings.profiling.advanced.max_frames
113
+ )
114
+ end
115
+
116
+ def build_profiler_transport(settings, agent_settings)
117
+ settings.profiling.exporter.transport ||
118
+ Profiling::HttpTransport.new(
119
+ agent_settings: agent_settings,
120
+ site: settings.site,
121
+ api_key: settings.api_key,
122
+ upload_timeout_seconds: settings.profiling.upload.timeout_seconds,
123
+ )
124
+ end
125
+
126
+ def should_enable_gc_profiling?(settings)
127
+ # See comments on the setting definition for more context on why it exists.
128
+ if settings.profiling.advanced.force_enable_gc_profiling
129
+ if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('3')
130
+ Datadog.logger.debug(
131
+ 'Profiling time/resources spent in Garbage Collection force enabled. Do not use Ractors in combination ' \
132
+ 'with this option as profiles will be incomplete.'
133
+ )
134
+ end
135
+
136
+ true
137
+ else
138
+ false
139
+ end
140
+ end
141
+
142
+ def print_new_profiler_warnings
143
+ if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.6')
144
+ Datadog.logger.warn(
145
+ 'New Ruby profiler has been force-enabled. This is a beta feature. Please report any issues ' \
146
+ 'you run into to Datadog support or via <https://github.com/datadog/dd-trace-rb/issues/new>!'
147
+ )
148
+ else
149
+ # For more details on the issue, see the "BIG Issue" comment on `gvl_owner` function in
150
+ # `private_vm_api_access.c`.
151
+ Datadog.logger.warn(
152
+ 'New Ruby profiler has been force-enabled on a legacy Ruby version (< 2.6). This is not recommended in ' \
153
+ 'production environments, as due to limitations in Ruby APIs, we suspect it may lead to crashes in very ' \
154
+ 'rare situations. Please report any issues you run into to Datadog support or ' \
155
+ 'via <https://github.com/datadog/dd-trace-rb/issues/new>!'
156
+ )
157
+ end
158
+ end
159
+ end
160
+ end
161
+ end
@@ -1,5 +1,3 @@
1
- # typed: true
2
-
3
1
  require 'time'
4
2
 
5
3
  require_relative '../pprof/template'
@@ -1,5 +1,3 @@
1
- # typed: true
2
-
3
1
  module Datadog
4
2
  module Profiling
5
3
  # Describes a sample of some data obtained from the runtime.
@@ -1,5 +1,3 @@
1
- # typed: true
2
-
3
1
  require_relative '../event'
4
2
 
5
3
  module Datadog
@@ -1,5 +1,3 @@
1
- # typed: true
2
-
3
1
  require_relative 'ext'
4
2
  require_relative 'tag_builder'
5
3
 
@@ -1,5 +1,3 @@
1
- # typed: false
2
-
3
1
  module Datadog
4
2
  module Profiling
5
3
  module Ext
@@ -1,5 +1,3 @@
1
- # typed: true
2
-
3
1
  module Datadog
4
2
  module Profiling
5
3
  module Ext
@@ -1,5 +1,3 @@
1
- # typed: false
2
-
3
1
  module Datadog
4
2
  module Profiling
5
3
  # Represents a collection of events of a specific type being flushed.
@@ -1,5 +1,3 @@
1
- # typed: false
2
-
3
1
  module Datadog
4
2
  module Profiling
5
3
  # Used to report profiling data to Datadog.
@@ -1,5 +1,3 @@
1
- # typed: ignore
2
-
3
1
  # This file is used to load the profiling native extension. It works in two steps:
4
2
  #
5
3
  # 1. Load the ddtrace_profiling_loader extension. This extension will be used to load the actual extension, but in
@@ -1,5 +1,3 @@
1
- # typed: true
2
-
3
1
  module Datadog
4
2
  module Profiling
5
3
  # This module contains classes and methods which are implemented using native code in the
@@ -1,5 +1,3 @@
1
- # typed: true
2
-
3
1
  require_relative 'buffer'
4
2
  require_relative 'encoding/profile'
5
3
 
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # typed: true
4
-
5
3
  require_relative '../flush'
6
4
  require_relative 'message_set'
7
5
  require_relative 'string_table'
@@ -1,5 +1,3 @@
1
- # typed: true
2
-
3
1
  require_relative '../ext'
4
2
 
5
3
  module Datadog
@@ -1,5 +1,3 @@
1
- # typed: true
2
-
3
1
  require_relative '../../core/utils/object_set'
4
2
 
5
3
  module Datadog
@@ -1,5 +1,3 @@
1
- # typed: true
2
-
3
1
  module Datadog
4
2
  module Profiling
5
3
  module Pprof
@@ -1,5 +1,3 @@
1
- # typed: false
2
-
3
1
  # Generated by the protocol buffer compiler. DO NOT EDIT!
4
2
  # source: lib/datadog/profiling/pprof/pprof.proto
5
3
 
@@ -1,5 +1,3 @@
1
- # typed: true
2
-
3
1
  require_relative '../ext'
4
2
  require_relative '../events/stack'
5
3
  require_relative 'builder'
@@ -1,5 +1,3 @@
1
- # typed: strict
2
-
3
1
  require_relative '../../core/utils/string_table'
4
2
 
5
3
  module Datadog
@@ -1,5 +1,3 @@
1
- # typed: false
2
-
3
1
  require_relative 'payload'
4
2
  require_relative 'message_set'
5
3
  require_relative 'builder'
@@ -1,5 +1,3 @@
1
- # typed: strict
2
-
3
1
  require_relative '../../ddtrace'
4
2
 
5
3
  Datadog::Profiling.start_if_enabled
@@ -1,5 +1,3 @@
1
- # typed: true
2
-
3
1
  module Datadog
4
2
  module Profiling
5
3
  # Profiling entry point, which coordinates collectors and a scheduler
@@ -1,5 +1,3 @@
1
- # typed: true
2
-
3
1
  require_relative '../core/utils/time'
4
2
 
5
3
  require_relative '../core/worker'
@@ -1,12 +1,10 @@
1
- # typed: false
2
-
3
1
  module Datadog
4
2
  module Profiling
5
3
  # Stores stack samples in a native libdatadog data structure and expose Ruby-level serialization APIs
6
4
  # Note that `record_sample` is only accessible from native code.
7
5
  # Methods prefixed with _native_ are implemented in `stack_recorder.c`
8
6
  class StackRecorder
9
- def initialize
7
+ def initialize(cpu_time_enabled:, alloc_samples_enabled:)
10
8
  # This mutex works in addition to the fancy C-level mutexes we have in the native side (see the docs there).
11
9
  # It prevents multiple Ruby threads calling serialize at the same time -- something like
12
10
  # `10.times { Thread.new { stack_recorder.serialize } }`.
@@ -14,6 +12,8 @@ module Datadog
14
12
  # C-level mutexes (that there is a single serializer thread), we add it here as an extra safeguard against it
15
13
  # accidentally happening.
16
14
  @no_concurrent_synchronize_mutex = Mutex.new
15
+
16
+ self.class._native_initialize(self, cpu_time_enabled, alloc_samples_enabled)
17
17
  end
18
18
 
19
19
  def serialize
@@ -66,11 +66,6 @@ module Datadog
66
66
  end
67
67
  end
68
68
 
69
- # Used only for Ruby 2.2 which doesn't have the native `rb_time_timespec_new` API; called from native code
70
- def self.ruby_time_from(timespec_seconds, timespec_nanoseconds)
71
- Time.at(0).utc + timespec_seconds + (timespec_nanoseconds.to_r / 1_000_000_000)
72
- end
73
-
74
69
  def reset_after_fork
75
70
  self.class._native_reset_after_fork(self)
76
71
  end
@@ -1,5 +1,3 @@
1
- # typed: true
2
-
3
1
  require_relative '../core/utils'
4
2
 
5
3
  module Datadog
@@ -1,5 +1,3 @@
1
- # typed: true
2
-
3
1
  module Datadog
4
2
  module Profiling
5
3
  module Tasks
@@ -1,5 +1,3 @@
1
- # typed: true
2
-
3
1
  module Datadog
4
2
  module Profiling
5
3
  module Tasks
@@ -1,5 +1,3 @@
1
- # typed: false
2
-
3
1
  require_relative '../../core/utils/only_once'
4
2
  require_relative '../ext/forking'
5
3
 
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # typed: true
4
-
5
3
  require_relative '../../tracing'
6
4
  require_relative '../../tracing/metadata/ext'
7
5
 
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # typed: true
4
-
5
3
  require_relative 'ddtrace'
6
4
 
7
5
  module Datadog
@@ -1,11 +1,9 @@
1
- # typed: true
2
-
3
1
  require_relative 'core'
4
2
  require_relative 'core/environment/variable_helpers'
5
3
  require_relative 'core/utils/only_once'
6
4
 
7
5
  module Datadog
8
- # Contains profiler for generating stack profiles, etc.
6
+ # Datadog Continuous Profiler implementation: https://docs.datadoghq.com/profiler/
9
7
  module Profiling
10
8
  GOOGLE_PROTOBUF_MINIMUM_VERSION = Gem::Version.new('3.0')
11
9
  private_constant :GOOGLE_PROTOBUF_MINIMUM_VERSION
@@ -41,6 +39,39 @@ module Datadog
41
39
  !!profiler
42
40
  end
43
41
 
42
+ # Returns an ever-increasing counter of the number of allocations observed by the profiler in this thread.
43
+ #
44
+ # Note 1: This counter may not start from zero on new threads. It should only be used to measure how many
45
+ # allocations have happened between two calls to this API:
46
+ # ```
47
+ # allocations_before = Datadog::Profiling.allocation_count
48
+ # do_some_work()
49
+ # allocations_after = Datadog::Profiling.allocation_count
50
+ # puts "Allocations during do_some_work: #{allocations_after - allocations_before}"
51
+ # ```
52
+ # (This is similar to some OS-based time representations.)
53
+ #
54
+ # Note 2: All fibers in the same thread will share the same counter values.
55
+ #
56
+ # Only available when the profiler is running, the new CPU Profiling 2.0 profiler is in use, and allocation-related
57
+ # features are not disabled via configuration.
58
+ # For instructions on enabling CPU Profiling 2.0 see the ddtrace release notes.
59
+ #
60
+ # @return [Integer] number of allocations observed in the current thread.
61
+ # @return [nil] when not available.
62
+ # @public_api
63
+ def self.allocation_count
64
+ # This no-op implementation is used when profiling failed to load.
65
+ # It gets replaced inside #replace_noop_allocation_count.
66
+ nil
67
+ end
68
+
69
+ private_class_method def self.replace_noop_allocation_count
70
+ def self.allocation_count # rubocop:disable Lint/DuplicateMethods, Lint/NestedMethodDefinition (On purpose!)
71
+ Datadog::Profiling::Collectors::CpuAndWallTimeWorker._native_allocation_count
72
+ end
73
+ end
74
+
44
75
  private_class_method def self.native_library_compilation_skipped?
45
76
  skipped_reason = try_reading_skipped_reason_file
46
77
 
@@ -65,7 +96,7 @@ module Datadog
65
96
  # NOTE: On environments where protobuf is already loaded, we skip the check. This allows us to support environments
66
97
  # where no Gem.loaded_version is NOT available but customers are able to load protobuf; see for instance
67
98
  # https://github.com/teamcapybara/capybara/commit/caf3bcd7664f4f2691d0ca9ef3be9a2a954fecfb
68
- if !defined?(::Google::Protobuf) && Gem.loaded_specs['google-protobuf'].nil?
99
+ if !protobuf_already_loaded? && Gem.loaded_specs['google-protobuf'].nil?
69
100
  "Missing google-protobuf dependency; please add `gem 'google-protobuf', '~> 3.0'` to your Gemfile or gems.rb file"
70
101
  end
71
102
  end
@@ -74,12 +105,16 @@ module Datadog
74
105
  # See above for why we skip the check when protobuf is already loaded; note that when protobuf was already loaded
75
106
  # we skip the version check to avoid the call to Gem.loaded_specs. Unfortunately, protobuf does not seem to
76
107
  # expose the gem version constant elsewhere, so in that setup we are not able to check the version.
77
- if !defined?(::Google::Protobuf) && Gem.loaded_specs['google-protobuf'].version < GOOGLE_PROTOBUF_MINIMUM_VERSION
108
+ if !protobuf_already_loaded? && Gem.loaded_specs['google-protobuf'].version < GOOGLE_PROTOBUF_MINIMUM_VERSION
78
109
  'Your google-protobuf is too old; ensure that you have google-protobuf >= 3.0 by ' \
79
110
  "adding `gem 'google-protobuf', '~> 3.0'` to your Gemfile or gems.rb file"
80
111
  end
81
112
  end
82
113
 
114
+ private_class_method def self.protobuf_already_loaded?
115
+ defined?(::Google::Protobuf) && !defined?(::Protobuf)
116
+ end
117
+
83
118
  private_class_method def self.protobuf_failed_to_load?
84
119
  unless protobuf_loaded_successfully?
85
120
  'There was an error loading the google-protobuf library; see previous warning message for details'
@@ -105,7 +140,7 @@ module Datadog
105
140
  # NOTE: We use Kernel#warn here because this code gets run BEFORE Datadog.logger is actually set up.
106
141
  # In the future it'd be nice to shuffle the logger startup to happen first to avoid this special case.
107
142
  Kernel.warn(
108
- '[DDTRACE] Error while loading google-protobuf gem. ' \
143
+ '[ddtrace] Error while loading google-protobuf gem. ' \
109
144
  "Cause: '#{e.class.name} #{e.message}' Location: '#{Array(e.backtrace).first}'. " \
110
145
  'This can happen when google-protobuf is missing its native components. ' \
111
146
  'To fix this, try removing and reinstalling the gem, forcing it to recompile the components: ' \
@@ -147,12 +182,12 @@ module Datadog
147
182
 
148
183
  require_relative 'profiling/ext/forking'
149
184
  require_relative 'profiling/collectors/code_provenance'
150
- require_relative 'profiling/collectors/cpu_and_wall_time'
151
185
  require_relative 'profiling/collectors/cpu_and_wall_time_worker'
152
186
  require_relative 'profiling/collectors/dynamic_sampling_rate'
153
187
  require_relative 'profiling/collectors/idle_sampling_helper'
154
188
  require_relative 'profiling/collectors/old_stack'
155
189
  require_relative 'profiling/collectors/stack'
190
+ require_relative 'profiling/collectors/thread_context'
156
191
  require_relative 'profiling/stack_recorder'
157
192
  require_relative 'profiling/old_recorder'
158
193
  require_relative 'profiling/exporter'
@@ -165,6 +200,8 @@ module Datadog
165
200
  require_relative 'profiling/tag_builder'
166
201
  require_relative 'profiling/http_transport'
167
202
 
203
+ replace_noop_allocation_count
204
+
168
205
  true
169
206
  end
170
207
 
@@ -1,5 +1,3 @@
1
- # typed: true
2
-
3
1
  require_relative 'metadata/ext'
4
2
 
5
3
  module Datadog