ddtrace 0.54.2 → 1.18.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 (1304) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1239 -1
  3. data/LICENSE-3rdparty.csv +7 -1
  4. data/README.md +16 -9
  5. data/bin/ddtracerb +5 -5
  6. data/ext/ddtrace_profiling_loader/ddtrace_profiling_loader.c +134 -0
  7. data/ext/ddtrace_profiling_loader/extconf.rb +72 -0
  8. data/ext/ddtrace_profiling_native_extension/NativeExtensionDesign.md +85 -15
  9. data/ext/ddtrace_profiling_native_extension/clock_id.h +20 -2
  10. data/ext/ddtrace_profiling_native_extension/clock_id_from_pthread.c +24 -20
  11. data/ext/ddtrace_profiling_native_extension/clock_id_noop.c +10 -2
  12. data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +966 -0
  13. data/ext/ddtrace_profiling_native_extension/collectors_dynamic_sampling_rate.c +142 -0
  14. data/ext/ddtrace_profiling_native_extension/collectors_dynamic_sampling_rate.h +14 -0
  15. data/ext/ddtrace_profiling_native_extension/collectors_idle_sampling_helper.c +244 -0
  16. data/ext/ddtrace_profiling_native_extension/collectors_idle_sampling_helper.h +3 -0
  17. data/ext/ddtrace_profiling_native_extension/collectors_stack.c +431 -0
  18. data/ext/ddtrace_profiling_native_extension/collectors_stack.h +20 -0
  19. data/ext/ddtrace_profiling_native_extension/collectors_thread_context.c +1266 -0
  20. data/ext/ddtrace_profiling_native_extension/collectors_thread_context.h +14 -0
  21. data/ext/ddtrace_profiling_native_extension/extconf.rb +201 -115
  22. data/ext/ddtrace_profiling_native_extension/helpers.h +17 -0
  23. data/ext/ddtrace_profiling_native_extension/http_transport.c +379 -0
  24. data/ext/ddtrace_profiling_native_extension/libdatadog_helpers.c +42 -0
  25. data/ext/ddtrace_profiling_native_extension/libdatadog_helpers.h +31 -0
  26. data/ext/ddtrace_profiling_native_extension/native_extension_helpers.rb +319 -0
  27. data/ext/ddtrace_profiling_native_extension/pid_controller.c +57 -0
  28. data/ext/ddtrace_profiling_native_extension/pid_controller.h +45 -0
  29. data/ext/ddtrace_profiling_native_extension/private_vm_api_access.c +847 -9
  30. data/ext/ddtrace_profiling_native_extension/private_vm_api_access.h +54 -0
  31. data/ext/ddtrace_profiling_native_extension/profiling.c +231 -3
  32. data/ext/ddtrace_profiling_native_extension/ruby_helpers.c +110 -0
  33. data/ext/ddtrace_profiling_native_extension/ruby_helpers.h +89 -0
  34. data/ext/ddtrace_profiling_native_extension/setup_signal_handler.c +115 -0
  35. data/ext/ddtrace_profiling_native_extension/setup_signal_handler.h +11 -0
  36. data/ext/ddtrace_profiling_native_extension/stack_recorder.c +622 -0
  37. data/ext/ddtrace_profiling_native_extension/stack_recorder.h +24 -0
  38. data/ext/ddtrace_profiling_native_extension/time_helpers.c +53 -0
  39. data/ext/ddtrace_profiling_native_extension/time_helpers.h +24 -0
  40. data/lib/datadog/appsec/assets/blocked.html +99 -0
  41. data/lib/datadog/appsec/assets/blocked.json +1 -0
  42. data/lib/datadog/appsec/assets/blocked.text +5 -0
  43. data/lib/datadog/appsec/assets/waf_rules/README.md +7 -0
  44. data/lib/datadog/appsec/assets/waf_rules/processors.json +92 -0
  45. data/lib/datadog/appsec/assets/waf_rules/recommended.json +7703 -0
  46. data/lib/datadog/appsec/assets/waf_rules/scanners.json +114 -0
  47. data/lib/datadog/appsec/assets/waf_rules/strict.json +1635 -0
  48. data/lib/datadog/appsec/assets.rb +44 -0
  49. data/lib/datadog/appsec/autoload.rb +11 -0
  50. data/lib/datadog/appsec/component.rb +94 -0
  51. data/lib/datadog/appsec/configuration/settings.rb +202 -0
  52. data/lib/datadog/appsec/configuration.rb +11 -0
  53. data/lib/datadog/appsec/contrib/auto_instrument.rb +25 -0
  54. data/lib/datadog/appsec/contrib/devise/event.rb +57 -0
  55. data/lib/datadog/appsec/contrib/devise/ext.rb +13 -0
  56. data/lib/datadog/appsec/contrib/devise/integration.rb +42 -0
  57. data/lib/datadog/appsec/contrib/devise/patcher/authenticatable_patch.rb +76 -0
  58. data/lib/datadog/appsec/contrib/devise/patcher/registration_controller_patch.rb +54 -0
  59. data/lib/datadog/appsec/contrib/devise/patcher.rb +45 -0
  60. data/lib/datadog/appsec/contrib/devise/resource.rb +35 -0
  61. data/lib/datadog/appsec/contrib/devise/tracking.rb +49 -0
  62. data/lib/datadog/appsec/contrib/integration.rb +37 -0
  63. data/lib/datadog/appsec/contrib/patcher.rb +12 -0
  64. data/lib/datadog/appsec/contrib/rack/ext.rb +13 -0
  65. data/lib/datadog/appsec/contrib/rack/gateway/request.rb +104 -0
  66. data/lib/datadog/appsec/contrib/rack/gateway/response.rb +30 -0
  67. data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +160 -0
  68. data/lib/datadog/appsec/contrib/rack/integration.rb +42 -0
  69. data/lib/datadog/appsec/contrib/rack/patcher.rb +34 -0
  70. data/lib/datadog/appsec/contrib/rack/reactive/request.rb +81 -0
  71. data/lib/datadog/appsec/contrib/rack/reactive/request_body.rb +60 -0
  72. data/lib/datadog/appsec/contrib/rack/reactive/response.rb +66 -0
  73. data/lib/datadog/appsec/contrib/rack/request_body_middleware.rb +44 -0
  74. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +193 -0
  75. data/lib/datadog/appsec/contrib/rails/ext.rb +13 -0
  76. data/lib/datadog/appsec/contrib/rails/framework.rb +16 -0
  77. data/lib/datadog/appsec/contrib/rails/gateway/request.rb +67 -0
  78. data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +69 -0
  79. data/lib/datadog/appsec/contrib/rails/integration.rb +41 -0
  80. data/lib/datadog/appsec/contrib/rails/patcher.rb +165 -0
  81. data/lib/datadog/appsec/contrib/rails/reactive/action.rb +66 -0
  82. data/lib/datadog/appsec/contrib/rails/request.rb +36 -0
  83. data/lib/datadog/appsec/contrib/rails/request_middleware.rb +20 -0
  84. data/lib/datadog/appsec/contrib/sinatra/ext.rb +14 -0
  85. data/lib/datadog/appsec/contrib/sinatra/framework.rb +20 -0
  86. data/lib/datadog/appsec/contrib/sinatra/gateway/request.rb +17 -0
  87. data/lib/datadog/appsec/contrib/sinatra/gateway/route_params.rb +23 -0
  88. data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +115 -0
  89. data/lib/datadog/appsec/contrib/sinatra/integration.rb +41 -0
  90. data/lib/datadog/appsec/contrib/sinatra/patcher.rb +166 -0
  91. data/lib/datadog/appsec/contrib/sinatra/reactive/routed.rb +61 -0
  92. data/lib/datadog/appsec/contrib/sinatra/request_middleware.rb +20 -0
  93. data/lib/datadog/appsec/event.rb +169 -0
  94. data/lib/datadog/appsec/ext.rb +10 -0
  95. data/lib/datadog/appsec/extensions.rb +15 -0
  96. data/lib/datadog/appsec/instrumentation/gateway/argument.rb +22 -0
  97. data/lib/datadog/appsec/instrumentation/gateway.rb +64 -0
  98. data/lib/datadog/appsec/instrumentation.rb +9 -0
  99. data/lib/datadog/appsec/monitor/gateway/watcher.rb +67 -0
  100. data/lib/datadog/appsec/monitor/reactive/set_user.rb +58 -0
  101. data/lib/datadog/appsec/monitor.rb +11 -0
  102. data/lib/datadog/appsec/processor/actions.rb +49 -0
  103. data/lib/datadog/appsec/processor/rule_loader.rb +123 -0
  104. data/lib/datadog/appsec/processor/rule_merger.rb +152 -0
  105. data/lib/datadog/appsec/processor.rb +171 -0
  106. data/lib/datadog/appsec/rate_limiter.rb +58 -0
  107. data/lib/datadog/appsec/reactive/address_hash.rb +22 -0
  108. data/lib/datadog/appsec/reactive/engine.rb +47 -0
  109. data/lib/datadog/appsec/reactive/operation.rb +68 -0
  110. data/lib/datadog/appsec/reactive/subscriber.rb +19 -0
  111. data/lib/datadog/appsec/remote.rb +129 -0
  112. data/lib/datadog/appsec/response.rb +151 -0
  113. data/lib/datadog/appsec/sample_rate.rb +21 -0
  114. data/lib/datadog/appsec/scope.rb +61 -0
  115. data/lib/datadog/appsec/utils/http/media_range.rb +199 -0
  116. data/lib/datadog/appsec/utils/http/media_type.rb +85 -0
  117. data/lib/datadog/appsec/utils/http.rb +11 -0
  118. data/lib/datadog/appsec/utils.rb +9 -0
  119. data/lib/datadog/appsec.rb +60 -0
  120. data/lib/datadog/core/backport.rb +51 -0
  121. data/lib/datadog/core/buffer/cruby.rb +55 -0
  122. data/lib/datadog/core/buffer/random.rb +134 -0
  123. data/lib/datadog/core/buffer/thread_safe.rb +58 -0
  124. data/lib/datadog/core/chunker.rb +35 -0
  125. data/lib/datadog/core/configuration/agent_settings_resolver.rb +405 -0
  126. data/lib/datadog/core/configuration/base.rb +89 -0
  127. data/lib/datadog/core/configuration/components.rb +173 -0
  128. data/lib/datadog/core/configuration/ext.rb +47 -0
  129. data/lib/datadog/core/configuration/option.rb +317 -0
  130. data/lib/datadog/core/configuration/option_definition.rb +176 -0
  131. data/lib/datadog/core/configuration/options.rb +128 -0
  132. data/lib/datadog/core/configuration/settings.rb +649 -0
  133. data/lib/datadog/core/configuration.rb +293 -0
  134. data/lib/datadog/core/diagnostics/environment_logger.rb +182 -0
  135. data/lib/datadog/core/diagnostics/health.rb +19 -0
  136. data/lib/datadog/core/encoding.rb +72 -0
  137. data/lib/datadog/core/environment/cgroup.rb +4 -5
  138. data/lib/datadog/core/environment/class_count.rb +2 -1
  139. data/lib/datadog/core/environment/container.rb +3 -5
  140. data/lib/datadog/core/environment/execution.rb +103 -0
  141. data/lib/datadog/core/environment/ext.rb +30 -11
  142. data/lib/datadog/core/environment/gc.rb +2 -1
  143. data/lib/datadog/core/environment/identity.rb +69 -6
  144. data/lib/datadog/core/environment/platform.rb +38 -0
  145. data/lib/datadog/core/environment/socket.rb +9 -2
  146. data/lib/datadog/core/environment/thread_count.rb +2 -1
  147. data/lib/datadog/core/environment/variable_helpers.rb +32 -21
  148. data/lib/datadog/core/environment/vm_cache.rb +19 -1
  149. data/lib/datadog/core/environment/yjit.rb +58 -0
  150. data/lib/datadog/core/error.rb +100 -0
  151. data/lib/datadog/core/extensions.rb +16 -0
  152. data/lib/datadog/core/git/ext.rb +37 -0
  153. data/lib/datadog/core/header_collection.rb +43 -0
  154. data/lib/datadog/core/logger.rb +44 -0
  155. data/lib/datadog/core/logging/ext.rb +13 -0
  156. data/lib/datadog/core/metrics/client.rb +197 -0
  157. data/lib/datadog/core/metrics/ext.rb +18 -0
  158. data/lib/datadog/core/metrics/helpers.rb +25 -0
  159. data/lib/datadog/core/metrics/logging.rb +42 -0
  160. data/lib/datadog/core/metrics/metric.rb +14 -0
  161. data/lib/datadog/core/metrics/options.rb +48 -0
  162. data/lib/datadog/core/pin.rb +73 -0
  163. data/lib/datadog/core/remote/client/capabilities.rb +62 -0
  164. data/lib/datadog/core/remote/client.rb +232 -0
  165. data/lib/datadog/core/remote/component.rb +149 -0
  166. data/lib/datadog/core/remote/configuration/content.rb +111 -0
  167. data/lib/datadog/core/remote/configuration/digest.rb +62 -0
  168. data/lib/datadog/core/remote/configuration/path.rb +90 -0
  169. data/lib/datadog/core/remote/configuration/repository.rb +294 -0
  170. data/lib/datadog/core/remote/configuration/target.rb +74 -0
  171. data/lib/datadog/core/remote/configuration.rb +18 -0
  172. data/lib/datadog/core/remote/dispatcher.rb +59 -0
  173. data/lib/datadog/core/remote/ext.rb +12 -0
  174. data/lib/datadog/core/remote/negotiation.rb +70 -0
  175. data/lib/datadog/core/remote/transport/config.rb +60 -0
  176. data/lib/datadog/core/remote/transport/http/api/instance.rb +39 -0
  177. data/lib/datadog/core/remote/transport/http/api/spec.rb +21 -0
  178. data/lib/datadog/core/remote/transport/http/api.rb +58 -0
  179. data/lib/datadog/core/remote/transport/http/builder.rb +219 -0
  180. data/lib/datadog/core/remote/transport/http/client.rb +48 -0
  181. data/lib/datadog/core/remote/transport/http/config.rb +280 -0
  182. data/lib/datadog/core/remote/transport/http/negotiation.rb +146 -0
  183. data/lib/datadog/core/remote/transport/http.rb +179 -0
  184. data/lib/datadog/core/remote/transport/negotiation.rb +62 -0
  185. data/lib/datadog/core/remote/worker.rb +99 -0
  186. data/lib/datadog/core/remote.rb +24 -0
  187. data/lib/datadog/core/runtime/ext.rb +38 -0
  188. data/lib/datadog/core/runtime/metrics.rb +183 -0
  189. data/lib/datadog/core/telemetry/client.rb +87 -0
  190. data/lib/datadog/core/telemetry/collector.rb +240 -0
  191. data/lib/datadog/core/telemetry/emitter.rb +48 -0
  192. data/lib/datadog/core/telemetry/event.rb +82 -0
  193. data/lib/datadog/core/telemetry/ext.rb +12 -0
  194. data/lib/datadog/core/telemetry/heartbeat.rb +35 -0
  195. data/lib/datadog/core/telemetry/http/adapters/net.rb +111 -0
  196. data/lib/datadog/core/telemetry/http/env.rb +20 -0
  197. data/lib/datadog/core/telemetry/http/ext.rb +22 -0
  198. data/lib/datadog/core/telemetry/http/response.rb +64 -0
  199. data/lib/datadog/core/telemetry/http/transport.rb +56 -0
  200. data/lib/datadog/core/telemetry/v1/app_event.rb +52 -0
  201. data/lib/datadog/core/telemetry/v1/application.rb +92 -0
  202. data/lib/datadog/core/telemetry/v1/configuration.rb +25 -0
  203. data/lib/datadog/core/telemetry/v1/dependency.rb +43 -0
  204. data/lib/datadog/core/telemetry/v1/host.rb +59 -0
  205. data/lib/datadog/core/telemetry/v1/integration.rb +64 -0
  206. data/lib/datadog/core/telemetry/v1/product.rb +36 -0
  207. data/lib/datadog/core/telemetry/v1/telemetry_request.rb +106 -0
  208. data/lib/datadog/core/telemetry/v2/app_client_configuration_change.rb +41 -0
  209. data/lib/datadog/core/telemetry/v2/request.rb +29 -0
  210. data/lib/datadog/core/transport/ext.rb +47 -0
  211. data/lib/datadog/core/transport/http/adapters/net.rb +168 -0
  212. data/lib/datadog/core/transport/http/adapters/registry.rb +29 -0
  213. data/lib/datadog/core/transport/http/adapters/test.rb +89 -0
  214. data/lib/datadog/core/transport/http/adapters/unix_socket.rb +83 -0
  215. data/lib/datadog/core/transport/http/api/endpoint.rb +31 -0
  216. data/lib/datadog/core/transport/http/api/fallbacks.rb +26 -0
  217. data/lib/datadog/core/transport/http/api/map.rb +18 -0
  218. data/lib/datadog/core/transport/http/env.rb +62 -0
  219. data/lib/datadog/core/transport/http/response.rb +60 -0
  220. data/lib/datadog/core/transport/parcel.rb +22 -0
  221. data/lib/datadog/core/transport/request.rb +17 -0
  222. data/lib/datadog/core/transport/response.rb +64 -0
  223. data/lib/datadog/core/utils/compression.rb +36 -0
  224. data/lib/datadog/core/utils/duration.rb +52 -0
  225. data/lib/datadog/core/utils/forking.rb +61 -0
  226. data/lib/datadog/core/utils/hash.rb +79 -0
  227. data/lib/datadog/core/utils/network.rb +140 -0
  228. data/lib/datadog/core/utils/only_once.rb +42 -0
  229. data/lib/datadog/core/utils/safe_dup.rb +50 -0
  230. data/lib/datadog/core/utils/sequence.rb +26 -0
  231. data/lib/datadog/core/utils/time.rb +52 -0
  232. data/lib/datadog/core/utils.rb +92 -0
  233. data/lib/datadog/core/vendor/ipaddr.rb +78 -0
  234. data/lib/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rb +118 -0
  235. data/lib/datadog/core/vendor/multipart-post/multipart/post/multipartable.rb +59 -0
  236. data/lib/datadog/core/vendor/multipart-post/multipart/post/parts.rb +137 -0
  237. data/lib/datadog/core/vendor/multipart-post/multipart/post/version.rb +11 -0
  238. data/lib/datadog/core/vendor/multipart-post/multipart/post.rb +10 -0
  239. data/lib/datadog/core/vendor/multipart-post/multipart.rb +14 -0
  240. data/lib/datadog/core/vendor/multipart-post/net/http/post/multipart.rb +34 -0
  241. data/lib/datadog/core/worker.rb +24 -0
  242. data/lib/datadog/core/workers/async.rb +183 -0
  243. data/lib/datadog/core/workers/interval_loop.rb +123 -0
  244. data/lib/datadog/core/workers/polling.rb +57 -0
  245. data/lib/datadog/core/workers/queue.rb +44 -0
  246. data/lib/datadog/core/workers/runtime_metrics.rb +62 -0
  247. data/lib/datadog/core.rb +45 -0
  248. data/lib/datadog/kit/appsec/events.rb +169 -0
  249. data/lib/datadog/kit/enable_core_dumps.rb +49 -0
  250. data/lib/datadog/kit/identity.rb +104 -0
  251. data/lib/datadog/kit.rb +11 -0
  252. data/lib/datadog/opentelemetry/api/context.rb +193 -0
  253. data/lib/datadog/opentelemetry/api/trace/span.rb +14 -0
  254. data/lib/datadog/opentelemetry/sdk/configurator.rb +37 -0
  255. data/lib/datadog/opentelemetry/sdk/id_generator.rb +26 -0
  256. data/lib/datadog/opentelemetry/sdk/propagator.rb +91 -0
  257. data/lib/datadog/opentelemetry/sdk/span_processor.rb +134 -0
  258. data/lib/datadog/opentelemetry/sdk/trace/span.rb +167 -0
  259. data/lib/datadog/opentelemetry/trace.rb +58 -0
  260. data/lib/datadog/opentelemetry.rb +48 -0
  261. data/lib/datadog/opentracer/binary_propagator.rb +26 -0
  262. data/lib/datadog/opentracer/carrier.rb +9 -0
  263. data/lib/datadog/opentracer/distributed_headers.rb +54 -0
  264. data/lib/datadog/opentracer/global_tracer.rb +17 -0
  265. data/lib/datadog/opentracer/propagator.rb +26 -0
  266. data/lib/datadog/opentracer/rack_propagator.rb +71 -0
  267. data/lib/datadog/opentracer/scope.rb +18 -0
  268. data/lib/datadog/opentracer/scope_manager.rb +9 -0
  269. data/lib/datadog/opentracer/span.rb +99 -0
  270. data/lib/datadog/opentracer/span_context.rb +19 -0
  271. data/lib/datadog/opentracer/span_context_factory.rb +27 -0
  272. data/lib/datadog/opentracer/text_map_propagator.rb +87 -0
  273. data/lib/datadog/opentracer/thread_local_scope.rb +34 -0
  274. data/lib/datadog/opentracer/thread_local_scope_manager.rb +64 -0
  275. data/lib/datadog/opentracer/tracer.rb +212 -0
  276. data/lib/datadog/opentracer.rb +33 -0
  277. data/lib/datadog/profiling/collectors/code_provenance.rb +113 -0
  278. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +113 -0
  279. data/lib/datadog/profiling/collectors/dynamic_sampling_rate.rb +14 -0
  280. data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +68 -0
  281. data/lib/datadog/profiling/collectors/stack.rb +13 -0
  282. data/lib/datadog/profiling/collectors/thread_context.rb +61 -0
  283. data/lib/datadog/profiling/component.rb +250 -0
  284. data/lib/datadog/profiling/diagnostics/environment_logger.rb +39 -0
  285. data/lib/datadog/profiling/exporter.rb +87 -0
  286. data/lib/datadog/profiling/ext/forking.rb +96 -0
  287. data/lib/datadog/profiling/ext.rb +33 -0
  288. data/lib/datadog/profiling/flush.rb +40 -0
  289. data/lib/datadog/profiling/http_transport.rb +143 -0
  290. data/lib/datadog/profiling/load_native_extension.rb +26 -0
  291. data/lib/datadog/profiling/native_extension.rb +20 -0
  292. data/lib/datadog/profiling/preload.rb +5 -0
  293. data/lib/datadog/profiling/profiler.rb +62 -0
  294. data/lib/datadog/profiling/scheduler.rb +137 -0
  295. data/lib/datadog/profiling/stack_recorder.rb +56 -0
  296. data/lib/datadog/profiling/tag_builder.rb +53 -0
  297. data/lib/datadog/profiling/tasks/exec.rb +48 -0
  298. data/lib/datadog/profiling/tasks/help.rb +16 -0
  299. data/lib/datadog/profiling/tasks/setup.rb +58 -0
  300. data/lib/datadog/profiling.rb +150 -0
  301. data/lib/datadog/tracing/analytics.rb +25 -0
  302. data/lib/datadog/tracing/buffer.rb +127 -0
  303. data/lib/datadog/tracing/client_ip.rb +61 -0
  304. data/lib/datadog/tracing/component.rb +235 -0
  305. data/lib/datadog/tracing/configuration/agent_settings_resolver.rb +13 -0
  306. data/lib/datadog/tracing/configuration/dynamic/option.rb +71 -0
  307. data/lib/datadog/tracing/configuration/dynamic.rb +64 -0
  308. data/lib/datadog/tracing/configuration/ext.rb +109 -0
  309. data/lib/datadog/tracing/configuration/http.rb +74 -0
  310. data/lib/datadog/tracing/configuration/settings.rb +501 -0
  311. data/lib/datadog/tracing/context.rb +68 -0
  312. data/lib/datadog/tracing/context_provider.rb +80 -0
  313. data/lib/datadog/tracing/contrib/action_cable/configuration/settings.rb +38 -0
  314. data/lib/datadog/tracing/contrib/action_cable/event.rb +71 -0
  315. data/lib/datadog/tracing/contrib/action_cable/events/broadcast.rb +56 -0
  316. data/lib/datadog/tracing/contrib/action_cable/events/perform_action.rb +61 -0
  317. data/lib/datadog/tracing/contrib/action_cable/events/transmit.rb +57 -0
  318. data/lib/datadog/tracing/contrib/action_cable/events.rb +37 -0
  319. data/lib/datadog/tracing/contrib/action_cable/ext.rb +32 -0
  320. data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +88 -0
  321. data/lib/datadog/tracing/contrib/action_cable/integration.rb +48 -0
  322. data/lib/datadog/tracing/contrib/action_cable/patcher.rb +31 -0
  323. data/lib/datadog/tracing/contrib/action_mailer/configuration/settings.rb +39 -0
  324. data/lib/datadog/tracing/contrib/action_mailer/event.rb +52 -0
  325. data/lib/datadog/tracing/contrib/action_mailer/events/deliver.rb +58 -0
  326. data/lib/datadog/tracing/contrib/action_mailer/events/process.rb +45 -0
  327. data/lib/datadog/tracing/contrib/action_mailer/events.rb +34 -0
  328. data/lib/datadog/tracing/contrib/action_mailer/ext.rb +33 -0
  329. data/lib/datadog/tracing/contrib/action_mailer/integration.rb +48 -0
  330. data/lib/datadog/tracing/contrib/action_mailer/patcher.rb +29 -0
  331. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +136 -0
  332. data/lib/datadog/tracing/contrib/action_pack/action_controller/patcher.rb +29 -0
  333. data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +49 -0
  334. data/lib/datadog/tracing/contrib/action_pack/ext.rb +22 -0
  335. data/lib/datadog/tracing/contrib/action_pack/integration.rb +48 -0
  336. data/lib/datadog/tracing/contrib/action_pack/patcher.rb +27 -0
  337. data/lib/datadog/tracing/contrib/action_pack/utils.rb +38 -0
  338. data/lib/datadog/tracing/contrib/action_view/configuration/settings.rb +37 -0
  339. data/lib/datadog/tracing/contrib/action_view/event.rb +35 -0
  340. data/lib/datadog/tracing/contrib/action_view/events/render_partial.rb +52 -0
  341. data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +55 -0
  342. data/lib/datadog/tracing/contrib/action_view/events.rb +34 -0
  343. data/lib/datadog/tracing/contrib/action_view/ext.rb +24 -0
  344. data/lib/datadog/tracing/contrib/action_view/instrumentation/partial_renderer.rb +76 -0
  345. data/lib/datadog/tracing/contrib/action_view/instrumentation/template_renderer.rb +89 -0
  346. data/lib/datadog/tracing/contrib/action_view/integration.rb +55 -0
  347. data/lib/datadog/tracing/contrib/action_view/patcher.rb +45 -0
  348. data/lib/datadog/tracing/contrib/action_view/utils.rb +34 -0
  349. data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +43 -0
  350. data/lib/datadog/tracing/contrib/active_job/event.rb +58 -0
  351. data/lib/datadog/tracing/contrib/active_job/events/discard.rb +48 -0
  352. data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +47 -0
  353. data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +47 -0
  354. data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +49 -0
  355. data/lib/datadog/tracing/contrib/active_job/events/perform.rb +47 -0
  356. data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +48 -0
  357. data/lib/datadog/tracing/contrib/active_job/events.rb +42 -0
  358. data/lib/datadog/tracing/contrib/active_job/ext.rb +39 -0
  359. data/lib/datadog/tracing/contrib/active_job/integration.rb +48 -0
  360. data/lib/datadog/tracing/contrib/active_job/log_injection.rb +24 -0
  361. data/lib/datadog/tracing/contrib/active_job/patcher.rb +36 -0
  362. data/lib/datadog/tracing/contrib/active_model_serializers/configuration/settings.rb +36 -0
  363. data/lib/datadog/tracing/contrib/active_model_serializers/event.rb +68 -0
  364. data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +43 -0
  365. data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +45 -0
  366. data/lib/datadog/tracing/contrib/active_model_serializers/events.rb +34 -0
  367. data/lib/datadog/tracing/contrib/active_model_serializers/ext.rb +24 -0
  368. data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +43 -0
  369. data/lib/datadog/tracing/contrib/active_model_serializers/patcher.rb +32 -0
  370. data/lib/datadog/tracing/contrib/active_record/configuration/makara_resolver.rb +34 -0
  371. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +143 -0
  372. data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +46 -0
  373. data/lib/datadog/tracing/contrib/active_record/event.rb +30 -0
  374. data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +56 -0
  375. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +75 -0
  376. data/lib/datadog/tracing/contrib/active_record/events.rb +34 -0
  377. data/lib/datadog/tracing/contrib/active_record/ext.rb +29 -0
  378. data/lib/datadog/tracing/contrib/active_record/integration.rb +54 -0
  379. data/lib/datadog/tracing/contrib/active_record/patcher.rb +27 -0
  380. data/lib/datadog/tracing/contrib/active_record/utils.rb +126 -0
  381. data/lib/datadog/tracing/contrib/active_record/vendor/connection_specification.rb +305 -0
  382. data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +186 -0
  383. data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +76 -0
  384. data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +47 -0
  385. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +45 -0
  386. data/lib/datadog/tracing/contrib/active_support/ext.rb +31 -0
  387. data/lib/datadog/tracing/contrib/active_support/integration.rb +49 -0
  388. data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +71 -0
  389. data/lib/datadog/tracing/contrib/active_support/notifications/subscriber.rb +71 -0
  390. data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +162 -0
  391. data/lib/datadog/tracing/contrib/active_support/patcher.rb +27 -0
  392. data/lib/datadog/tracing/contrib/analytics.rb +29 -0
  393. data/lib/datadog/tracing/contrib/auto_instrument.rb +53 -0
  394. data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +51 -0
  395. data/lib/datadog/tracing/contrib/aws/ext.rb +49 -0
  396. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +119 -0
  397. data/lib/datadog/tracing/contrib/aws/integration.rb +45 -0
  398. data/lib/datadog/tracing/contrib/aws/parsed_context.rb +62 -0
  399. data/lib/datadog/tracing/contrib/aws/patcher.rb +57 -0
  400. data/lib/datadog/tracing/contrib/aws/service/base.rb +16 -0
  401. data/lib/datadog/tracing/contrib/aws/service/dynamodb.rb +22 -0
  402. data/lib/datadog/tracing/contrib/aws/service/eventbridge.rb +22 -0
  403. data/lib/datadog/tracing/contrib/aws/service/kinesis.rb +32 -0
  404. data/lib/datadog/tracing/contrib/aws/service/s3.rb +22 -0
  405. data/lib/datadog/tracing/contrib/aws/service/sns.rb +30 -0
  406. data/lib/datadog/tracing/contrib/aws/service/sqs.rb +27 -0
  407. data/lib/datadog/tracing/contrib/aws/service/states.rb +40 -0
  408. data/lib/datadog/tracing/contrib/aws/services.rb +137 -0
  409. data/lib/datadog/tracing/contrib/concurrent_ruby/configuration/settings.rb +24 -0
  410. data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +53 -0
  411. data/lib/datadog/tracing/contrib/concurrent_ruby/ext.rb +16 -0
  412. data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +20 -0
  413. data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +42 -0
  414. data/lib/datadog/tracing/contrib/concurrent_ruby/patcher.rb +39 -0
  415. data/lib/datadog/tracing/contrib/concurrent_ruby/promises_future_patch.rb +22 -0
  416. data/lib/datadog/tracing/contrib/configurable.rb +102 -0
  417. data/lib/datadog/tracing/contrib/configuration/resolver.rb +85 -0
  418. data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +43 -0
  419. data/lib/datadog/tracing/contrib/configuration/settings.rb +39 -0
  420. data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +56 -0
  421. data/lib/datadog/tracing/contrib/dalli/ext.rb +39 -0
  422. data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +73 -0
  423. data/lib/datadog/tracing/contrib/dalli/integration.rb +50 -0
  424. data/lib/datadog/tracing/contrib/dalli/patcher.rb +28 -0
  425. data/lib/datadog/tracing/contrib/dalli/quantize.rb +24 -0
  426. data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +44 -0
  427. data/lib/datadog/tracing/contrib/delayed_job/ext.rb +28 -0
  428. data/lib/datadog/tracing/contrib/delayed_job/integration.rb +41 -0
  429. data/lib/datadog/tracing/contrib/delayed_job/patcher.rb +37 -0
  430. data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +108 -0
  431. data/lib/datadog/tracing/contrib/delayed_job/server_internal_tracer/worker.rb +34 -0
  432. data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +52 -0
  433. data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +33 -0
  434. data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +48 -0
  435. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +160 -0
  436. data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +85 -0
  437. data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +54 -0
  438. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +221 -0
  439. data/lib/datadog/tracing/contrib/ethon/ext.rb +31 -0
  440. data/lib/datadog/tracing/contrib/ethon/integration.rb +46 -0
  441. data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +102 -0
  442. data/lib/datadog/tracing/contrib/ethon/patcher.rb +30 -0
  443. data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +56 -0
  444. data/lib/datadog/tracing/contrib/excon/ext.rb +28 -0
  445. data/lib/datadog/tracing/contrib/excon/integration.rb +46 -0
  446. data/lib/datadog/tracing/contrib/excon/middleware.rb +192 -0
  447. data/lib/datadog/tracing/contrib/excon/patcher.rb +31 -0
  448. data/lib/datadog/tracing/contrib/ext.rb +55 -0
  449. data/lib/datadog/tracing/contrib/extensions.rb +229 -0
  450. data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +61 -0
  451. data/lib/datadog/tracing/contrib/faraday/connection.rb +22 -0
  452. data/lib/datadog/tracing/contrib/faraday/ext.rb +28 -0
  453. data/lib/datadog/tracing/contrib/faraday/integration.rb +46 -0
  454. data/lib/datadog/tracing/contrib/faraday/middleware.rb +110 -0
  455. data/lib/datadog/tracing/contrib/faraday/patcher.rb +54 -0
  456. data/lib/datadog/tracing/contrib/faraday/rack_builder.rb +22 -0
  457. data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +44 -0
  458. data/lib/datadog/tracing/contrib/grape/endpoint.rb +248 -0
  459. data/lib/datadog/tracing/contrib/grape/ext.rb +28 -0
  460. data/lib/datadog/tracing/contrib/grape/instrumentation.rb +35 -0
  461. data/lib/datadog/tracing/contrib/grape/integration.rb +42 -0
  462. data/lib/datadog/tracing/contrib/grape/patcher.rb +33 -0
  463. data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +38 -0
  464. data/lib/datadog/tracing/contrib/graphql/ext.rb +19 -0
  465. data/lib/datadog/tracing/contrib/graphql/integration.rb +42 -0
  466. data/lib/datadog/tracing/contrib/graphql/patcher.rb +88 -0
  467. data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +78 -0
  468. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +119 -0
  469. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +107 -0
  470. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb +101 -0
  471. data/lib/datadog/tracing/contrib/grpc/distributed/fetcher.rb +26 -0
  472. data/lib/datadog/tracing/contrib/grpc/distributed/propagation.rb +42 -0
  473. data/lib/datadog/tracing/contrib/grpc/ext.rb +28 -0
  474. data/lib/datadog/tracing/contrib/grpc/formatting.rb +127 -0
  475. data/lib/datadog/tracing/contrib/grpc/integration.rb +48 -0
  476. data/lib/datadog/tracing/contrib/grpc/intercept_with_datadog.rb +53 -0
  477. data/lib/datadog/tracing/contrib/grpc/patcher.rb +34 -0
  478. data/lib/datadog/tracing/contrib/hanami/action_tracer.rb +47 -0
  479. data/lib/datadog/tracing/contrib/hanami/configuration/settings.rb +23 -0
  480. data/lib/datadog/tracing/contrib/hanami/ext.rb +24 -0
  481. data/lib/datadog/tracing/contrib/hanami/integration.rb +42 -0
  482. data/lib/datadog/tracing/contrib/hanami/patcher.rb +33 -0
  483. data/lib/datadog/tracing/contrib/hanami/plugin.rb +23 -0
  484. data/lib/datadog/tracing/contrib/hanami/renderer_policy_tracing.rb +41 -0
  485. data/lib/datadog/tracing/contrib/hanami/router_tracing.rb +44 -0
  486. data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +40 -0
  487. data/lib/datadog/tracing/contrib/http/configuration/settings.rb +74 -0
  488. data/lib/datadog/tracing/contrib/http/distributed/fetcher.rb +38 -0
  489. data/lib/datadog/tracing/contrib/http/distributed/propagation.rb +37 -0
  490. data/lib/datadog/tracing/contrib/http/ext.rb +28 -0
  491. data/lib/datadog/tracing/contrib/http/instrumentation.rb +158 -0
  492. data/lib/datadog/tracing/contrib/http/integration.rb +49 -0
  493. data/lib/datadog/tracing/contrib/http/patcher.rb +30 -0
  494. data/lib/datadog/tracing/contrib/http_annotation_helper.rb +17 -0
  495. data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +74 -0
  496. data/lib/datadog/tracing/contrib/httpclient/ext.rb +29 -0
  497. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +135 -0
  498. data/lib/datadog/tracing/contrib/httpclient/integration.rb +46 -0
  499. data/lib/datadog/tracing/contrib/httpclient/patcher.rb +40 -0
  500. data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +74 -0
  501. data/lib/datadog/tracing/contrib/httprb/ext.rb +28 -0
  502. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +145 -0
  503. data/lib/datadog/tracing/contrib/httprb/integration.rb +46 -0
  504. data/lib/datadog/tracing/contrib/httprb/patcher.rb +40 -0
  505. data/lib/datadog/tracing/contrib/integration.rb +78 -0
  506. data/lib/datadog/tracing/contrib/kafka/configuration/settings.rb +38 -0
  507. data/lib/datadog/tracing/contrib/kafka/consumer_event.rb +19 -0
  508. data/lib/datadog/tracing/contrib/kafka/consumer_group_event.rb +18 -0
  509. data/lib/datadog/tracing/contrib/kafka/event.rb +53 -0
  510. data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +40 -0
  511. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +47 -0
  512. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +45 -0
  513. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +45 -0
  514. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +35 -0
  515. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +35 -0
  516. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +35 -0
  517. data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +39 -0
  518. data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +42 -0
  519. data/lib/datadog/tracing/contrib/kafka/events.rb +48 -0
  520. data/lib/datadog/tracing/contrib/kafka/ext.rb +54 -0
  521. data/lib/datadog/tracing/contrib/kafka/integration.rb +42 -0
  522. data/lib/datadog/tracing/contrib/kafka/patcher.rb +29 -0
  523. data/lib/datadog/tracing/contrib/lograge/configuration/settings.rb +24 -0
  524. data/lib/datadog/tracing/contrib/lograge/ext.rb +15 -0
  525. data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +31 -0
  526. data/lib/datadog/tracing/contrib/lograge/integration.rb +48 -0
  527. data/lib/datadog/tracing/contrib/lograge/patcher.rb +29 -0
  528. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +54 -0
  529. data/lib/datadog/tracing/contrib/mongodb/ext.rb +37 -0
  530. data/lib/datadog/tracing/contrib/mongodb/instrumentation.rb +47 -0
  531. data/lib/datadog/tracing/contrib/mongodb/integration.rb +46 -0
  532. data/lib/datadog/tracing/contrib/mongodb/parsers.rb +47 -0
  533. data/lib/datadog/tracing/contrib/mongodb/patcher.rb +34 -0
  534. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +139 -0
  535. data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +58 -0
  536. data/lib/datadog/tracing/contrib/mysql2/ext.rb +27 -0
  537. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +94 -0
  538. data/lib/datadog/tracing/contrib/mysql2/integration.rb +41 -0
  539. data/lib/datadog/tracing/contrib/mysql2/patcher.rb +31 -0
  540. data/lib/datadog/tracing/contrib/opensearch/configuration/settings.rb +52 -0
  541. data/lib/datadog/tracing/contrib/opensearch/ext.rb +37 -0
  542. data/lib/datadog/tracing/contrib/opensearch/integration.rb +44 -0
  543. data/lib/datadog/tracing/contrib/opensearch/patcher.rb +135 -0
  544. data/lib/datadog/tracing/contrib/opensearch/quantize.rb +81 -0
  545. data/lib/datadog/tracing/contrib/patchable.rb +109 -0
  546. data/lib/datadog/tracing/contrib/patcher.rb +83 -0
  547. data/lib/datadog/tracing/contrib/pg/configuration/settings.rb +63 -0
  548. data/lib/datadog/tracing/contrib/pg/ext.rb +34 -0
  549. data/lib/datadog/tracing/contrib/pg/instrumentation.rb +204 -0
  550. data/lib/datadog/tracing/contrib/pg/integration.rb +41 -0
  551. data/lib/datadog/tracing/contrib/pg/patcher.rb +31 -0
  552. data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +50 -0
  553. data/lib/datadog/tracing/contrib/presto/ext.rb +37 -0
  554. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +136 -0
  555. data/lib/datadog/tracing/contrib/presto/integration.rb +41 -0
  556. data/lib/datadog/tracing/contrib/presto/patcher.rb +35 -0
  557. data/lib/datadog/tracing/contrib/propagation/sql_comment/comment.rb +41 -0
  558. data/lib/datadog/tracing/contrib/propagation/sql_comment/ext.rb +33 -0
  559. data/lib/datadog/tracing/contrib/propagation/sql_comment/mode.rb +28 -0
  560. data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +53 -0
  561. data/lib/datadog/tracing/contrib/qless/configuration/settings.rb +44 -0
  562. data/lib/datadog/tracing/contrib/qless/ext.rb +26 -0
  563. data/lib/datadog/tracing/contrib/qless/integration.rb +41 -0
  564. data/lib/datadog/tracing/contrib/qless/patcher.rb +36 -0
  565. data/lib/datadog/tracing/contrib/qless/qless_job.rb +75 -0
  566. data/lib/datadog/tracing/contrib/qless/tracer_cleaner.rb +30 -0
  567. data/lib/datadog/tracing/contrib/que/configuration/settings.rb +56 -0
  568. data/lib/datadog/tracing/contrib/que/ext.rb +32 -0
  569. data/lib/datadog/tracing/contrib/que/integration.rb +44 -0
  570. data/lib/datadog/tracing/contrib/que/patcher.rb +26 -0
  571. data/lib/datadog/tracing/contrib/que/tracer.rb +63 -0
  572. data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +45 -0
  573. data/lib/datadog/tracing/contrib/racecar/event.rb +81 -0
  574. data/lib/datadog/tracing/contrib/racecar/events/batch.rb +36 -0
  575. data/lib/datadog/tracing/contrib/racecar/events/consume.rb +33 -0
  576. data/lib/datadog/tracing/contrib/racecar/events/message.rb +36 -0
  577. data/lib/datadog/tracing/contrib/racecar/events.rb +36 -0
  578. data/lib/datadog/tracing/contrib/racecar/ext.rb +32 -0
  579. data/lib/datadog/tracing/contrib/racecar/integration.rb +42 -0
  580. data/lib/datadog/tracing/contrib/racecar/patcher.rb +29 -0
  581. data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +53 -0
  582. data/lib/datadog/tracing/contrib/rack/ext.rb +30 -0
  583. data/lib/datadog/tracing/contrib/rack/header_collection.rb +38 -0
  584. data/lib/datadog/tracing/contrib/rack/header_tagging.rb +63 -0
  585. data/lib/datadog/tracing/contrib/rack/integration.rb +48 -0
  586. data/lib/datadog/tracing/contrib/rack/middlewares.rb +308 -0
  587. data/lib/datadog/tracing/contrib/rack/patcher.rb +117 -0
  588. data/lib/datadog/tracing/contrib/rack/request_queue.rb +46 -0
  589. data/lib/datadog/tracing/contrib/rails/auto_instrument_railtie.rb +10 -0
  590. data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +83 -0
  591. data/lib/datadog/tracing/contrib/rails/ext.rb +19 -0
  592. data/lib/datadog/tracing/contrib/rails/framework.rb +148 -0
  593. data/lib/datadog/tracing/contrib/rails/integration.rb +47 -0
  594. data/lib/datadog/tracing/contrib/rails/log_injection.rb +27 -0
  595. data/lib/datadog/tracing/contrib/rails/middlewares.rb +46 -0
  596. data/lib/datadog/tracing/contrib/rails/patcher.rb +87 -0
  597. data/lib/datadog/tracing/contrib/rails/railtie.rb +17 -0
  598. data/lib/datadog/tracing/contrib/rails/utils.rb +28 -0
  599. data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +54 -0
  600. data/lib/datadog/tracing/contrib/rake/ext.rb +26 -0
  601. data/lib/datadog/tracing/contrib/rake/instrumentation.rb +101 -0
  602. data/lib/datadog/tracing/contrib/rake/integration.rb +41 -0
  603. data/lib/datadog/tracing/contrib/rake/patcher.rb +33 -0
  604. data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +47 -0
  605. data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +56 -0
  606. data/lib/datadog/tracing/contrib/redis/ext.rb +34 -0
  607. data/lib/datadog/tracing/contrib/redis/instrumentation.rb +51 -0
  608. data/lib/datadog/tracing/contrib/redis/integration.rb +78 -0
  609. data/lib/datadog/tracing/contrib/redis/patcher.rb +77 -0
  610. data/lib/datadog/tracing/contrib/redis/quantize.rb +80 -0
  611. data/lib/datadog/tracing/contrib/redis/tags.rb +68 -0
  612. data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +83 -0
  613. data/lib/datadog/tracing/contrib/redis/vendor/resolver.rb +160 -0
  614. data/lib/datadog/tracing/contrib/registerable.rb +50 -0
  615. data/lib/datadog/tracing/contrib/registry.rb +52 -0
  616. data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +43 -0
  617. data/lib/datadog/tracing/contrib/resque/ext.rb +21 -0
  618. data/lib/datadog/tracing/contrib/resque/integration.rb +46 -0
  619. data/lib/datadog/tracing/contrib/resque/patcher.rb +29 -0
  620. data/lib/datadog/tracing/contrib/resque/resque_job.rb +106 -0
  621. data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +54 -0
  622. data/lib/datadog/tracing/contrib/rest_client/ext.rb +27 -0
  623. data/lib/datadog/tracing/contrib/rest_client/integration.rb +41 -0
  624. data/lib/datadog/tracing/contrib/rest_client/patcher.rb +28 -0
  625. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +129 -0
  626. data/lib/datadog/tracing/contrib/roda/configuration/settings.rb +37 -0
  627. data/lib/datadog/tracing/contrib/roda/ext.rb +18 -0
  628. data/lib/datadog/tracing/contrib/roda/instrumentation.rb +76 -0
  629. data/lib/datadog/tracing/contrib/roda/integration.rb +45 -0
  630. data/lib/datadog/tracing/contrib/roda/patcher.rb +30 -0
  631. data/lib/datadog/tracing/contrib/semantic_logger/configuration/settings.rb +24 -0
  632. data/lib/datadog/tracing/contrib/semantic_logger/ext.rb +15 -0
  633. data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +35 -0
  634. data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +50 -0
  635. data/lib/datadog/tracing/contrib/semantic_logger/patcher.rb +29 -0
  636. data/lib/datadog/tracing/contrib/sequel/configuration/settings.rb +36 -0
  637. data/lib/datadog/tracing/contrib/sequel/database.rb +60 -0
  638. data/lib/datadog/tracing/contrib/sequel/dataset.rb +67 -0
  639. data/lib/datadog/tracing/contrib/sequel/ext.rb +22 -0
  640. data/lib/datadog/tracing/contrib/sequel/integration.rb +41 -0
  641. data/lib/datadog/tracing/contrib/sequel/patcher.rb +37 -0
  642. data/lib/datadog/tracing/contrib/sequel/utils.rb +88 -0
  643. data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +44 -0
  644. data/lib/datadog/tracing/contrib/shoryuken/ext.rb +26 -0
  645. data/lib/datadog/tracing/contrib/shoryuken/integration.rb +42 -0
  646. data/lib/datadog/tracing/contrib/shoryuken/patcher.rb +28 -0
  647. data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +65 -0
  648. data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +66 -0
  649. data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +52 -0
  650. data/lib/datadog/tracing/contrib/sidekiq/distributed/propagation.rb +38 -0
  651. data/lib/datadog/tracing/contrib/sidekiq/ext.rb +44 -0
  652. data/lib/datadog/tracing/contrib/sidekiq/integration.rb +59 -0
  653. data/lib/datadog/tracing/contrib/sidekiq/patcher.rb +90 -0
  654. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/heartbeat.rb +61 -0
  655. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/job_fetch.rb +36 -0
  656. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/redis_info.rb +34 -0
  657. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/scheduled_poller.rb +57 -0
  658. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/stop.rb +34 -0
  659. data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +118 -0
  660. data/lib/datadog/tracing/contrib/sidekiq/utils.rb +44 -0
  661. data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +43 -0
  662. data/lib/datadog/tracing/contrib/sinatra/env.rb +36 -0
  663. data/lib/datadog/tracing/contrib/sinatra/ext.rb +36 -0
  664. data/lib/datadog/tracing/contrib/sinatra/framework.rb +114 -0
  665. data/lib/datadog/tracing/contrib/sinatra/integration.rb +41 -0
  666. data/lib/datadog/tracing/contrib/sinatra/patcher.rb +75 -0
  667. data/lib/datadog/tracing/contrib/sinatra/tracer.rb +84 -0
  668. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +116 -0
  669. data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +42 -0
  670. data/lib/datadog/tracing/contrib/sneakers/ext.rb +26 -0
  671. data/lib/datadog/tracing/contrib/sneakers/integration.rb +44 -0
  672. data/lib/datadog/tracing/contrib/sneakers/patcher.rb +27 -0
  673. data/lib/datadog/tracing/contrib/sneakers/tracer.rb +60 -0
  674. data/lib/datadog/tracing/contrib/span_attribute_schema.rb +92 -0
  675. data/lib/datadog/tracing/contrib/status_code_matcher.rb +72 -0
  676. data/lib/datadog/tracing/contrib/stripe/configuration/settings.rb +36 -0
  677. data/lib/datadog/tracing/contrib/stripe/ext.rb +26 -0
  678. data/lib/datadog/tracing/contrib/stripe/integration.rb +43 -0
  679. data/lib/datadog/tracing/contrib/stripe/patcher.rb +28 -0
  680. data/lib/datadog/tracing/contrib/stripe/request.rb +67 -0
  681. data/lib/datadog/tracing/contrib/sucker_punch/configuration/settings.rb +38 -0
  682. data/lib/datadog/tracing/contrib/sucker_punch/exception_handler.rb +28 -0
  683. data/lib/datadog/tracing/contrib/sucker_punch/ext.rb +27 -0
  684. data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +102 -0
  685. data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +41 -0
  686. data/lib/datadog/tracing/contrib/sucker_punch/patcher.rb +35 -0
  687. data/lib/datadog/tracing/contrib/utils/database.rb +31 -0
  688. data/lib/datadog/tracing/contrib/utils/quantization/hash.rb +109 -0
  689. data/lib/datadog/tracing/contrib/utils/quantization/http.rb +177 -0
  690. data/lib/datadog/tracing/contrib.rb +81 -0
  691. data/lib/datadog/tracing/correlation.rb +128 -0
  692. data/lib/datadog/tracing/diagnostics/environment_logger.rb +165 -0
  693. data/lib/datadog/tracing/diagnostics/ext.rb +36 -0
  694. data/lib/datadog/tracing/diagnostics/health.rb +40 -0
  695. data/lib/datadog/tracing/distributed/b3_multi.rb +72 -0
  696. data/lib/datadog/tracing/distributed/b3_single.rb +68 -0
  697. data/lib/datadog/tracing/distributed/datadog.rb +199 -0
  698. data/lib/datadog/tracing/distributed/datadog_tags_codec.rb +84 -0
  699. data/lib/datadog/tracing/distributed/fetcher.rb +21 -0
  700. data/lib/datadog/tracing/distributed/headers/ext.rb +34 -0
  701. data/lib/datadog/tracing/distributed/helpers.rb +65 -0
  702. data/lib/datadog/tracing/distributed/none.rb +18 -0
  703. data/lib/datadog/tracing/distributed/propagation.rb +127 -0
  704. data/lib/datadog/tracing/distributed/trace_context.rb +415 -0
  705. data/lib/datadog/tracing/event.rb +74 -0
  706. data/lib/datadog/tracing/flush.rb +96 -0
  707. data/lib/datadog/tracing/metadata/analytics.rb +26 -0
  708. data/lib/datadog/tracing/metadata/errors.rb +24 -0
  709. data/lib/datadog/tracing/metadata/ext.rb +191 -0
  710. data/lib/datadog/tracing/metadata/tagging.rb +129 -0
  711. data/lib/datadog/tracing/metadata.rb +20 -0
  712. data/lib/datadog/tracing/pipeline/span_filter.rb +46 -0
  713. data/lib/datadog/tracing/pipeline/span_processor.rb +39 -0
  714. data/lib/datadog/tracing/pipeline.rb +61 -0
  715. data/lib/datadog/tracing/propagation/http.rb +14 -0
  716. data/lib/datadog/tracing/remote.rb +78 -0
  717. data/lib/datadog/tracing/runtime/metrics.rb +17 -0
  718. data/lib/datadog/tracing/sampling/all_sampler.rb +25 -0
  719. data/lib/datadog/tracing/sampling/ext.rb +56 -0
  720. data/lib/datadog/tracing/sampling/matcher.rb +68 -0
  721. data/lib/datadog/tracing/sampling/priority_sampler.rb +165 -0
  722. data/lib/datadog/tracing/sampling/rate_by_key_sampler.rb +94 -0
  723. data/lib/datadog/tracing/sampling/rate_by_service_sampler.rb +62 -0
  724. data/lib/datadog/tracing/sampling/rate_limiter.rb +186 -0
  725. data/lib/datadog/tracing/sampling/rate_sampler.rb +68 -0
  726. data/lib/datadog/tracing/sampling/rule.rb +72 -0
  727. data/lib/datadog/tracing/sampling/rule_sampler.rb +157 -0
  728. data/lib/datadog/tracing/sampling/sampler.rb +42 -0
  729. data/lib/datadog/tracing/sampling/span/ext.rb +25 -0
  730. data/lib/datadog/tracing/sampling/span/matcher.rb +89 -0
  731. data/lib/datadog/tracing/sampling/span/rule.rb +82 -0
  732. data/lib/datadog/tracing/sampling/span/rule_parser.rb +104 -0
  733. data/lib/datadog/tracing/sampling/span/sampler.rb +77 -0
  734. data/lib/datadog/tracing/span.rb +214 -0
  735. data/lib/datadog/tracing/span_operation.rb +505 -0
  736. data/lib/datadog/tracing/sync_writer.rb +67 -0
  737. data/lib/datadog/tracing/trace_digest.rb +177 -0
  738. data/lib/datadog/tracing/trace_operation.rb +486 -0
  739. data/lib/datadog/tracing/trace_segment.rb +220 -0
  740. data/lib/datadog/tracing/tracer.rb +541 -0
  741. data/lib/datadog/tracing/transport/http/api/instance.rb +37 -0
  742. data/lib/datadog/tracing/transport/http/api/spec.rb +19 -0
  743. data/lib/datadog/tracing/transport/http/api.rb +43 -0
  744. data/lib/datadog/tracing/transport/http/builder.rb +162 -0
  745. data/lib/datadog/tracing/transport/http/client.rb +57 -0
  746. data/lib/datadog/tracing/transport/http/statistics.rb +47 -0
  747. data/lib/datadog/tracing/transport/http/traces.rb +152 -0
  748. data/lib/datadog/tracing/transport/http.rb +124 -0
  749. data/lib/datadog/tracing/transport/io/client.rb +89 -0
  750. data/lib/datadog/tracing/transport/io/response.rb +27 -0
  751. data/lib/datadog/tracing/transport/io/traces.rb +101 -0
  752. data/lib/datadog/tracing/transport/io.rb +30 -0
  753. data/lib/datadog/tracing/transport/serializable_trace.rb +126 -0
  754. data/lib/datadog/tracing/transport/statistics.rb +77 -0
  755. data/lib/datadog/tracing/transport/trace_formatter.rb +209 -0
  756. data/lib/datadog/tracing/transport/traces.rb +224 -0
  757. data/lib/datadog/tracing/utils.rb +83 -0
  758. data/lib/datadog/tracing/workers/trace_writer.rb +194 -0
  759. data/lib/datadog/tracing/workers.rb +123 -0
  760. data/lib/datadog/tracing/writer.rb +186 -0
  761. data/lib/datadog/tracing.rb +142 -0
  762. data/lib/ddtrace/auto_instrument.rb +15 -4
  763. data/lib/ddtrace/auto_instrument_base.rb +2 -1
  764. data/lib/ddtrace/profiling/preload.rb +2 -4
  765. data/lib/ddtrace/transport/ext.rb +47 -0
  766. data/lib/ddtrace/version.rb +17 -16
  767. data/lib/ddtrace.rb +9 -50
  768. metadata +795 -545
  769. data/.editorconfig +0 -22
  770. data/.gitignore +0 -67
  771. data/.yardopts +0 -5
  772. data/CONTRIBUTING.md +0 -81
  773. data/ddtrace.gemspec +0 -56
  774. data/docs/DevelopmentGuide.md +0 -259
  775. data/docs/GettingStarted.md +0 -2626
  776. data/docs/ProfilingDevelopment.md +0 -107
  777. data/lib/datadog/ci/configuration/components.rb +0 -31
  778. data/lib/datadog/ci/configuration/settings.rb +0 -37
  779. data/lib/datadog/ci/context_flush.rb +0 -29
  780. data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +0 -31
  781. data/lib/datadog/ci/contrib/cucumber/ext.rb +0 -20
  782. data/lib/datadog/ci/contrib/cucumber/formatter.rb +0 -99
  783. data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +0 -27
  784. data/lib/datadog/ci/contrib/cucumber/integration.rb +0 -48
  785. data/lib/datadog/ci/contrib/cucumber/patcher.rb +0 -26
  786. data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +0 -31
  787. data/lib/datadog/ci/contrib/rspec/example.rb +0 -75
  788. data/lib/datadog/ci/contrib/rspec/ext.rb +0 -19
  789. data/lib/datadog/ci/contrib/rspec/integration.rb +0 -49
  790. data/lib/datadog/ci/contrib/rspec/patcher.rb +0 -26
  791. data/lib/datadog/ci/ext/app_types.rb +0 -10
  792. data/lib/datadog/ci/ext/environment.rb +0 -485
  793. data/lib/datadog/ci/ext/settings.rb +0 -11
  794. data/lib/datadog/ci/ext/test.rb +0 -36
  795. data/lib/datadog/ci/extensions.rb +0 -18
  796. data/lib/datadog/ci/test.rb +0 -81
  797. data/lib/datadog/ci.rb +0 -17
  798. data/lib/datadog/contrib.rb +0 -71
  799. data/lib/ddtrace/analytics.rb +0 -39
  800. data/lib/ddtrace/buffer.rb +0 -340
  801. data/lib/ddtrace/chunker.rb +0 -35
  802. data/lib/ddtrace/configuration/agent_settings_resolver.rb +0 -309
  803. data/lib/ddtrace/configuration/base.rb +0 -82
  804. data/lib/ddtrace/configuration/components.rb +0 -292
  805. data/lib/ddtrace/configuration/dependency_resolver.rb +0 -25
  806. data/lib/ddtrace/configuration/option.rb +0 -65
  807. data/lib/ddtrace/configuration/option_definition.rb +0 -122
  808. data/lib/ddtrace/configuration/option_definition_set.rb +0 -19
  809. data/lib/ddtrace/configuration/option_set.rb +0 -7
  810. data/lib/ddtrace/configuration/options.rb +0 -112
  811. data/lib/ddtrace/configuration/pin_setup.rb +0 -32
  812. data/lib/ddtrace/configuration/settings.rb +0 -413
  813. data/lib/ddtrace/configuration.rb +0 -195
  814. data/lib/ddtrace/context.rb +0 -334
  815. data/lib/ddtrace/context_flush.rb +0 -82
  816. data/lib/ddtrace/context_provider.rb +0 -62
  817. data/lib/ddtrace/contrib/action_cable/configuration/settings.rb +0 -31
  818. data/lib/ddtrace/contrib/action_cable/event.rb +0 -67
  819. data/lib/ddtrace/contrib/action_cable/events/broadcast.rb +0 -50
  820. data/lib/ddtrace/contrib/action_cable/events/perform_action.rb +0 -56
  821. data/lib/ddtrace/contrib/action_cable/events/transmit.rb +0 -51
  822. data/lib/ddtrace/contrib/action_cable/events.rb +0 -34
  823. data/lib/ddtrace/contrib/action_cable/ext.rb +0 -27
  824. data/lib/ddtrace/contrib/action_cable/instrumentation.rb +0 -78
  825. data/lib/ddtrace/contrib/action_cable/integration.rb +0 -46
  826. data/lib/ddtrace/contrib/action_cable/patcher.rb +0 -29
  827. data/lib/ddtrace/contrib/action_mailer/configuration/settings.rb +0 -32
  828. data/lib/ddtrace/contrib/action_mailer/event.rb +0 -50
  829. data/lib/ddtrace/contrib/action_mailer/events/deliver.rb +0 -54
  830. data/lib/ddtrace/contrib/action_mailer/events/process.rb +0 -41
  831. data/lib/ddtrace/contrib/action_mailer/events.rb +0 -31
  832. data/lib/ddtrace/contrib/action_mailer/ext.rb +0 -32
  833. data/lib/ddtrace/contrib/action_mailer/integration.rb +0 -45
  834. data/lib/ddtrace/contrib/action_mailer/patcher.rb +0 -27
  835. data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +0 -157
  836. data/lib/ddtrace/contrib/action_pack/action_controller/patcher.rb +0 -26
  837. data/lib/ddtrace/contrib/action_pack/configuration/settings.rb +0 -33
  838. data/lib/ddtrace/contrib/action_pack/ext.rb +0 -20
  839. data/lib/ddtrace/contrib/action_pack/integration.rb +0 -46
  840. data/lib/ddtrace/contrib/action_pack/patcher.rb +0 -24
  841. data/lib/ddtrace/contrib/action_pack/utils.rb +0 -37
  842. data/lib/ddtrace/contrib/action_view/configuration/settings.rb +0 -32
  843. data/lib/ddtrace/contrib/action_view/event.rb +0 -36
  844. data/lib/ddtrace/contrib/action_view/events/render_partial.rb +0 -47
  845. data/lib/ddtrace/contrib/action_view/events/render_template.rb +0 -50
  846. data/lib/ddtrace/contrib/action_view/events.rb +0 -31
  847. data/lib/ddtrace/contrib/action_view/ext.rb +0 -21
  848. data/lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb +0 -75
  849. data/lib/ddtrace/contrib/action_view/instrumentation/template_renderer.rb +0 -168
  850. data/lib/ddtrace/contrib/action_view/integration.rb +0 -53
  851. data/lib/ddtrace/contrib/action_view/patcher.rb +0 -48
  852. data/lib/ddtrace/contrib/action_view/utils.rb +0 -33
  853. data/lib/ddtrace/contrib/active_job/configuration/settings.rb +0 -33
  854. data/lib/ddtrace/contrib/active_job/event.rb +0 -54
  855. data/lib/ddtrace/contrib/active_job/events/discard.rb +0 -46
  856. data/lib/ddtrace/contrib/active_job/events/enqueue.rb +0 -45
  857. data/lib/ddtrace/contrib/active_job/events/enqueue_at.rb +0 -45
  858. data/lib/ddtrace/contrib/active_job/events/enqueue_retry.rb +0 -47
  859. data/lib/ddtrace/contrib/active_job/events/perform.rb +0 -45
  860. data/lib/ddtrace/contrib/active_job/events/retry_stopped.rb +0 -46
  861. data/lib/ddtrace/contrib/active_job/events.rb +0 -39
  862. data/lib/ddtrace/contrib/active_job/ext.rb +0 -32
  863. data/lib/ddtrace/contrib/active_job/integration.rb +0 -46
  864. data/lib/ddtrace/contrib/active_job/log_injection.rb +0 -21
  865. data/lib/ddtrace/contrib/active_job/patcher.rb +0 -33
  866. data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +0 -31
  867. data/lib/ddtrace/contrib/active_model_serializers/event.rb +0 -69
  868. data/lib/ddtrace/contrib/active_model_serializers/events/render.rb +0 -33
  869. data/lib/ddtrace/contrib/active_model_serializers/events/serialize.rb +0 -36
  870. data/lib/ddtrace/contrib/active_model_serializers/events.rb +0 -31
  871. data/lib/ddtrace/contrib/active_model_serializers/ext.rb +0 -21
  872. data/lib/ddtrace/contrib/active_model_serializers/integration.rb +0 -41
  873. data/lib/ddtrace/contrib/active_model_serializers/patcher.rb +0 -30
  874. data/lib/ddtrace/contrib/active_record/configuration/makara_resolver.rb +0 -31
  875. data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +0 -135
  876. data/lib/ddtrace/contrib/active_record/configuration/settings.rb +0 -36
  877. data/lib/ddtrace/contrib/active_record/event.rb +0 -31
  878. data/lib/ddtrace/contrib/active_record/events/instantiation.rb +0 -61
  879. data/lib/ddtrace/contrib/active_record/events/sql.rb +0 -69
  880. data/lib/ddtrace/contrib/active_record/events.rb +0 -31
  881. data/lib/ddtrace/contrib/active_record/ext.rb +0 -25
  882. data/lib/ddtrace/contrib/active_record/integration.rb +0 -54
  883. data/lib/ddtrace/contrib/active_record/patcher.rb +0 -24
  884. data/lib/ddtrace/contrib/active_record/utils.rb +0 -124
  885. data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +0 -259
  886. data/lib/ddtrace/contrib/active_support/cache/patcher.rb +0 -70
  887. data/lib/ddtrace/contrib/active_support/cache/redis.rb +0 -44
  888. data/lib/ddtrace/contrib/active_support/configuration/settings.rb +0 -31
  889. data/lib/ddtrace/contrib/active_support/ext.rb +0 -28
  890. data/lib/ddtrace/contrib/active_support/integration.rb +0 -47
  891. data/lib/ddtrace/contrib/active_support/notifications/event.rb +0 -76
  892. data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +0 -68
  893. data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +0 -164
  894. data/lib/ddtrace/contrib/active_support/patcher.rb +0 -24
  895. data/lib/ddtrace/contrib/analytics.rb +0 -25
  896. data/lib/ddtrace/contrib/auto_instrument.rb +0 -48
  897. data/lib/ddtrace/contrib/aws/configuration/settings.rb +0 -31
  898. data/lib/ddtrace/contrib/aws/ext.rb +0 -24
  899. data/lib/ddtrace/contrib/aws/instrumentation.rb +0 -91
  900. data/lib/ddtrace/contrib/aws/integration.rb +0 -43
  901. data/lib/ddtrace/contrib/aws/parsed_context.rb +0 -57
  902. data/lib/ddtrace/contrib/aws/patcher.rb +0 -54
  903. data/lib/ddtrace/contrib/aws/services.rb +0 -119
  904. data/lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb +0 -21
  905. data/lib/ddtrace/contrib/concurrent_ruby/context_composite_executor_service.rb +0 -42
  906. data/lib/ddtrace/contrib/concurrent_ruby/ext.rb +0 -13
  907. data/lib/ddtrace/contrib/concurrent_ruby/future_patch.rb +0 -24
  908. data/lib/ddtrace/contrib/concurrent_ruby/integration.rb +0 -39
  909. data/lib/ddtrace/contrib/concurrent_ruby/patcher.rb +0 -30
  910. data/lib/ddtrace/contrib/configurable.rb +0 -103
  911. data/lib/ddtrace/contrib/configuration/resolver.rb +0 -82
  912. data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +0 -40
  913. data/lib/ddtrace/contrib/configuration/settings.rb +0 -56
  914. data/lib/ddtrace/contrib/dalli/configuration/settings.rb +0 -31
  915. data/lib/ddtrace/contrib/dalli/ext.rb +0 -21
  916. data/lib/ddtrace/contrib/dalli/instrumentation.rb +0 -55
  917. data/lib/ddtrace/contrib/dalli/integration.rb +0 -39
  918. data/lib/ddtrace/contrib/dalli/patcher.rb +0 -26
  919. data/lib/ddtrace/contrib/dalli/quantize.rb +0 -23
  920. data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +0 -33
  921. data/lib/ddtrace/contrib/delayed_job/ext.rb +0 -24
  922. data/lib/ddtrace/contrib/delayed_job/integration.rb +0 -39
  923. data/lib/ddtrace/contrib/delayed_job/patcher.rb +0 -29
  924. data/lib/ddtrace/contrib/delayed_job/plugin.rb +0 -85
  925. data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +0 -32
  926. data/lib/ddtrace/contrib/elasticsearch/ext.rb +0 -23
  927. data/lib/ddtrace/contrib/elasticsearch/integration.rb +0 -40
  928. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +0 -123
  929. data/lib/ddtrace/contrib/elasticsearch/quantize.rb +0 -84
  930. data/lib/ddtrace/contrib/ethon/configuration/settings.rb +0 -33
  931. data/lib/ddtrace/contrib/ethon/easy_patch.rb +0 -152
  932. data/lib/ddtrace/contrib/ethon/ext.rb +0 -20
  933. data/lib/ddtrace/contrib/ethon/integration.rb +0 -44
  934. data/lib/ddtrace/contrib/ethon/multi_patch.rb +0 -85
  935. data/lib/ddtrace/contrib/ethon/patcher.rb +0 -27
  936. data/lib/ddtrace/contrib/excon/configuration/settings.rb +0 -34
  937. data/lib/ddtrace/contrib/excon/ext.rb +0 -18
  938. data/lib/ddtrace/contrib/excon/integration.rb +0 -44
  939. data/lib/ddtrace/contrib/excon/middleware.rb +0 -164
  940. data/lib/ddtrace/contrib/excon/patcher.rb +0 -28
  941. data/lib/ddtrace/contrib/extensions.rb +0 -169
  942. data/lib/ddtrace/contrib/faraday/configuration/settings.rb +0 -39
  943. data/lib/ddtrace/contrib/faraday/connection.rb +0 -19
  944. data/lib/ddtrace/contrib/faraday/ext.rb +0 -18
  945. data/lib/ddtrace/contrib/faraday/integration.rb +0 -44
  946. data/lib/ddtrace/contrib/faraday/middleware.rb +0 -86
  947. data/lib/ddtrace/contrib/faraday/patcher.rb +0 -54
  948. data/lib/ddtrace/contrib/faraday/rack_builder.rb +0 -19
  949. data/lib/ddtrace/contrib/grape/configuration/settings.rb +0 -39
  950. data/lib/ddtrace/contrib/grape/endpoint.rb +0 -246
  951. data/lib/ddtrace/contrib/grape/ext.rb +0 -24
  952. data/lib/ddtrace/contrib/grape/instrumentation.rb +0 -34
  953. data/lib/ddtrace/contrib/grape/integration.rb +0 -40
  954. data/lib/ddtrace/contrib/grape/patcher.rb +0 -32
  955. data/lib/ddtrace/contrib/graphql/configuration/settings.rb +0 -33
  956. data/lib/ddtrace/contrib/graphql/ext.rb +0 -17
  957. data/lib/ddtrace/contrib/graphql/integration.rb +0 -40
  958. data/lib/ddtrace/contrib/graphql/patcher.rb +0 -61
  959. data/lib/ddtrace/contrib/grpc/configuration/settings.rb +0 -32
  960. data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +0 -59
  961. data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +0 -80
  962. data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +0 -79
  963. data/lib/ddtrace/contrib/grpc/ext.rb +0 -19
  964. data/lib/ddtrace/contrib/grpc/integration.rb +0 -39
  965. data/lib/ddtrace/contrib/grpc/intercept_with_datadog.rb +0 -50
  966. data/lib/ddtrace/contrib/grpc/patcher.rb +0 -34
  967. data/lib/ddtrace/contrib/http/circuit_breaker.rb +0 -38
  968. data/lib/ddtrace/contrib/http/configuration/settings.rb +0 -33
  969. data/lib/ddtrace/contrib/http/ext.rb +0 -18
  970. data/lib/ddtrace/contrib/http/instrumentation.rb +0 -180
  971. data/lib/ddtrace/contrib/http/integration.rb +0 -46
  972. data/lib/ddtrace/contrib/http/patcher.rb +0 -27
  973. data/lib/ddtrace/contrib/http_annotation_helper.rb +0 -11
  974. data/lib/ddtrace/contrib/httpclient/configuration/settings.rb +0 -33
  975. data/lib/ddtrace/contrib/httpclient/ext.rb +0 -18
  976. data/lib/ddtrace/contrib/httpclient/instrumentation.rb +0 -148
  977. data/lib/ddtrace/contrib/httpclient/integration.rb +0 -44
  978. data/lib/ddtrace/contrib/httpclient/patcher.rb +0 -39
  979. data/lib/ddtrace/contrib/httprb/configuration/settings.rb +0 -33
  980. data/lib/ddtrace/contrib/httprb/ext.rb +0 -18
  981. data/lib/ddtrace/contrib/httprb/instrumentation.rb +0 -158
  982. data/lib/ddtrace/contrib/httprb/integration.rb +0 -44
  983. data/lib/ddtrace/contrib/httprb/patcher.rb +0 -39
  984. data/lib/ddtrace/contrib/integration.rb +0 -17
  985. data/lib/ddtrace/contrib/kafka/configuration/settings.rb +0 -31
  986. data/lib/ddtrace/contrib/kafka/consumer_event.rb +0 -15
  987. data/lib/ddtrace/contrib/kafka/consumer_group_event.rb +0 -15
  988. data/lib/ddtrace/contrib/kafka/event.rb +0 -52
  989. data/lib/ddtrace/contrib/kafka/events/connection/request.rb +0 -35
  990. data/lib/ddtrace/contrib/kafka/events/consumer/process_batch.rb +0 -42
  991. data/lib/ddtrace/contrib/kafka/events/consumer/process_message.rb +0 -40
  992. data/lib/ddtrace/contrib/kafka/events/consumer_group/heartbeat.rb +0 -40
  993. data/lib/ddtrace/contrib/kafka/events/consumer_group/join_group.rb +0 -30
  994. data/lib/ddtrace/contrib/kafka/events/consumer_group/leave_group.rb +0 -30
  995. data/lib/ddtrace/contrib/kafka/events/consumer_group/sync_group.rb +0 -30
  996. data/lib/ddtrace/contrib/kafka/events/produce_operation/send_messages.rb +0 -33
  997. data/lib/ddtrace/contrib/kafka/events/producer/deliver_messages.rb +0 -36
  998. data/lib/ddtrace/contrib/kafka/events.rb +0 -45
  999. data/lib/ddtrace/contrib/kafka/ext.rb +0 -42
  1000. data/lib/ddtrace/contrib/kafka/integration.rb +0 -40
  1001. data/lib/ddtrace/contrib/kafka/patcher.rb +0 -27
  1002. data/lib/ddtrace/contrib/lograge/configuration/settings.rb +0 -19
  1003. data/lib/ddtrace/contrib/lograge/ext.rb +0 -11
  1004. data/lib/ddtrace/contrib/lograge/instrumentation.rb +0 -39
  1005. data/lib/ddtrace/contrib/lograge/integration.rb +0 -46
  1006. data/lib/ddtrace/contrib/lograge/patcher.rb +0 -26
  1007. data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +0 -34
  1008. data/lib/ddtrace/contrib/mongodb/ext.rb +0 -24
  1009. data/lib/ddtrace/contrib/mongodb/instrumentation.rb +0 -70
  1010. data/lib/ddtrace/contrib/mongodb/integration.rb +0 -44
  1011. data/lib/ddtrace/contrib/mongodb/parsers.rb +0 -69
  1012. data/lib/ddtrace/contrib/mongodb/patcher.rb +0 -32
  1013. data/lib/ddtrace/contrib/mongodb/subscribers.rb +0 -112
  1014. data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +0 -31
  1015. data/lib/ddtrace/contrib/mysql2/ext.rb +0 -19
  1016. data/lib/ddtrace/contrib/mysql2/instrumentation.rb +0 -65
  1017. data/lib/ddtrace/contrib/mysql2/integration.rb +0 -39
  1018. data/lib/ddtrace/contrib/mysql2/patcher.rb +0 -28
  1019. data/lib/ddtrace/contrib/patchable.rb +0 -71
  1020. data/lib/ddtrace/contrib/patcher.rb +0 -66
  1021. data/lib/ddtrace/contrib/presto/configuration/settings.rb +0 -31
  1022. data/lib/ddtrace/contrib/presto/ext.rb +0 -29
  1023. data/lib/ddtrace/contrib/presto/instrumentation.rb +0 -111
  1024. data/lib/ddtrace/contrib/presto/integration.rb +0 -39
  1025. data/lib/ddtrace/contrib/presto/patcher.rb +0 -34
  1026. data/lib/ddtrace/contrib/qless/configuration/settings.rb +0 -36
  1027. data/lib/ddtrace/contrib/qless/ext.rb +0 -21
  1028. data/lib/ddtrace/contrib/qless/integration.rb +0 -39
  1029. data/lib/ddtrace/contrib/qless/patcher.rb +0 -35
  1030. data/lib/ddtrace/contrib/qless/qless_job.rb +0 -74
  1031. data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +0 -34
  1032. data/lib/ddtrace/contrib/que/configuration/settings.rb +0 -44
  1033. data/lib/ddtrace/contrib/que/ext.rb +0 -31
  1034. data/lib/ddtrace/contrib/que/integration.rb +0 -43
  1035. data/lib/ddtrace/contrib/que/patcher.rb +0 -25
  1036. data/lib/ddtrace/contrib/que/tracer.rb +0 -58
  1037. data/lib/ddtrace/contrib/racecar/configuration/settings.rb +0 -31
  1038. data/lib/ddtrace/contrib/racecar/event.rb +0 -77
  1039. data/lib/ddtrace/contrib/racecar/events/batch.rb +0 -28
  1040. data/lib/ddtrace/contrib/racecar/events/consume.rb +0 -28
  1041. data/lib/ddtrace/contrib/racecar/events/message.rb +0 -28
  1042. data/lib/ddtrace/contrib/racecar/events.rb +0 -33
  1043. data/lib/ddtrace/contrib/racecar/ext.rb +0 -26
  1044. data/lib/ddtrace/contrib/racecar/integration.rb +0 -40
  1045. data/lib/ddtrace/contrib/racecar/patcher.rb +0 -27
  1046. data/lib/ddtrace/contrib/rack/configuration/settings.rb +0 -47
  1047. data/lib/ddtrace/contrib/rack/ext.rb +0 -22
  1048. data/lib/ddtrace/contrib/rack/integration.rb +0 -46
  1049. data/lib/ddtrace/contrib/rack/middlewares.rb +0 -288
  1050. data/lib/ddtrace/contrib/rack/patcher.rb +0 -106
  1051. data/lib/ddtrace/contrib/rack/request_queue.rb +0 -45
  1052. data/lib/ddtrace/contrib/rails/auto_instrument_railtie.rb +0 -10
  1053. data/lib/ddtrace/contrib/rails/configuration/settings.rb +0 -101
  1054. data/lib/ddtrace/contrib/rails/ext.rb +0 -18
  1055. data/lib/ddtrace/contrib/rails/framework.rb +0 -172
  1056. data/lib/ddtrace/contrib/rails/integration.rb +0 -45
  1057. data/lib/ddtrace/contrib/rails/log_injection.rb +0 -42
  1058. data/lib/ddtrace/contrib/rails/middlewares.rb +0 -44
  1059. data/lib/ddtrace/contrib/rails/patcher.rb +0 -119
  1060. data/lib/ddtrace/contrib/rails/railtie.rb +0 -18
  1061. data/lib/ddtrace/contrib/rails/utils.rb +0 -25
  1062. data/lib/ddtrace/contrib/rake/configuration/settings.rb +0 -32
  1063. data/lib/ddtrace/contrib/rake/ext.rb +0 -22
  1064. data/lib/ddtrace/contrib/rake/instrumentation.rb +0 -91
  1065. data/lib/ddtrace/contrib/rake/integration.rb +0 -39
  1066. data/lib/ddtrace/contrib/rake/patcher.rb +0 -31
  1067. data/lib/ddtrace/contrib/redis/configuration/resolver.rb +0 -46
  1068. data/lib/ddtrace/contrib/redis/configuration/settings.rb +0 -36
  1069. data/lib/ddtrace/contrib/redis/ext.rb +0 -23
  1070. data/lib/ddtrace/contrib/redis/instrumentation.rb +0 -90
  1071. data/lib/ddtrace/contrib/redis/integration.rb +0 -43
  1072. data/lib/ddtrace/contrib/redis/patcher.rb +0 -33
  1073. data/lib/ddtrace/contrib/redis/quantize.rb +0 -76
  1074. data/lib/ddtrace/contrib/redis/tags.rb +0 -47
  1075. data/lib/ddtrace/contrib/redis/vendor/resolver.rb +0 -159
  1076. data/lib/ddtrace/contrib/registerable.rb +0 -33
  1077. data/lib/ddtrace/contrib/registry.rb +0 -43
  1078. data/lib/ddtrace/contrib/resque/configuration/settings.rb +0 -49
  1079. data/lib/ddtrace/contrib/resque/ext.rb +0 -18
  1080. data/lib/ddtrace/contrib/resque/integration.rb +0 -44
  1081. data/lib/ddtrace/contrib/resque/patcher.rb +0 -30
  1082. data/lib/ddtrace/contrib/resque/resque_job.rb +0 -104
  1083. data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +0 -32
  1084. data/lib/ddtrace/contrib/rest_client/ext.rb +0 -18
  1085. data/lib/ddtrace/contrib/rest_client/integration.rb +0 -39
  1086. data/lib/ddtrace/contrib/rest_client/patcher.rb +0 -25
  1087. data/lib/ddtrace/contrib/rest_client/request_patch.rb +0 -92
  1088. data/lib/ddtrace/contrib/semantic_logger/configuration/settings.rb +0 -19
  1089. data/lib/ddtrace/contrib/semantic_logger/ext.rb +0 -11
  1090. data/lib/ddtrace/contrib/semantic_logger/instrumentation.rb +0 -43
  1091. data/lib/ddtrace/contrib/semantic_logger/integration.rb +0 -48
  1092. data/lib/ddtrace/contrib/semantic_logger/patcher.rb +0 -26
  1093. data/lib/ddtrace/contrib/sequel/configuration/settings.rb +0 -29
  1094. data/lib/ddtrace/contrib/sequel/database.rb +0 -64
  1095. data/lib/ddtrace/contrib/sequel/dataset.rb +0 -64
  1096. data/lib/ddtrace/contrib/sequel/ext.rb +0 -20
  1097. data/lib/ddtrace/contrib/sequel/integration.rb +0 -39
  1098. data/lib/ddtrace/contrib/sequel/patcher.rb +0 -34
  1099. data/lib/ddtrace/contrib/sequel/utils.rb +0 -75
  1100. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +0 -32
  1101. data/lib/ddtrace/contrib/shoryuken/ext.rb +0 -22
  1102. data/lib/ddtrace/contrib/shoryuken/integration.rb +0 -40
  1103. data/lib/ddtrace/contrib/shoryuken/patcher.rb +0 -25
  1104. data/lib/ddtrace/contrib/shoryuken/tracer.rb +0 -56
  1105. data/lib/ddtrace/contrib/sidekiq/client_tracer.rb +0 -44
  1106. data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +0 -38
  1107. data/lib/ddtrace/contrib/sidekiq/ext.rb +0 -31
  1108. data/lib/ddtrace/contrib/sidekiq/integration.rb +0 -49
  1109. data/lib/ddtrace/contrib/sidekiq/patcher.rb +0 -68
  1110. data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/heartbeat.rb +0 -30
  1111. data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/job_fetch.rb +0 -30
  1112. data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/scheduled_push.rb +0 -29
  1113. data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +0 -66
  1114. data/lib/ddtrace/contrib/sidekiq/tracing.rb +0 -45
  1115. data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +0 -40
  1116. data/lib/ddtrace/contrib/sinatra/env.rb +0 -59
  1117. data/lib/ddtrace/contrib/sinatra/ext.rb +0 -28
  1118. data/lib/ddtrace/contrib/sinatra/headers.rb +0 -30
  1119. data/lib/ddtrace/contrib/sinatra/integration.rb +0 -39
  1120. data/lib/ddtrace/contrib/sinatra/patcher.rb +0 -30
  1121. data/lib/ddtrace/contrib/sinatra/tracer.rb +0 -150
  1122. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +0 -112
  1123. data/lib/ddtrace/contrib/sneakers/configuration/settings.rb +0 -34
  1124. data/lib/ddtrace/contrib/sneakers/ext.rb +0 -23
  1125. data/lib/ddtrace/contrib/sneakers/integration.rb +0 -42
  1126. data/lib/ddtrace/contrib/sneakers/patcher.rb +0 -25
  1127. data/lib/ddtrace/contrib/sneakers/tracer.rb +0 -54
  1128. data/lib/ddtrace/contrib/status_code_matcher.rb +0 -70
  1129. data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +0 -31
  1130. data/lib/ddtrace/contrib/sucker_punch/exception_handler.rb +0 -25
  1131. data/lib/ddtrace/contrib/sucker_punch/ext.rb +0 -22
  1132. data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +0 -89
  1133. data/lib/ddtrace/contrib/sucker_punch/integration.rb +0 -39
  1134. data/lib/ddtrace/contrib/sucker_punch/patcher.rb +0 -44
  1135. data/lib/ddtrace/correlation.rb +0 -40
  1136. data/lib/ddtrace/diagnostics/environment_logger.rb +0 -280
  1137. data/lib/ddtrace/diagnostics/health.rb +0 -34
  1138. data/lib/ddtrace/distributed_tracing/headers/b3.rb +0 -45
  1139. data/lib/ddtrace/distributed_tracing/headers/b3_single.rb +0 -57
  1140. data/lib/ddtrace/distributed_tracing/headers/datadog.rb +0 -43
  1141. data/lib/ddtrace/distributed_tracing/headers/headers.rb +0 -72
  1142. data/lib/ddtrace/distributed_tracing/headers/helpers.rb +0 -44
  1143. data/lib/ddtrace/encoding.rb +0 -72
  1144. data/lib/ddtrace/error.rb +0 -97
  1145. data/lib/ddtrace/event.rb +0 -53
  1146. data/lib/ddtrace/ext/analytics.rb +0 -13
  1147. data/lib/ddtrace/ext/app_types.rb +0 -12
  1148. data/lib/ddtrace/ext/correlation.rb +0 -12
  1149. data/lib/ddtrace/ext/diagnostics.rb +0 -37
  1150. data/lib/ddtrace/ext/distributed.rb +0 -40
  1151. data/lib/ddtrace/ext/environment.rb +0 -24
  1152. data/lib/ddtrace/ext/errors.rb +0 -11
  1153. data/lib/ddtrace/ext/forced_tracing.rb +0 -26
  1154. data/lib/ddtrace/ext/git.rb +0 -32
  1155. data/lib/ddtrace/ext/http.rb +0 -47
  1156. data/lib/ddtrace/ext/integration.rb +0 -9
  1157. data/lib/ddtrace/ext/manual_tracing.rb +0 -10
  1158. data/lib/ddtrace/ext/metrics.rb +0 -16
  1159. data/lib/ddtrace/ext/net.rb +0 -11
  1160. data/lib/ddtrace/ext/priority.rb +0 -19
  1161. data/lib/ddtrace/ext/profiling.rb +0 -53
  1162. data/lib/ddtrace/ext/runtime.rb +0 -25
  1163. data/lib/ddtrace/ext/sampling.rb +0 -17
  1164. data/lib/ddtrace/ext/sql.rb +0 -9
  1165. data/lib/ddtrace/ext/test.rb +0 -9
  1166. data/lib/ddtrace/ext/transport.rb +0 -32
  1167. data/lib/ddtrace/forced_tracing.rb +0 -39
  1168. data/lib/ddtrace/logger.rb +0 -41
  1169. data/lib/ddtrace/metrics.rb +0 -282
  1170. data/lib/ddtrace/opentelemetry/extensions.rb +0 -14
  1171. data/lib/ddtrace/opentelemetry/span.rb +0 -34
  1172. data/lib/ddtrace/opentracer/binary_propagator.rb +0 -25
  1173. data/lib/ddtrace/opentracer/carrier.rb +0 -7
  1174. data/lib/ddtrace/opentracer/distributed_headers.rb +0 -56
  1175. data/lib/ddtrace/opentracer/global_tracer.rb +0 -16
  1176. data/lib/ddtrace/opentracer/propagator.rb +0 -23
  1177. data/lib/ddtrace/opentracer/rack_propagator.rb +0 -61
  1178. data/lib/ddtrace/opentracer/scope.rb +0 -16
  1179. data/lib/ddtrace/opentracer/scope_manager.rb +0 -7
  1180. data/lib/ddtrace/opentracer/span.rb +0 -95
  1181. data/lib/ddtrace/opentracer/span_context.rb +0 -15
  1182. data/lib/ddtrace/opentracer/span_context_factory.rb +0 -24
  1183. data/lib/ddtrace/opentracer/text_map_propagator.rb +0 -76
  1184. data/lib/ddtrace/opentracer/thread_local_scope.rb +0 -32
  1185. data/lib/ddtrace/opentracer/thread_local_scope_manager.rb +0 -41
  1186. data/lib/ddtrace/opentracer/tracer.rb +0 -209
  1187. data/lib/ddtrace/opentracer.rb +0 -22
  1188. data/lib/ddtrace/patcher.rb +0 -69
  1189. data/lib/ddtrace/pin.rb +0 -86
  1190. data/lib/ddtrace/pipeline/span_filter.rb +0 -39
  1191. data/lib/ddtrace/pipeline/span_processor.rb +0 -21
  1192. data/lib/ddtrace/pipeline.rb +0 -47
  1193. data/lib/ddtrace/profiling/backtrace_location.rb +0 -33
  1194. data/lib/ddtrace/profiling/buffer.rb +0 -42
  1195. data/lib/ddtrace/profiling/collectors/stack.rb +0 -297
  1196. data/lib/ddtrace/profiling/encoding/profile.rb +0 -46
  1197. data/lib/ddtrace/profiling/event.rb +0 -14
  1198. data/lib/ddtrace/profiling/events/stack.rb +0 -81
  1199. data/lib/ddtrace/profiling/exporter.rb +0 -24
  1200. data/lib/ddtrace/profiling/ext/forking.rb +0 -98
  1201. data/lib/ddtrace/profiling/flush.rb +0 -44
  1202. data/lib/ddtrace/profiling/native_extension.rb +0 -40
  1203. data/lib/ddtrace/profiling/pprof/builder.rb +0 -126
  1204. data/lib/ddtrace/profiling/pprof/converter.rb +0 -103
  1205. data/lib/ddtrace/profiling/pprof/message_set.rb +0 -15
  1206. data/lib/ddtrace/profiling/pprof/payload.rb +0 -19
  1207. data/lib/ddtrace/profiling/pprof/pprof.proto +0 -212
  1208. data/lib/ddtrace/profiling/pprof/pprof_pb.rb +0 -82
  1209. data/lib/ddtrace/profiling/pprof/stack_sample.rb +0 -140
  1210. data/lib/ddtrace/profiling/pprof/string_table.rb +0 -11
  1211. data/lib/ddtrace/profiling/pprof/template.rb +0 -119
  1212. data/lib/ddtrace/profiling/profiler.rb +0 -31
  1213. data/lib/ddtrace/profiling/recorder.rb +0 -96
  1214. data/lib/ddtrace/profiling/scheduler.rb +0 -150
  1215. data/lib/ddtrace/profiling/tasks/setup.rb +0 -90
  1216. data/lib/ddtrace/profiling/trace_identifiers/ddtrace.rb +0 -42
  1217. data/lib/ddtrace/profiling/trace_identifiers/helper.rb +0 -46
  1218. data/lib/ddtrace/profiling/transport/client.rb +0 -15
  1219. data/lib/ddtrace/profiling/transport/http/api/endpoint.rb +0 -94
  1220. data/lib/ddtrace/profiling/transport/http/api/instance.rb +0 -37
  1221. data/lib/ddtrace/profiling/transport/http/api/spec.rb +0 -41
  1222. data/lib/ddtrace/profiling/transport/http/api.rb +0 -44
  1223. data/lib/ddtrace/profiling/transport/http/builder.rb +0 -29
  1224. data/lib/ddtrace/profiling/transport/http/client.rb +0 -34
  1225. data/lib/ddtrace/profiling/transport/http/response.rb +0 -22
  1226. data/lib/ddtrace/profiling/transport/http.rb +0 -111
  1227. data/lib/ddtrace/profiling/transport/io/client.rb +0 -28
  1228. data/lib/ddtrace/profiling/transport/io/response.rb +0 -17
  1229. data/lib/ddtrace/profiling/transport/io.rb +0 -31
  1230. data/lib/ddtrace/profiling/transport/parcel.rb +0 -18
  1231. data/lib/ddtrace/profiling/transport/request.rb +0 -16
  1232. data/lib/ddtrace/profiling/transport/response.rb +0 -9
  1233. data/lib/ddtrace/profiling.rb +0 -149
  1234. data/lib/ddtrace/propagation/grpc_propagator.rb +0 -75
  1235. data/lib/ddtrace/propagation/http_propagator.rb +0 -91
  1236. data/lib/ddtrace/quantization/hash.rb +0 -104
  1237. data/lib/ddtrace/quantization/http.rb +0 -90
  1238. data/lib/ddtrace/runtime/metrics.rb +0 -135
  1239. data/lib/ddtrace/sampler.rb +0 -303
  1240. data/lib/ddtrace/sampling/matcher.rb +0 -58
  1241. data/lib/ddtrace/sampling/rate_limiter.rb +0 -177
  1242. data/lib/ddtrace/sampling/rule.rb +0 -62
  1243. data/lib/ddtrace/sampling/rule_sampler.rb +0 -133
  1244. data/lib/ddtrace/sampling.rb +0 -3
  1245. data/lib/ddtrace/span.rb +0 -445
  1246. data/lib/ddtrace/sync_writer.rb +0 -69
  1247. data/lib/ddtrace/tasks/exec.rb +0 -47
  1248. data/lib/ddtrace/tasks/help.rb +0 -15
  1249. data/lib/ddtrace/tracer.rb +0 -449
  1250. data/lib/ddtrace/transport/http/adapters/net.rb +0 -156
  1251. data/lib/ddtrace/transport/http/adapters/registry.rb +0 -26
  1252. data/lib/ddtrace/transport/http/adapters/test.rb +0 -86
  1253. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +0 -78
  1254. data/lib/ddtrace/transport/http/api/endpoint.rb +0 -28
  1255. data/lib/ddtrace/transport/http/api/fallbacks.rb +0 -23
  1256. data/lib/ddtrace/transport/http/api/instance.rb +0 -34
  1257. data/lib/ddtrace/transport/http/api/map.rb +0 -15
  1258. data/lib/ddtrace/transport/http/api/spec.rb +0 -16
  1259. data/lib/ddtrace/transport/http/api.rb +0 -47
  1260. data/lib/ddtrace/transport/http/builder.rb +0 -177
  1261. data/lib/ddtrace/transport/http/client.rb +0 -52
  1262. data/lib/ddtrace/transport/http/env.rb +0 -57
  1263. data/lib/ddtrace/transport/http/response.rb +0 -27
  1264. data/lib/ddtrace/transport/http/statistics.rb +0 -44
  1265. data/lib/ddtrace/transport/http/traces.rb +0 -143
  1266. data/lib/ddtrace/transport/http.rb +0 -113
  1267. data/lib/ddtrace/transport/io/client.rb +0 -84
  1268. data/lib/ddtrace/transport/io/response.rb +0 -24
  1269. data/lib/ddtrace/transport/io/traces.rb +0 -100
  1270. data/lib/ddtrace/transport/io.rb +0 -27
  1271. data/lib/ddtrace/transport/parcel.rb +0 -20
  1272. data/lib/ddtrace/transport/request.rb +0 -14
  1273. data/lib/ddtrace/transport/response.rb +0 -61
  1274. data/lib/ddtrace/transport/statistics.rb +0 -73
  1275. data/lib/ddtrace/transport/traces.rb +0 -206
  1276. data/lib/ddtrace/utils/compression.rb +0 -28
  1277. data/lib/ddtrace/utils/database.rb +0 -26
  1278. data/lib/ddtrace/utils/forking.rb +0 -53
  1279. data/lib/ddtrace/utils/object_set.rb +0 -40
  1280. data/lib/ddtrace/utils/only_once.rb +0 -41
  1281. data/lib/ddtrace/utils/sequence.rb +0 -18
  1282. data/lib/ddtrace/utils/string_table.rb +0 -46
  1283. data/lib/ddtrace/utils/time.rb +0 -51
  1284. data/lib/ddtrace/utils.rb +0 -80
  1285. data/lib/ddtrace/vendor/active_record/connection_specification.rb +0 -302
  1286. data/lib/ddtrace/vendor/multipart-post/multipart/post/composite_read_io.rb +0 -117
  1287. data/lib/ddtrace/vendor/multipart-post/multipart/post/multipartable.rb +0 -58
  1288. data/lib/ddtrace/vendor/multipart-post/multipart/post/parts.rb +0 -136
  1289. data/lib/ddtrace/vendor/multipart-post/multipart/post/version.rb +0 -10
  1290. data/lib/ddtrace/vendor/multipart-post/multipart/post.rb +0 -9
  1291. data/lib/ddtrace/vendor/multipart-post/multipart.rb +0 -13
  1292. data/lib/ddtrace/vendor/multipart-post/net/http/post/multipart.rb +0 -33
  1293. data/lib/ddtrace/worker.rb +0 -21
  1294. data/lib/ddtrace/workers/async.rb +0 -175
  1295. data/lib/ddtrace/workers/interval_loop.rb +0 -116
  1296. data/lib/ddtrace/workers/polling.rb +0 -56
  1297. data/lib/ddtrace/workers/queue.rb +0 -41
  1298. data/lib/ddtrace/workers/runtime_metrics.rb +0 -65
  1299. data/lib/ddtrace/workers/trace_writer.rb +0 -200
  1300. data/lib/ddtrace/workers.rb +0 -123
  1301. data/lib/ddtrace/writer.rb +0 -200
  1302. /data/lib/{ddtrace → datadog/core}/vendor/multipart-post/LICENSE +0 -0
  1303. /data/lib/{ddtrace/vendor/active_record → datadog/tracing/contrib/active_record/vendor}/MIT-LICENSE +0 -0
  1304. /data/lib/{ddtrace → datadog/tracing}/contrib/redis/vendor/LICENSE +0 -0
@@ -0,0 +1,212 @@
1
+ require 'time'
2
+
3
+ require_relative '../tracing/context'
4
+ require_relative '../tracing/tracer'
5
+
6
+ module Datadog
7
+ module OpenTracer
8
+ # OpenTracing adapter for Datadog::Tracer
9
+ # @public_api
10
+ class Tracer < ::OpenTracing::Tracer
11
+ # (see Datadog::Tracer)
12
+ # @return [Datadog::Tracer]
13
+ attr_reader \
14
+ :datadog_tracer
15
+
16
+ # (see Datadog::Tracer#initialize)
17
+ def initialize(**options)
18
+ super()
19
+ @datadog_tracer = Datadog::Tracing::Tracer.new(**options)
20
+ end
21
+
22
+ # @return [ScopeManager] the current ScopeManager.
23
+ def scope_manager
24
+ @scope_manager ||= ThreadLocalScopeManager.new
25
+ end
26
+
27
+ # Returns a newly started and activated {Scope}.
28
+ #
29
+ # If `scope_manager.active` is not nil, no explicit references
30
+ # are provided, and `ignore_active_scope` is false, then an inferred
31
+ # {https://www.rubydoc.info/gems/opentracing/0.5.0/OpenTracing/Reference OpenTracing::Reference#CHILD_OF}
32
+ # reference is created to the `scope_manager.active`'s
33
+ # {SpanContext} when {#start_active_span} is invoked.
34
+ #
35
+ # @param operation_name [String] The operation name for the Span
36
+ # @param child_of [SpanContext, Span] SpanContext that acts as a parent to
37
+ # the newly-started Span. If a Span instance is provided, its
38
+ # context is automatically substituted. See [OpenTracing::Reference] for more
39
+ # information.
40
+ # If specified, the `references` parameter must be omitted.
41
+ # @param references [Array<OpenTracing::Reference>] An array of reference
42
+ # objects that identify one or more parent SpanContexts.
43
+ # @param start_time [Time] When the Span started, if not now
44
+ # @param tags [Hash] Tags to assign to the Span at start time
45
+ # @param ignore_active_scope [Boolean] whether to create an implicit
46
+ # OpenTracing::Reference#CHILD_OF reference to the ScopeManager#active.
47
+ # @param finish_on_close [Boolean] whether span should automatically be
48
+ # finished when Scope#close is called
49
+ # @yield [Scope] If an optional block is passed to start_active it will
50
+ # yield the newly-started Scope. If `finish_on_close` is true then the
51
+ # Span will be finished automatically after the block is executed.
52
+ # @return [Scope] The newly-started and activated Scope
53
+ def start_active_span(
54
+ operation_name,
55
+ child_of: nil,
56
+ references: nil,
57
+ start_time: Time.now,
58
+ tags: nil,
59
+ ignore_active_scope: false,
60
+ finish_on_close: true
61
+ )
62
+
63
+ # When meant to automatically determine the parent,
64
+ # Use the active scope first, otherwise fall back to any
65
+ # context generated by Datadog, so as to append to it and gain
66
+ # the benefit of any out-of-the-box tracing from Datadog preceding
67
+ # the OpenTracer::Tracer.
68
+ #
69
+ # We do this here instead of in #start_span because #start_span generates
70
+ # spans that are not assigned to a scope, a.k.a not supposed to be used by
71
+ # subsequent spans implicitly. By using the existing Datadog context, the span
72
+ # effectively ends up "assigned to a scope", by virtue of being added to the
73
+ # Context. Hence, it would behave more like an active span, which is why it
74
+ # should only be here.
75
+ unless child_of || ignore_active_scope
76
+ child_of = if scope_manager.active
77
+ scope_manager.active.span.context
78
+ else
79
+ SpanContextFactory.build(datadog_context: datadog_tracer.send(:call_context))
80
+ end
81
+ end
82
+
83
+ # Create the span, and auto-add it to the Datadog context.
84
+ span = start_span(
85
+ operation_name,
86
+ child_of: child_of,
87
+ references: references,
88
+ start_time: start_time,
89
+ tags: tags,
90
+ ignore_active_scope: ignore_active_scope
91
+ )
92
+
93
+ # Overwrite the tracer context with the OpenTracing managed context.
94
+ # This is mostly for the benefit of any out-of-the-box tracing from Datadog,
95
+ # such that spans generated by that tracing will be attached to the OpenTracer
96
+ # parent span.
97
+ datadog_tracer.provider.context = span.context.datadog_context
98
+
99
+ scope_manager.activate(span, finish_on_close: finish_on_close).tap do |scope|
100
+ if block_given?
101
+ begin
102
+ yield(scope)
103
+ ensure
104
+ scope.close
105
+ end
106
+ end
107
+ end
108
+ end
109
+
110
+ # Like {#start_active_span}, but the returned {Span} has not been registered via the
111
+ # {ScopeManager}.
112
+ #
113
+ # @param operation_name [String] The operation name for the Span
114
+ # @param child_of [SpanContext, Span] SpanContext that acts as a parent to
115
+ # the newly-started Span. If a Span instance is provided, its
116
+ # context is automatically substituted. See [Reference] for more
117
+ # information.
118
+ # If specified, the `references` parameter must be omitted.
119
+ # @param references [Array<Reference>] An array of reference
120
+ # objects that identify one or more parent SpanContexts.
121
+ # @param start_time [Time] When the Span started, if not now
122
+ # @param tags [Hash] Tags to assign to the Span at start time
123
+ # @param ignore_active_scope [Boolean] whether to create an implicit
124
+ # References#CHILD_OF reference to the ScopeManager#active.
125
+ # @return [Span] the newly-started Span instance, which has not been
126
+ # automatically registered via the ScopeManager
127
+ def start_span(
128
+ operation_name,
129
+ child_of: nil,
130
+ references: nil,
131
+ start_time: Time.now,
132
+ tags: nil,
133
+ ignore_active_scope: false
134
+ )
135
+
136
+ # Derive the OpenTracer::SpanContext to inherit from.
137
+ parent_span_context = inherited_span_context(child_of, ignore_active_scope: ignore_active_scope)
138
+
139
+ # Retrieve Datadog::Context from parent SpanContext.
140
+ datadog_context = parent_span_context.nil? ? Datadog::Tracing::Context.new : parent_span_context.datadog_context
141
+ datadog_trace_digest = parent_span_context && parent_span_context.datadog_trace_digest
142
+
143
+ # Build the new Datadog span
144
+ datadog_span = datadog_tracer.trace(
145
+ operation_name,
146
+ continue_from: datadog_trace_digest,
147
+ _context: datadog_context,
148
+ start_time: start_time,
149
+ tags: tags || {}
150
+ )
151
+
152
+ span_context = SpanContextFactory.build(
153
+ datadog_context: datadog_context || datadog_tracer.send(:call_context),
154
+ baggage: parent_span_context ? parent_span_context.baggage.dup : {}
155
+ )
156
+
157
+ # Wrap the Datadog span and OpenTracer::Span context in a OpenTracer::Span
158
+ Span.new(datadog_span: datadog_span, span_context: span_context)
159
+ end
160
+
161
+ # Inject a {SpanContext} into the given carrier.
162
+ #
163
+ # @param span_context [SpanContext]
164
+ # @param format [OpenTracing::FORMAT_TEXT_MAP, OpenTracing::FORMAT_BINARY, OpenTracing::FORMAT_RACK]
165
+ # @param carrier [Carrier] A carrier object of the type dictated by the specified `format`
166
+ def inject(span_context, format, carrier)
167
+ case format
168
+ when OpenTracing::FORMAT_TEXT_MAP
169
+ TextMapPropagator.inject(span_context, carrier)
170
+ when OpenTracing::FORMAT_BINARY
171
+ BinaryPropagator.inject(span_context, carrier)
172
+ when OpenTracing::FORMAT_RACK
173
+ RackPropagator.inject(span_context, carrier)
174
+ else
175
+ warn 'Unknown inject format'
176
+ end
177
+ end
178
+
179
+ # Extract a {SpanContext} in the given format from the given carrier.
180
+ #
181
+ # @param format [OpenTracing::FORMAT_TEXT_MAP, OpenTracing::FORMAT_BINARY, OpenTracing::FORMAT_RACK]
182
+ # @param carrier [Carrier] A carrier object of the type dictated by the specified `format`
183
+ # @return [SpanContext, nil] the extracted SpanContext or nil if none could be found
184
+ def extract(format, carrier)
185
+ case format
186
+ when OpenTracing::FORMAT_TEXT_MAP
187
+ TextMapPropagator.extract(carrier)
188
+ when OpenTracing::FORMAT_BINARY
189
+ BinaryPropagator.extract(carrier)
190
+ when OpenTracing::FORMAT_RACK
191
+ RackPropagator.extract(carrier)
192
+ else
193
+ warn 'Unknown extract format'
194
+ nil
195
+ end
196
+ end
197
+
198
+ private
199
+
200
+ def inherited_span_context(parent, ignore_active_scope: false)
201
+ case parent
202
+ when Span
203
+ parent.context
204
+ when SpanContext
205
+ parent
206
+ else
207
+ ignore_active_scope ? nil : scope_manager.active && scope_manager.active.span.context
208
+ end
209
+ end
210
+ end
211
+ end
212
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'opentracing'
4
+ require 'opentracing/carrier'
5
+ require_relative 'tracing'
6
+
7
+ require_relative 'opentracer/carrier'
8
+ require_relative 'opentracer/tracer'
9
+ require_relative 'opentracer/span'
10
+ require_relative 'opentracer/span_context'
11
+ require_relative 'opentracer/span_context_factory'
12
+ require_relative 'opentracer/scope'
13
+ require_relative 'opentracer/scope_manager'
14
+ require_relative 'opentracer/thread_local_scope'
15
+ require_relative 'opentracer/thread_local_scope_manager'
16
+ require_relative 'opentracer/distributed_headers'
17
+ require_relative 'opentracer/propagator'
18
+ require_relative 'opentracer/text_map_propagator'
19
+ require_relative 'opentracer/binary_propagator'
20
+ require_relative 'opentracer/rack_propagator'
21
+ require_relative 'opentracer/global_tracer'
22
+
23
+ # Modify the OpenTracing module functions
24
+ ::OpenTracing.singleton_class.prepend(Datadog::OpenTracer::GlobalTracer)
25
+
26
+ module Datadog
27
+ # Datadog OpenTracing integration.
28
+ # DEV: This module should be named `Datadog::OpenTracing` to match the gem (`opentracing`).
29
+ module OpenTracer
30
+ # Used by Telemetry to decide if OpenTracing instrumentation is enabled
31
+ LOADED = true
32
+ end
33
+ end
@@ -0,0 +1,113 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'set'
4
+ require 'json'
5
+
6
+ module Datadog
7
+ module Profiling
8
+ module Collectors
9
+ # Collects library metadata for loaded files ($LOADED_FEATURES) in the Ruby VM.
10
+ # The output of this class is a list of libraries which have been require'd (in particular, this is
11
+ # not a list of ALL installed libraries).
12
+ #
13
+ # This metadata powers grouping and categorization of stack trace data.
14
+ #
15
+ # This class acts both as a collector (collecting data) as well as a recorder (records/serializes it)
16
+ class CodeProvenance
17
+ def initialize(standard_library_path: RbConfig::CONFIG.fetch('rubylibdir'))
18
+ @libraries_by_name = {}
19
+ @libraries_by_path = {}
20
+ @seen_files = Set.new
21
+ @seen_libraries = Set.new
22
+
23
+ record_library(
24
+ Library.new(
25
+ kind: 'standard library',
26
+ name: 'stdlib',
27
+ version: RUBY_VERSION,
28
+ path: standard_library_path,
29
+ )
30
+ )
31
+ end
32
+
33
+ def refresh(loaded_files: $LOADED_FEATURES, loaded_specs: Gem.loaded_specs.values)
34
+ record_loaded_specs(loaded_specs)
35
+ record_loaded_files(loaded_files)
36
+
37
+ self
38
+ end
39
+
40
+ def generate
41
+ seen_libraries
42
+ end
43
+
44
+ def generate_json
45
+ JSON.fast_generate(v1: seen_libraries.to_a)
46
+ end
47
+
48
+ private
49
+
50
+ attr_reader \
51
+ :libraries_by_name,
52
+ :libraries_by_path,
53
+ :seen_files,
54
+ :seen_libraries
55
+
56
+ def record_library(library)
57
+ libraries_by_name[library.name] = library
58
+ libraries_by_path[library.path] = library
59
+ end
60
+
61
+ # Ruby hash maps are guaranteed to keep the insertion order of keys. Here, we sort @libraries_by_path so
62
+ # that the hash can be iterated in reverse order of paths.
63
+ #
64
+ # Why we do this: We do this to make sure that if there are libraries with paths that are prefixes of other
65
+ # libraries, e.g. '/home/foo' and '/home/foo/bar', we match to the longest path first.
66
+ # When reverse sorting paths as strings, '/home/foo/bar' will come before '/home/foo'.
67
+ #
68
+ # This way, when we iterate the @libraries_by_path hash, we know the first hit will also be the longest.
69
+ #
70
+ # Alternatively/in the future we could instead use a trie to match paths, but I doubt for the data sizes we're
71
+ # looking at that a trie is that much faster than using Ruby's built-in native collections.
72
+ def sort_libraries_by_longest_path_first
73
+ @libraries_by_path = @libraries_by_path.sort.reverse!.to_h
74
+ end
75
+
76
+ def record_loaded_specs(loaded_specs)
77
+ recorded_library = false
78
+
79
+ loaded_specs.each do |spec|
80
+ next if libraries_by_name.key?(spec.name)
81
+
82
+ record_library(Library.new(kind: 'library', name: spec.name, version: spec.version, path: spec.gem_dir))
83
+ recorded_library = true
84
+ end
85
+
86
+ sort_libraries_by_longest_path_first if recorded_library
87
+ end
88
+
89
+ def record_loaded_files(loaded_files)
90
+ loaded_files.each do |file_path|
91
+ next if seen_files.include?(file_path)
92
+
93
+ seen_files << file_path
94
+
95
+ _, found_library = libraries_by_path.find { |library_path, _| file_path.start_with?(library_path) }
96
+ seen_libraries << found_library if found_library
97
+ end
98
+ end
99
+
100
+ Library = Struct.new(:kind, :name, :version, :path) do
101
+ def initialize(kind:, name:, version:, path:)
102
+ super(kind.freeze, name.dup.freeze, version.to_s.dup.freeze, path.dup.freeze)
103
+ freeze
104
+ end
105
+
106
+ def to_json(*args)
107
+ { kind: kind, name: name, version: version, paths: [path] }.to_json(*args)
108
+ end
109
+ end
110
+ end
111
+ end
112
+ end
113
+ end
@@ -0,0 +1,113 @@
1
+ module Datadog
2
+ module Profiling
3
+ module Collectors
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.
6
+ # Almost all of this class is implemented as native code.
7
+ #
8
+ # Methods prefixed with _native_ are implemented in `collectors_cpu_and_wall_time_worker.c`
9
+ class CpuAndWallTimeWorker
10
+ private
11
+
12
+ attr_accessor :failure_exception
13
+
14
+ public
15
+
16
+ def initialize(
17
+ gc_profiling_enabled:,
18
+ allocation_counting_enabled:,
19
+ no_signals_workaround_enabled:,
20
+ thread_context_collector:,
21
+ idle_sampling_helper: IdleSamplingHelper.new,
22
+ # **NOTE**: This should only be used for testing; disabling the dynamic sampling rate will increase the
23
+ # profiler overhead!
24
+ dynamic_sampling_rate_enabled: true,
25
+ allocation_sample_every: 0 # Currently only for testing; Setting this to > 0 can add a lot of overhead!
26
+ )
27
+ unless dynamic_sampling_rate_enabled
28
+ Datadog.logger.warn(
29
+ 'Profiling dynamic sampling rate disabled. This should only be used for testing, and will increase overhead!'
30
+ )
31
+ end
32
+
33
+ if allocation_counting_enabled && allocation_sample_every > 0
34
+ Datadog.logger.warn(
35
+ "Enabled experimental allocation profiling: allocation_sample_every=#{allocation_sample_every}. This is " \
36
+ 'experimental, not recommended, and will increase overhead!'
37
+ )
38
+ end
39
+
40
+ self.class._native_initialize(
41
+ self,
42
+ thread_context_collector,
43
+ gc_profiling_enabled,
44
+ idle_sampling_helper,
45
+ allocation_counting_enabled,
46
+ no_signals_workaround_enabled,
47
+ dynamic_sampling_rate_enabled,
48
+ allocation_sample_every,
49
+ )
50
+ @worker_thread = nil
51
+ @failure_exception = nil
52
+ @start_stop_mutex = Mutex.new
53
+ @idle_sampling_helper = idle_sampling_helper
54
+ end
55
+
56
+ def start(on_failure_proc: nil)
57
+ @start_stop_mutex.synchronize do
58
+ return if @worker_thread && @worker_thread.alive?
59
+
60
+ Datadog.logger.debug { "Starting thread for: #{self}" }
61
+
62
+ @idle_sampling_helper.start
63
+
64
+ @worker_thread = Thread.new do
65
+ begin
66
+ Thread.current.name = self.class.name
67
+
68
+ self.class._native_sampling_loop(self)
69
+
70
+ Datadog.logger.debug('CpuAndWallTimeWorker thread stopping cleanly')
71
+ rescue Exception => e # rubocop:disable Lint/RescueException
72
+ @failure_exception = e
73
+ Datadog.logger.warn(
74
+ 'CpuAndWallTimeWorker thread error. ' \
75
+ "Cause: #{e.class.name} #{e.message} Location: #{Array(e.backtrace).first}"
76
+ )
77
+ on_failure_proc&.call
78
+ end
79
+ end
80
+ @worker_thread.name = self.class.name # Repeated from above to make sure thread gets named asap
81
+ @worker_thread.thread_variable_set(:fork_safe, true)
82
+ end
83
+
84
+ true
85
+ end
86
+
87
+ def stop
88
+ @start_stop_mutex.synchronize do
89
+ Datadog.logger.debug('Requesting CpuAndWallTimeWorker thread shut down')
90
+
91
+ @idle_sampling_helper.stop
92
+
93
+ return unless @worker_thread
94
+
95
+ self.class._native_stop(self, @worker_thread)
96
+
97
+ @worker_thread.join
98
+ @worker_thread = nil
99
+ @failure_exception = nil
100
+ end
101
+ end
102
+
103
+ def reset_after_fork
104
+ self.class._native_reset_after_fork(self)
105
+ end
106
+
107
+ def stats
108
+ self.class._native_stats(self)
109
+ end
110
+ end
111
+ end
112
+ end
113
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Datadog
4
+ module Profiling
5
+ module Collectors
6
+ # Used to pace the rate of profiling samples based on the last observed time for a sample.
7
+ # All of this module is implemented as native code.
8
+ #
9
+ # Methods prefixed with _native_ are implemented in `collectors_dynamic_sampling_rate.c`
10
+ module DynamicSamplingRate
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,68 @@
1
+ module Datadog
2
+ module Profiling
3
+ module Collectors
4
+ # Used by the Collectors::CpuAndWallTimeWorker to gather samples when the Ruby process is idle.
5
+ # Almost all of this class is implemented as native code.
6
+ #
7
+ # Methods prefixed with _native_ are implemented in `collectors_idle_sampling_helper.c`
8
+ class IdleSamplingHelper
9
+ private
10
+
11
+ attr_accessor :failure_exception
12
+
13
+ public
14
+
15
+ def initialize
16
+ @worker_thread = nil
17
+ @start_stop_mutex = Mutex.new
18
+ end
19
+
20
+ def start
21
+ @start_stop_mutex.synchronize do
22
+ return if @worker_thread && @worker_thread.alive?
23
+
24
+ Datadog.logger.debug { "Starting thread for: #{self}" }
25
+
26
+ # The same instance of the IdleSamplingHelper can be reused multiple times, and this resets it back to
27
+ # a pristine state before recreating the worker thread
28
+ self.class._native_reset(self)
29
+
30
+ @worker_thread = Thread.new do
31
+ begin
32
+ Thread.current.name = self.class.name
33
+
34
+ self.class._native_idle_sampling_loop(self)
35
+
36
+ Datadog.logger.debug('IdleSamplingHelper thread stopping cleanly')
37
+ rescue Exception => e # rubocop:disable Lint/RescueException
38
+ @failure_exception = e
39
+ Datadog.logger.warn(
40
+ 'IdleSamplingHelper thread error. ' \
41
+ "Cause: #{e.class.name} #{e.message} Location: #{Array(e.backtrace).first}"
42
+ )
43
+ end
44
+ end
45
+ @worker_thread.name = self.class.name # Repeated from above to make sure thread gets named asap
46
+ @worker_thread.thread_variable_set(:fork_safe, true)
47
+ end
48
+
49
+ true
50
+ end
51
+
52
+ def stop
53
+ @start_stop_mutex.synchronize do
54
+ Datadog.logger.debug('Requesting IdleSamplingHelper thread shut down')
55
+
56
+ return unless @worker_thread
57
+
58
+ self.class._native_stop(self)
59
+
60
+ @worker_thread.join
61
+ @worker_thread = nil
62
+ @failure_exception = nil
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Datadog
4
+ module Profiling
5
+ module Collectors
6
+ # Used to gather a stack trace from a given Ruby thread. Stores its output on a `StackRecorder`.
7
+ #
8
+ # This class is not empty; all of this class is implemented as native code.
9
+ class Stack # rubocop:disable Lint/EmptyClass
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Datadog
4
+ module Profiling
5
+ module Collectors
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
11
+ # Collectors::CpuAndWallTimeWorker.
12
+ # The stack collection itself is handled using the Datadog::Profiling::Collectors::Stack.
13
+ # Almost all of this class is implemented as native code.
14
+ #
15
+ # Methods prefixed with _native_ are implemented in `collectors_thread_context.c`
16
+ class ThreadContext
17
+ def initialize(
18
+ recorder:,
19
+ max_frames:,
20
+ tracer:,
21
+ endpoint_collection_enabled:,
22
+ timeline_enabled:,
23
+ allocation_type_enabled: true
24
+ )
25
+ tracer_context_key = safely_extract_context_key_from(tracer)
26
+ self.class._native_initialize(
27
+ self,
28
+ recorder,
29
+ max_frames,
30
+ tracer_context_key,
31
+ endpoint_collection_enabled,
32
+ timeline_enabled,
33
+ allocation_type_enabled,
34
+ )
35
+ end
36
+
37
+ def inspect
38
+ # Compose Ruby's default inspect with our custom inspect for the native parts
39
+ result = super()
40
+ result[-1] = "#{self.class._native_inspect(self)}>"
41
+ result
42
+ end
43
+
44
+ def reset_after_fork
45
+ self.class._native_reset_after_fork(self)
46
+ end
47
+
48
+ private
49
+
50
+ def safely_extract_context_key_from(tracer)
51
+ provider = tracer && tracer.respond_to?(:provider) && tracer.provider
52
+
53
+ return unless provider
54
+
55
+ context = provider.instance_variable_get(:@context)
56
+ context && context.instance_variable_get(:@key)
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end