ddtrace 0.54.2 → 1.10.1

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 (1222) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +654 -2
  3. data/LICENSE-3rdparty.csv +7 -1
  4. data/README.md +10 -1
  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 +79 -9
  9. data/ext/ddtrace_profiling_native_extension/clock_id.h +22 -1
  10. data/ext/ddtrace_profiling_native_extension/clock_id_from_pthread.c +33 -10
  11. data/ext/ddtrace_profiling_native_extension/clock_id_noop.c +11 -2
  12. data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +821 -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 +241 -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 +379 -0
  18. data/ext/ddtrace_profiling_native_extension/collectors_stack.h +20 -0
  19. data/ext/ddtrace_profiling_native_extension/collectors_thread_context.c +978 -0
  20. data/ext/ddtrace_profiling_native_extension/collectors_thread_context.h +14 -0
  21. data/ext/ddtrace_profiling_native_extension/extconf.rb +155 -115
  22. data/ext/ddtrace_profiling_native_extension/helpers.h +17 -0
  23. data/ext/ddtrace_profiling_native_extension/http_transport.c +347 -0
  24. data/ext/ddtrace_profiling_native_extension/libdatadog_helpers.h +25 -0
  25. data/ext/ddtrace_profiling_native_extension/native_extension_helpers.rb +319 -0
  26. data/ext/ddtrace_profiling_native_extension/private_vm_api_access.c +706 -9
  27. data/ext/ddtrace_profiling_native_extension/private_vm_api_access.h +42 -0
  28. data/ext/ddtrace_profiling_native_extension/profiling.c +231 -2
  29. data/ext/ddtrace_profiling_native_extension/ruby_helpers.c +110 -0
  30. data/ext/ddtrace_profiling_native_extension/ruby_helpers.h +89 -0
  31. data/ext/ddtrace_profiling_native_extension/setup_signal_handler.c +115 -0
  32. data/ext/ddtrace_profiling_native_extension/setup_signal_handler.h +11 -0
  33. data/ext/ddtrace_profiling_native_extension/stack_recorder.c +591 -0
  34. data/ext/ddtrace_profiling_native_extension/stack_recorder.h +14 -0
  35. data/ext/ddtrace_profiling_native_extension/time_helpers.c +17 -0
  36. data/ext/ddtrace_profiling_native_extension/time_helpers.h +10 -0
  37. data/lib/datadog/appsec/assets/blocked.html +99 -0
  38. data/lib/datadog/appsec/assets/blocked.json +1 -0
  39. data/lib/datadog/appsec/assets/blocked.text +5 -0
  40. data/lib/datadog/appsec/assets/waf_rules/README.md +7 -0
  41. data/lib/datadog/appsec/assets/waf_rules/recommended.json +6724 -0
  42. data/lib/datadog/appsec/assets/waf_rules/strict.json +1590 -0
  43. data/lib/datadog/appsec/assets.rb +36 -0
  44. data/lib/datadog/appsec/autoload.rb +11 -0
  45. data/lib/datadog/appsec/component.rb +41 -0
  46. data/lib/datadog/appsec/configuration/settings.rb +216 -0
  47. data/lib/datadog/appsec/configuration.rb +88 -0
  48. data/lib/datadog/appsec/contrib/auto_instrument.rb +25 -0
  49. data/lib/datadog/appsec/contrib/configuration/settings.rb +18 -0
  50. data/lib/datadog/appsec/contrib/integration.rb +35 -0
  51. data/lib/datadog/appsec/contrib/patcher.rb +10 -0
  52. data/lib/datadog/appsec/contrib/rack/configuration/settings.rb +20 -0
  53. data/lib/datadog/appsec/contrib/rack/ext.rb +13 -0
  54. data/lib/datadog/appsec/contrib/rack/gateway/request.rb +97 -0
  55. data/lib/datadog/appsec/contrib/rack/gateway/response.rb +30 -0
  56. data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +176 -0
  57. data/lib/datadog/appsec/contrib/rack/integration.rb +47 -0
  58. data/lib/datadog/appsec/contrib/rack/patcher.rb +32 -0
  59. data/lib/datadog/appsec/contrib/rack/reactive/request.rb +80 -0
  60. data/lib/datadog/appsec/contrib/rack/reactive/request_body.rb +63 -0
  61. data/lib/datadog/appsec/contrib/rack/reactive/response.rb +63 -0
  62. data/lib/datadog/appsec/contrib/rack/request_body_middleware.rb +43 -0
  63. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +153 -0
  64. data/lib/datadog/appsec/contrib/rails/configuration/settings.rb +20 -0
  65. data/lib/datadog/appsec/contrib/rails/ext.rb +13 -0
  66. data/lib/datadog/appsec/contrib/rails/framework.rb +28 -0
  67. data/lib/datadog/appsec/contrib/rails/gateway/request.rb +67 -0
  68. data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +86 -0
  69. data/lib/datadog/appsec/contrib/rails/integration.rb +46 -0
  70. data/lib/datadog/appsec/contrib/rails/patcher.rb +159 -0
  71. data/lib/datadog/appsec/contrib/rails/reactive/action.rb +69 -0
  72. data/lib/datadog/appsec/contrib/rails/request.rb +34 -0
  73. data/lib/datadog/appsec/contrib/rails/request_middleware.rb +18 -0
  74. data/lib/datadog/appsec/contrib/sinatra/configuration/settings.rb +20 -0
  75. data/lib/datadog/appsec/contrib/sinatra/ext.rb +14 -0
  76. data/lib/datadog/appsec/contrib/sinatra/framework.rb +32 -0
  77. data/lib/datadog/appsec/contrib/sinatra/gateway/request.rb +17 -0
  78. data/lib/datadog/appsec/contrib/sinatra/gateway/route_params.rb +23 -0
  79. data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +131 -0
  80. data/lib/datadog/appsec/contrib/sinatra/integration.rb +46 -0
  81. data/lib/datadog/appsec/contrib/sinatra/patcher.rb +159 -0
  82. data/lib/datadog/appsec/contrib/sinatra/reactive/routed.rb +64 -0
  83. data/lib/datadog/appsec/contrib/sinatra/request_middleware.rb +18 -0
  84. data/lib/datadog/appsec/event.rb +113 -0
  85. data/lib/datadog/appsec/ext.rb +9 -0
  86. data/lib/datadog/appsec/extensions.rb +146 -0
  87. data/lib/datadog/appsec/instrumentation/gateway/argument.rb +24 -0
  88. data/lib/datadog/appsec/instrumentation/gateway.rb +64 -0
  89. data/lib/datadog/appsec/instrumentation.rb +9 -0
  90. data/lib/datadog/appsec/monitor/gateway/watcher.rb +86 -0
  91. data/lib/datadog/appsec/monitor/reactive/set_user.rb +61 -0
  92. data/lib/datadog/appsec/monitor.rb +11 -0
  93. data/lib/datadog/appsec/processor.rb +243 -0
  94. data/lib/datadog/appsec/rate_limiter.rb +58 -0
  95. data/lib/datadog/appsec/reactive/address_hash.rb +22 -0
  96. data/lib/datadog/appsec/reactive/engine.rb +47 -0
  97. data/lib/datadog/appsec/reactive/operation.rb +68 -0
  98. data/lib/datadog/appsec/reactive/subscriber.rb +19 -0
  99. data/lib/datadog/appsec/response.rb +61 -0
  100. data/lib/datadog/appsec/utils/http/media_range.rb +199 -0
  101. data/lib/datadog/appsec/utils/http/media_type.rb +85 -0
  102. data/lib/datadog/appsec/utils/http.rb +9 -0
  103. data/lib/datadog/appsec/utils.rb +7 -0
  104. data/lib/datadog/appsec.rb +41 -0
  105. data/lib/datadog/ci/configuration/components.rb +8 -9
  106. data/lib/datadog/ci/configuration/settings.rb +19 -5
  107. data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +4 -4
  108. data/lib/datadog/ci/contrib/cucumber/ext.rb +1 -1
  109. data/lib/datadog/ci/contrib/cucumber/formatter.rb +8 -15
  110. data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +2 -3
  111. data/lib/datadog/ci/contrib/cucumber/integration.rb +5 -6
  112. data/lib/datadog/ci/contrib/cucumber/patcher.rb +3 -4
  113. data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +4 -4
  114. data/lib/datadog/ci/contrib/rspec/example.rb +8 -15
  115. data/lib/datadog/ci/contrib/rspec/ext.rb +1 -1
  116. data/lib/datadog/ci/contrib/rspec/integration.rb +5 -6
  117. data/lib/datadog/ci/contrib/rspec/patcher.rb +3 -4
  118. data/lib/datadog/ci/ext/app_types.rb +1 -2
  119. data/lib/datadog/ci/ext/environment.rb +181 -127
  120. data/lib/datadog/ci/ext/settings.rb +1 -2
  121. data/lib/datadog/ci/ext/test.rb +0 -1
  122. data/lib/datadog/ci/extensions.rb +6 -7
  123. data/lib/datadog/ci/flush.rb +36 -0
  124. data/lib/datadog/ci/test.rb +15 -15
  125. data/lib/datadog/ci.rb +6 -5
  126. data/lib/datadog/core/buffer/cruby.rb +53 -0
  127. data/lib/datadog/core/buffer/random.rb +132 -0
  128. data/lib/datadog/core/buffer/thread_safe.rb +56 -0
  129. data/lib/datadog/core/chunker.rb +33 -0
  130. data/lib/datadog/core/configuration/agent_settings_resolver.rb +345 -0
  131. data/lib/datadog/core/configuration/base.rb +99 -0
  132. data/lib/datadog/core/configuration/components.rb +158 -0
  133. data/lib/datadog/core/configuration/dependency_resolver.rb +26 -0
  134. data/lib/datadog/core/configuration/ext.rb +24 -0
  135. data/lib/datadog/core/configuration/option.rb +67 -0
  136. data/lib/datadog/core/configuration/option_definition.rb +133 -0
  137. data/lib/datadog/core/configuration/option_definition_set.rb +20 -0
  138. data/lib/datadog/core/configuration/option_set.rb +8 -0
  139. data/lib/datadog/core/configuration/options.rb +116 -0
  140. data/lib/datadog/core/configuration/settings.rb +455 -0
  141. data/lib/datadog/core/configuration.rb +285 -0
  142. data/lib/datadog/core/diagnostics/environment_logger.rb +286 -0
  143. data/lib/datadog/core/diagnostics/health.rb +17 -0
  144. data/lib/datadog/core/encoding.rb +72 -0
  145. data/lib/datadog/core/environment/cgroup.rb +4 -5
  146. data/lib/datadog/core/environment/class_count.rb +0 -1
  147. data/lib/datadog/core/environment/container.rb +3 -5
  148. data/lib/datadog/core/environment/ext.rb +28 -11
  149. data/lib/datadog/core/environment/gc.rb +0 -1
  150. data/lib/datadog/core/environment/identity.rb +11 -6
  151. data/lib/datadog/core/environment/platform.rb +38 -0
  152. data/lib/datadog/core/environment/socket.rb +7 -2
  153. data/lib/datadog/core/environment/thread_count.rb +0 -1
  154. data/lib/datadog/core/environment/variable_helpers.rb +84 -12
  155. data/lib/datadog/core/environment/vm_cache.rb +17 -1
  156. data/lib/datadog/core/error.rb +99 -0
  157. data/lib/datadog/core/extensions.rb +14 -0
  158. data/lib/datadog/core/git/ext.rb +33 -0
  159. data/lib/datadog/core/header_collection.rb +41 -0
  160. data/lib/datadog/core/logger.rb +44 -0
  161. data/lib/datadog/core/logging/ext.rb +11 -0
  162. data/lib/datadog/core/metrics/client.rb +197 -0
  163. data/lib/datadog/core/metrics/ext.rb +16 -0
  164. data/lib/datadog/core/metrics/helpers.rb +23 -0
  165. data/lib/datadog/core/metrics/logging.rb +42 -0
  166. data/lib/datadog/core/metrics/metric.rb +12 -0
  167. data/lib/datadog/core/metrics/options.rb +48 -0
  168. data/lib/datadog/core/pin.rb +73 -0
  169. data/lib/datadog/core/runtime/ext.rb +28 -0
  170. data/lib/datadog/core/runtime/metrics.rb +140 -0
  171. data/lib/datadog/core/telemetry/client.rb +77 -0
  172. data/lib/datadog/core/telemetry/collector.rb +231 -0
  173. data/lib/datadog/core/telemetry/emitter.rb +46 -0
  174. data/lib/datadog/core/telemetry/event.rb +67 -0
  175. data/lib/datadog/core/telemetry/ext.rb +9 -0
  176. data/lib/datadog/core/telemetry/heartbeat.rb +35 -0
  177. data/lib/datadog/core/telemetry/http/adapters/net.rb +111 -0
  178. data/lib/datadog/core/telemetry/http/env.rb +18 -0
  179. data/lib/datadog/core/telemetry/http/ext.rb +20 -0
  180. data/lib/datadog/core/telemetry/http/response.rb +64 -0
  181. data/lib/datadog/core/telemetry/http/transport.rb +51 -0
  182. data/lib/datadog/core/telemetry/v1/app_event.rb +50 -0
  183. data/lib/datadog/core/telemetry/v1/application.rb +86 -0
  184. data/lib/datadog/core/telemetry/v1/configuration.rb +25 -0
  185. data/lib/datadog/core/telemetry/v1/dependency.rb +36 -0
  186. data/lib/datadog/core/telemetry/v1/host.rb +51 -0
  187. data/lib/datadog/core/telemetry/v1/integration.rb +58 -0
  188. data/lib/datadog/core/telemetry/v1/product.rb +28 -0
  189. data/lib/datadog/core/telemetry/v1/telemetry_request.rb +100 -0
  190. data/lib/datadog/core/utils/compression.rb +34 -0
  191. data/lib/datadog/core/utils/forking.rb +61 -0
  192. data/lib/datadog/core/utils/network.rb +140 -0
  193. data/lib/datadog/core/utils/object_set.rb +41 -0
  194. data/lib/datadog/core/utils/only_once.rb +42 -0
  195. data/lib/datadog/core/utils/safe_dup.rb +25 -0
  196. data/lib/datadog/core/utils/sequence.rb +24 -0
  197. data/lib/datadog/core/utils/string_table.rb +47 -0
  198. data/lib/datadog/core/utils/time.rb +50 -0
  199. data/lib/datadog/core/utils.rb +92 -0
  200. data/lib/datadog/core/vendor/ipaddr.rb +78 -0
  201. data/lib/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rb +118 -0
  202. data/lib/datadog/core/vendor/multipart-post/multipart/post/multipartable.rb +59 -0
  203. data/lib/datadog/core/vendor/multipart-post/multipart/post/parts.rb +137 -0
  204. data/lib/datadog/core/vendor/multipart-post/multipart/post/version.rb +11 -0
  205. data/lib/datadog/core/vendor/multipart-post/multipart/post.rb +10 -0
  206. data/lib/datadog/core/vendor/multipart-post/multipart.rb +14 -0
  207. data/lib/datadog/core/vendor/multipart-post/net/http/post/multipart.rb +34 -0
  208. data/lib/datadog/core/worker.rb +22 -0
  209. data/lib/datadog/core/workers/async.rb +178 -0
  210. data/lib/datadog/core/workers/interval_loop.rb +117 -0
  211. data/lib/datadog/core/workers/polling.rb +57 -0
  212. data/lib/datadog/core/workers/queue.rb +42 -0
  213. data/lib/datadog/core/workers/runtime_metrics.rb +60 -0
  214. data/lib/datadog/core.rb +45 -0
  215. data/lib/datadog/kit/appsec/events.rb +74 -0
  216. data/lib/datadog/kit/enable_core_dumps.rb +50 -0
  217. data/lib/datadog/kit/identity.rb +70 -0
  218. data/lib/datadog/kit.rb +9 -0
  219. data/lib/datadog/opentelemetry/api/context.rb +186 -0
  220. data/lib/datadog/opentelemetry/api/trace/span.rb +14 -0
  221. data/lib/datadog/opentelemetry/sdk/configurator.rb +37 -0
  222. data/lib/datadog/opentelemetry/sdk/id_generator.rb +26 -0
  223. data/lib/datadog/opentelemetry/sdk/propagator.rb +90 -0
  224. data/lib/datadog/opentelemetry/sdk/span_processor.rb +91 -0
  225. data/lib/datadog/opentelemetry.rb +47 -0
  226. data/lib/datadog/opentracer/binary_propagator.rb +24 -0
  227. data/lib/datadog/opentracer/carrier.rb +7 -0
  228. data/lib/datadog/opentracer/distributed_headers.rb +54 -0
  229. data/lib/datadog/opentracer/global_tracer.rb +15 -0
  230. data/lib/datadog/opentracer/propagator.rb +24 -0
  231. data/lib/datadog/opentracer/rack_propagator.rb +71 -0
  232. data/lib/datadog/opentracer/scope.rb +16 -0
  233. data/lib/datadog/opentracer/scope_manager.rb +7 -0
  234. data/lib/datadog/opentracer/span.rb +99 -0
  235. data/lib/datadog/opentracer/span_context.rb +17 -0
  236. data/lib/datadog/opentracer/span_context_factory.rb +25 -0
  237. data/lib/datadog/opentracer/text_map_propagator.rb +86 -0
  238. data/lib/datadog/opentracer/thread_local_scope.rb +32 -0
  239. data/lib/datadog/opentracer/thread_local_scope_manager.rb +64 -0
  240. data/lib/datadog/opentracer/tracer.rb +212 -0
  241. data/lib/datadog/opentracer.rb +22 -0
  242. data/lib/datadog/profiling/backtrace_location.rb +32 -0
  243. data/lib/datadog/profiling/buffer.rb +41 -0
  244. data/lib/datadog/profiling/collectors/code_provenance.rb +113 -0
  245. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +96 -0
  246. data/lib/datadog/profiling/collectors/dynamic_sampling_rate.rb +12 -0
  247. data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +66 -0
  248. data/lib/datadog/profiling/collectors/old_stack.rb +301 -0
  249. data/lib/datadog/profiling/collectors/stack.rb +11 -0
  250. data/lib/datadog/profiling/collectors/thread_context.rb +46 -0
  251. data/lib/datadog/profiling/component.rb +161 -0
  252. data/lib/datadog/profiling/encoding/profile.rb +41 -0
  253. data/lib/datadog/profiling/event.rb +13 -0
  254. data/lib/datadog/profiling/events/stack.rb +80 -0
  255. data/lib/datadog/profiling/exporter.rb +83 -0
  256. data/lib/datadog/profiling/ext/forking.rb +96 -0
  257. data/lib/datadog/profiling/ext.rb +43 -0
  258. data/lib/datadog/profiling/flush.rb +36 -0
  259. data/lib/datadog/profiling/http_transport.rb +130 -0
  260. data/lib/datadog/profiling/load_native_extension.rb +20 -0
  261. data/lib/datadog/profiling/native_extension.rb +39 -0
  262. data/lib/datadog/profiling/old_recorder.rb +107 -0
  263. data/lib/datadog/profiling/pprof/builder.rb +125 -0
  264. data/lib/datadog/profiling/pprof/converter.rb +102 -0
  265. data/lib/datadog/profiling/pprof/message_set.rb +14 -0
  266. data/lib/datadog/profiling/pprof/payload.rb +18 -0
  267. data/lib/datadog/profiling/pprof/pprof_pb.rb +81 -0
  268. data/lib/datadog/profiling/pprof/stack_sample.rb +139 -0
  269. data/lib/datadog/profiling/pprof/string_table.rb +10 -0
  270. data/lib/datadog/profiling/pprof/template.rb +118 -0
  271. data/lib/datadog/profiling/preload.rb +3 -0
  272. data/lib/datadog/profiling/profiler.rb +39 -0
  273. data/lib/datadog/profiling/scheduler.rb +128 -0
  274. data/lib/datadog/profiling/stack_recorder.rb +74 -0
  275. data/lib/datadog/profiling/tag_builder.rb +51 -0
  276. data/lib/datadog/profiling/tasks/exec.rb +48 -0
  277. data/lib/datadog/profiling/tasks/help.rb +16 -0
  278. data/lib/datadog/profiling/tasks/setup.rb +84 -0
  279. data/lib/datadog/profiling/trace_identifiers/ddtrace.rb +43 -0
  280. data/lib/datadog/profiling/trace_identifiers/helper.rb +45 -0
  281. data/lib/datadog/profiling.rb +210 -0
  282. data/lib/datadog/tracing/analytics.rb +23 -0
  283. data/lib/datadog/tracing/buffer.rb +128 -0
  284. data/lib/datadog/tracing/client_ip.rb +61 -0
  285. data/lib/datadog/tracing/component.rb +176 -0
  286. data/lib/datadog/tracing/configuration/ext.rb +94 -0
  287. data/lib/datadog/tracing/configuration/settings.rb +451 -0
  288. data/lib/datadog/tracing/context.rb +66 -0
  289. data/lib/datadog/tracing/context_provider.rb +80 -0
  290. data/lib/datadog/tracing/contrib/action_cable/configuration/settings.rb +33 -0
  291. data/lib/datadog/tracing/contrib/action_cable/event.rb +69 -0
  292. data/lib/datadog/tracing/contrib/action_cable/events/broadcast.rb +56 -0
  293. data/lib/datadog/tracing/contrib/action_cable/events/perform_action.rb +61 -0
  294. data/lib/datadog/tracing/contrib/action_cable/events/transmit.rb +57 -0
  295. data/lib/datadog/tracing/contrib/action_cable/events.rb +35 -0
  296. data/lib/datadog/tracing/contrib/action_cable/ext.rb +30 -0
  297. data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +88 -0
  298. data/lib/datadog/tracing/contrib/action_cable/integration.rb +48 -0
  299. data/lib/datadog/tracing/contrib/action_cable/patcher.rb +29 -0
  300. data/lib/datadog/tracing/contrib/action_mailer/configuration/settings.rb +34 -0
  301. data/lib/datadog/tracing/contrib/action_mailer/event.rb +50 -0
  302. data/lib/datadog/tracing/contrib/action_mailer/events/deliver.rb +58 -0
  303. data/lib/datadog/tracing/contrib/action_mailer/events/process.rb +45 -0
  304. data/lib/datadog/tracing/contrib/action_mailer/events.rb +32 -0
  305. data/lib/datadog/tracing/contrib/action_mailer/ext.rb +31 -0
  306. data/lib/datadog/tracing/contrib/action_mailer/integration.rb +48 -0
  307. data/lib/datadog/tracing/contrib/action_mailer/patcher.rb +27 -0
  308. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +158 -0
  309. data/lib/datadog/tracing/contrib/action_pack/action_controller/patcher.rb +27 -0
  310. data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +34 -0
  311. data/lib/datadog/tracing/contrib/action_pack/ext.rb +20 -0
  312. data/lib/datadog/tracing/contrib/action_pack/integration.rb +48 -0
  313. data/lib/datadog/tracing/contrib/action_pack/patcher.rb +25 -0
  314. data/lib/datadog/tracing/contrib/action_pack/utils.rb +38 -0
  315. data/lib/datadog/tracing/contrib/action_view/configuration/settings.rb +34 -0
  316. data/lib/datadog/tracing/contrib/action_view/event.rb +33 -0
  317. data/lib/datadog/tracing/contrib/action_view/events/render_partial.rb +52 -0
  318. data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +55 -0
  319. data/lib/datadog/tracing/contrib/action_view/events.rb +32 -0
  320. data/lib/datadog/tracing/contrib/action_view/ext.rb +22 -0
  321. data/lib/datadog/tracing/contrib/action_view/instrumentation/partial_renderer.rb +76 -0
  322. data/lib/datadog/tracing/contrib/action_view/instrumentation/template_renderer.rb +89 -0
  323. data/lib/datadog/tracing/contrib/action_view/integration.rb +55 -0
  324. data/lib/datadog/tracing/contrib/action_view/patcher.rb +45 -0
  325. data/lib/datadog/tracing/contrib/action_view/utils.rb +34 -0
  326. data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +35 -0
  327. data/lib/datadog/tracing/contrib/active_job/event.rb +56 -0
  328. data/lib/datadog/tracing/contrib/active_job/events/discard.rb +48 -0
  329. data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +47 -0
  330. data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +47 -0
  331. data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +49 -0
  332. data/lib/datadog/tracing/contrib/active_job/events/perform.rb +47 -0
  333. data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +48 -0
  334. data/lib/datadog/tracing/contrib/active_job/events.rb +40 -0
  335. data/lib/datadog/tracing/contrib/active_job/ext.rb +37 -0
  336. data/lib/datadog/tracing/contrib/active_job/integration.rb +48 -0
  337. data/lib/datadog/tracing/contrib/active_job/log_injection.rb +22 -0
  338. data/lib/datadog/tracing/contrib/active_job/patcher.rb +34 -0
  339. data/lib/datadog/tracing/contrib/active_model_serializers/configuration/settings.rb +31 -0
  340. data/lib/datadog/tracing/contrib/active_model_serializers/event.rb +66 -0
  341. data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +43 -0
  342. data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +45 -0
  343. data/lib/datadog/tracing/contrib/active_model_serializers/events.rb +32 -0
  344. data/lib/datadog/tracing/contrib/active_model_serializers/ext.rb +22 -0
  345. data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +43 -0
  346. data/lib/datadog/tracing/contrib/active_model_serializers/patcher.rb +30 -0
  347. data/lib/datadog/tracing/contrib/active_record/configuration/makara_resolver.rb +34 -0
  348. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +136 -0
  349. data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +37 -0
  350. data/lib/datadog/tracing/contrib/active_record/event.rb +28 -0
  351. data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +56 -0
  352. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +76 -0
  353. data/lib/datadog/tracing/contrib/active_record/events.rb +32 -0
  354. data/lib/datadog/tracing/contrib/active_record/ext.rb +27 -0
  355. data/lib/datadog/tracing/contrib/active_record/integration.rb +54 -0
  356. data/lib/datadog/tracing/contrib/active_record/patcher.rb +25 -0
  357. data/lib/datadog/tracing/contrib/active_record/utils.rb +126 -0
  358. data/lib/datadog/tracing/contrib/active_record/vendor/connection_specification.rb +305 -0
  359. data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +278 -0
  360. data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +71 -0
  361. data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +45 -0
  362. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +33 -0
  363. data/lib/datadog/tracing/contrib/active_support/ext.rb +29 -0
  364. data/lib/datadog/tracing/contrib/active_support/integration.rb +49 -0
  365. data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +69 -0
  366. data/lib/datadog/tracing/contrib/active_support/notifications/subscriber.rb +69 -0
  367. data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +162 -0
  368. data/lib/datadog/tracing/contrib/active_support/patcher.rb +25 -0
  369. data/lib/datadog/tracing/contrib/analytics.rb +27 -0
  370. data/lib/datadog/tracing/contrib/auto_instrument.rb +51 -0
  371. data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +36 -0
  372. data/lib/datadog/tracing/contrib/aws/ext.rb +26 -0
  373. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +94 -0
  374. data/lib/datadog/tracing/contrib/aws/integration.rb +45 -0
  375. data/lib/datadog/tracing/contrib/aws/parsed_context.rb +58 -0
  376. data/lib/datadog/tracing/contrib/aws/patcher.rb +55 -0
  377. data/lib/datadog/tracing/contrib/aws/services.rb +119 -0
  378. data/lib/datadog/tracing/contrib/concurrent_ruby/configuration/settings.rb +21 -0
  379. data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +51 -0
  380. data/lib/datadog/tracing/contrib/concurrent_ruby/ext.rb +14 -0
  381. data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +25 -0
  382. data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +41 -0
  383. data/lib/datadog/tracing/contrib/concurrent_ruby/patcher.rb +30 -0
  384. data/lib/datadog/tracing/contrib/configurable.rb +100 -0
  385. data/lib/datadog/tracing/contrib/configuration/resolver.rb +83 -0
  386. data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +41 -0
  387. data/lib/datadog/tracing/contrib/configuration/settings.rb +39 -0
  388. data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +36 -0
  389. data/lib/datadog/tracing/contrib/dalli/ext.rb +24 -0
  390. data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +61 -0
  391. data/lib/datadog/tracing/contrib/dalli/integration.rb +50 -0
  392. data/lib/datadog/tracing/contrib/dalli/patcher.rb +26 -0
  393. data/lib/datadog/tracing/contrib/dalli/quantize.rb +24 -0
  394. data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +36 -0
  395. data/lib/datadog/tracing/contrib/delayed_job/ext.rb +26 -0
  396. data/lib/datadog/tracing/contrib/delayed_job/integration.rb +41 -0
  397. data/lib/datadog/tracing/contrib/delayed_job/patcher.rb +35 -0
  398. data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +106 -0
  399. data/lib/datadog/tracing/contrib/delayed_job/server_internal_tracer/worker.rb +32 -0
  400. data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +38 -0
  401. data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +27 -0
  402. data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +48 -0
  403. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +152 -0
  404. data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +85 -0
  405. data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +40 -0
  406. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +174 -0
  407. data/lib/datadog/tracing/contrib/ethon/ext.rb +23 -0
  408. data/lib/datadog/tracing/contrib/ethon/integration.rb +46 -0
  409. data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +95 -0
  410. data/lib/datadog/tracing/contrib/ethon/patcher.rb +28 -0
  411. data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +40 -0
  412. data/lib/datadog/tracing/contrib/excon/ext.rb +20 -0
  413. data/lib/datadog/tracing/contrib/excon/integration.rb +46 -0
  414. data/lib/datadog/tracing/contrib/excon/middleware.rb +169 -0
  415. data/lib/datadog/tracing/contrib/excon/patcher.rb +29 -0
  416. data/lib/datadog/tracing/contrib/ext.rb +30 -0
  417. data/lib/datadog/tracing/contrib/extensions.rb +197 -0
  418. data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +44 -0
  419. data/lib/datadog/tracing/contrib/faraday/connection.rb +20 -0
  420. data/lib/datadog/tracing/contrib/faraday/ext.rb +20 -0
  421. data/lib/datadog/tracing/contrib/faraday/integration.rb +46 -0
  422. data/lib/datadog/tracing/contrib/faraday/middleware.rb +91 -0
  423. data/lib/datadog/tracing/contrib/faraday/patcher.rb +54 -0
  424. data/lib/datadog/tracing/contrib/faraday/rack_builder.rb +20 -0
  425. data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +40 -0
  426. data/lib/datadog/tracing/contrib/grape/endpoint.rb +248 -0
  427. data/lib/datadog/tracing/contrib/grape/ext.rb +26 -0
  428. data/lib/datadog/tracing/contrib/grape/instrumentation.rb +35 -0
  429. data/lib/datadog/tracing/contrib/grape/integration.rb +42 -0
  430. data/lib/datadog/tracing/contrib/grape/patcher.rb +31 -0
  431. data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +34 -0
  432. data/lib/datadog/tracing/contrib/graphql/ext.rb +17 -0
  433. data/lib/datadog/tracing/contrib/graphql/integration.rb +42 -0
  434. data/lib/datadog/tracing/contrib/graphql/patcher.rb +88 -0
  435. data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +41 -0
  436. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +97 -0
  437. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +88 -0
  438. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb +105 -0
  439. data/lib/datadog/tracing/contrib/grpc/distributed/fetcher.rb +26 -0
  440. data/lib/datadog/tracing/contrib/grpc/distributed/propagation.rb +42 -0
  441. data/lib/datadog/tracing/contrib/grpc/ext.rb +25 -0
  442. data/lib/datadog/tracing/contrib/grpc/integration.rb +48 -0
  443. data/lib/datadog/tracing/contrib/grpc/intercept_with_datadog.rb +51 -0
  444. data/lib/datadog/tracing/contrib/grpc/patcher.rb +32 -0
  445. data/lib/datadog/tracing/contrib/hanami/action_tracer.rb +45 -0
  446. data/lib/datadog/tracing/contrib/hanami/configuration/settings.rb +20 -0
  447. data/lib/datadog/tracing/contrib/hanami/ext.rb +22 -0
  448. data/lib/datadog/tracing/contrib/hanami/integration.rb +42 -0
  449. data/lib/datadog/tracing/contrib/hanami/patcher.rb +31 -0
  450. data/lib/datadog/tracing/contrib/hanami/plugin.rb +21 -0
  451. data/lib/datadog/tracing/contrib/hanami/renderer_policy_tracing.rb +39 -0
  452. data/lib/datadog/tracing/contrib/hanami/router_tracing.rb +42 -0
  453. data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +41 -0
  454. data/lib/datadog/tracing/contrib/http/configuration/settings.rb +45 -0
  455. data/lib/datadog/tracing/contrib/http/distributed/fetcher.rb +38 -0
  456. data/lib/datadog/tracing/contrib/http/distributed/propagation.rb +37 -0
  457. data/lib/datadog/tracing/contrib/http/ext.rb +21 -0
  458. data/lib/datadog/tracing/contrib/http/instrumentation.rb +135 -0
  459. data/lib/datadog/tracing/contrib/http/integration.rb +47 -0
  460. data/lib/datadog/tracing/contrib/http/patcher.rb +28 -0
  461. data/lib/datadog/tracing/contrib/http_annotation_helper.rb +15 -0
  462. data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +45 -0
  463. data/lib/datadog/tracing/contrib/httpclient/ext.rb +21 -0
  464. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +115 -0
  465. data/lib/datadog/tracing/contrib/httpclient/integration.rb +46 -0
  466. data/lib/datadog/tracing/contrib/httpclient/patcher.rb +40 -0
  467. data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +45 -0
  468. data/lib/datadog/tracing/contrib/httprb/ext.rb +21 -0
  469. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +126 -0
  470. data/lib/datadog/tracing/contrib/httprb/integration.rb +46 -0
  471. data/lib/datadog/tracing/contrib/httprb/patcher.rb +40 -0
  472. data/lib/datadog/tracing/contrib/integration.rb +76 -0
  473. data/lib/datadog/tracing/contrib/kafka/configuration/settings.rb +33 -0
  474. data/lib/datadog/tracing/contrib/kafka/consumer_event.rb +17 -0
  475. data/lib/datadog/tracing/contrib/kafka/consumer_group_event.rb +16 -0
  476. data/lib/datadog/tracing/contrib/kafka/event.rb +51 -0
  477. data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +40 -0
  478. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +47 -0
  479. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +45 -0
  480. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +45 -0
  481. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +35 -0
  482. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +35 -0
  483. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +35 -0
  484. data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +39 -0
  485. data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +42 -0
  486. data/lib/datadog/tracing/contrib/kafka/events.rb +46 -0
  487. data/lib/datadog/tracing/contrib/kafka/ext.rb +51 -0
  488. data/lib/datadog/tracing/contrib/kafka/integration.rb +42 -0
  489. data/lib/datadog/tracing/contrib/kafka/patcher.rb +27 -0
  490. data/lib/datadog/tracing/contrib/lograge/configuration/settings.rb +21 -0
  491. data/lib/datadog/tracing/contrib/lograge/ext.rb +13 -0
  492. data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +44 -0
  493. data/lib/datadog/tracing/contrib/lograge/integration.rb +48 -0
  494. data/lib/datadog/tracing/contrib/lograge/patcher.rb +27 -0
  495. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +40 -0
  496. data/lib/datadog/tracing/contrib/mongodb/ext.rb +33 -0
  497. data/lib/datadog/tracing/contrib/mongodb/instrumentation.rb +45 -0
  498. data/lib/datadog/tracing/contrib/mongodb/integration.rb +46 -0
  499. data/lib/datadog/tracing/contrib/mongodb/parsers.rb +47 -0
  500. data/lib/datadog/tracing/contrib/mongodb/patcher.rb +32 -0
  501. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +125 -0
  502. data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +48 -0
  503. data/lib/datadog/tracing/contrib/mysql2/ext.rb +22 -0
  504. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +75 -0
  505. data/lib/datadog/tracing/contrib/mysql2/integration.rb +41 -0
  506. data/lib/datadog/tracing/contrib/mysql2/patcher.rb +29 -0
  507. data/lib/datadog/tracing/contrib/patchable.rb +107 -0
  508. data/lib/datadog/tracing/contrib/patcher.rb +84 -0
  509. data/lib/datadog/tracing/contrib/pg/configuration/settings.rb +48 -0
  510. data/lib/datadog/tracing/contrib/pg/ext.rb +31 -0
  511. data/lib/datadog/tracing/contrib/pg/instrumentation.rb +166 -0
  512. data/lib/datadog/tracing/contrib/pg/integration.rb +41 -0
  513. data/lib/datadog/tracing/contrib/pg/patcher.rb +29 -0
  514. data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +36 -0
  515. data/lib/datadog/tracing/contrib/presto/ext.rb +32 -0
  516. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +125 -0
  517. data/lib/datadog/tracing/contrib/presto/integration.rb +41 -0
  518. data/lib/datadog/tracing/contrib/presto/patcher.rb +35 -0
  519. data/lib/datadog/tracing/contrib/propagation/sql_comment/comment.rb +41 -0
  520. data/lib/datadog/tracing/contrib/propagation/sql_comment/ext.rb +31 -0
  521. data/lib/datadog/tracing/contrib/propagation/sql_comment/mode.rb +26 -0
  522. data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +45 -0
  523. data/lib/datadog/tracing/contrib/qless/configuration/settings.rb +38 -0
  524. data/lib/datadog/tracing/contrib/qless/ext.rb +24 -0
  525. data/lib/datadog/tracing/contrib/qless/integration.rb +41 -0
  526. data/lib/datadog/tracing/contrib/qless/patcher.rb +34 -0
  527. data/lib/datadog/tracing/contrib/qless/qless_job.rb +75 -0
  528. data/lib/datadog/tracing/contrib/qless/tracer_cleaner.rb +28 -0
  529. data/lib/datadog/tracing/contrib/que/configuration/settings.rb +47 -0
  530. data/lib/datadog/tracing/contrib/que/ext.rb +32 -0
  531. data/lib/datadog/tracing/contrib/que/integration.rb +44 -0
  532. data/lib/datadog/tracing/contrib/que/patcher.rb +26 -0
  533. data/lib/datadog/tracing/contrib/que/tracer.rb +63 -0
  534. data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +33 -0
  535. data/lib/datadog/tracing/contrib/racecar/event.rb +77 -0
  536. data/lib/datadog/tracing/contrib/racecar/events/batch.rb +36 -0
  537. data/lib/datadog/tracing/contrib/racecar/events/consume.rb +33 -0
  538. data/lib/datadog/tracing/contrib/racecar/events/message.rb +36 -0
  539. data/lib/datadog/tracing/contrib/racecar/events.rb +34 -0
  540. data/lib/datadog/tracing/contrib/racecar/ext.rb +30 -0
  541. data/lib/datadog/tracing/contrib/racecar/integration.rb +42 -0
  542. data/lib/datadog/tracing/contrib/racecar/patcher.rb +27 -0
  543. data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +49 -0
  544. data/lib/datadog/tracing/contrib/rack/ext.rb +28 -0
  545. data/lib/datadog/tracing/contrib/rack/header_collection.rb +35 -0
  546. data/lib/datadog/tracing/contrib/rack/integration.rb +48 -0
  547. data/lib/datadog/tracing/contrib/rack/middlewares.rb +347 -0
  548. data/lib/datadog/tracing/contrib/rack/patcher.rb +117 -0
  549. data/lib/datadog/tracing/contrib/rack/request_queue.rb +46 -0
  550. data/lib/datadog/tracing/contrib/rails/auto_instrument_railtie.rb +10 -0
  551. data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +72 -0
  552. data/lib/datadog/tracing/contrib/rails/ext.rb +17 -0
  553. data/lib/datadog/tracing/contrib/rails/framework.rb +146 -0
  554. data/lib/datadog/tracing/contrib/rails/integration.rb +47 -0
  555. data/lib/datadog/tracing/contrib/rails/log_injection.rb +30 -0
  556. data/lib/datadog/tracing/contrib/rails/middlewares.rb +44 -0
  557. data/lib/datadog/tracing/contrib/rails/patcher.rb +118 -0
  558. data/lib/datadog/tracing/contrib/rails/railtie.rb +17 -0
  559. data/lib/datadog/tracing/contrib/rails/utils.rb +26 -0
  560. data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +49 -0
  561. data/lib/datadog/tracing/contrib/rake/ext.rb +24 -0
  562. data/lib/datadog/tracing/contrib/rake/instrumentation.rb +101 -0
  563. data/lib/datadog/tracing/contrib/rake/integration.rb +41 -0
  564. data/lib/datadog/tracing/contrib/rake/patcher.rb +31 -0
  565. data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +47 -0
  566. data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +41 -0
  567. data/lib/datadog/tracing/contrib/redis/ext.rb +27 -0
  568. data/lib/datadog/tracing/contrib/redis/instrumentation.rb +86 -0
  569. data/lib/datadog/tracing/contrib/redis/integration.rb +78 -0
  570. data/lib/datadog/tracing/contrib/redis/patcher.rb +77 -0
  571. data/lib/datadog/tracing/contrib/redis/quantize.rb +80 -0
  572. data/lib/datadog/tracing/contrib/redis/tags.rb +54 -0
  573. data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +70 -0
  574. data/lib/datadog/tracing/contrib/redis/vendor/resolver.rb +160 -0
  575. data/lib/datadog/tracing/contrib/registerable.rb +48 -0
  576. data/lib/datadog/tracing/contrib/registry.rb +50 -0
  577. data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +35 -0
  578. data/lib/datadog/tracing/contrib/resque/ext.rb +19 -0
  579. data/lib/datadog/tracing/contrib/resque/integration.rb +46 -0
  580. data/lib/datadog/tracing/contrib/resque/patcher.rb +27 -0
  581. data/lib/datadog/tracing/contrib/resque/resque_job.rb +104 -0
  582. data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +40 -0
  583. data/lib/datadog/tracing/contrib/rest_client/ext.rb +20 -0
  584. data/lib/datadog/tracing/contrib/rest_client/integration.rb +41 -0
  585. data/lib/datadog/tracing/contrib/rest_client/patcher.rb +26 -0
  586. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +104 -0
  587. data/lib/datadog/tracing/contrib/semantic_logger/configuration/settings.rb +21 -0
  588. data/lib/datadog/tracing/contrib/semantic_logger/ext.rb +13 -0
  589. data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +48 -0
  590. data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +50 -0
  591. data/lib/datadog/tracing/contrib/semantic_logger/patcher.rb +27 -0
  592. data/lib/datadog/tracing/contrib/sequel/configuration/settings.rb +31 -0
  593. data/lib/datadog/tracing/contrib/sequel/database.rb +57 -0
  594. data/lib/datadog/tracing/contrib/sequel/dataset.rb +62 -0
  595. data/lib/datadog/tracing/contrib/sequel/ext.rb +20 -0
  596. data/lib/datadog/tracing/contrib/sequel/integration.rb +41 -0
  597. data/lib/datadog/tracing/contrib/sequel/patcher.rb +35 -0
  598. data/lib/datadog/tracing/contrib/sequel/utils.rb +85 -0
  599. data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +36 -0
  600. data/lib/datadog/tracing/contrib/shoryuken/ext.rb +24 -0
  601. data/lib/datadog/tracing/contrib/shoryuken/integration.rb +42 -0
  602. data/lib/datadog/tracing/contrib/shoryuken/patcher.rb +26 -0
  603. data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +63 -0
  604. data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +57 -0
  605. data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +42 -0
  606. data/lib/datadog/tracing/contrib/sidekiq/ext.rb +42 -0
  607. data/lib/datadog/tracing/contrib/sidekiq/integration.rb +51 -0
  608. data/lib/datadog/tracing/contrib/sidekiq/patcher.rb +76 -0
  609. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/heartbeat.rb +54 -0
  610. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/job_fetch.rb +34 -0
  611. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/redis_info.rb +32 -0
  612. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/scheduled_poller.rb +55 -0
  613. data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +102 -0
  614. data/lib/datadog/tracing/contrib/sidekiq/tracing.rb +42 -0
  615. data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +41 -0
  616. data/lib/datadog/tracing/contrib/sinatra/env.rb +53 -0
  617. data/lib/datadog/tracing/contrib/sinatra/ext.rb +34 -0
  618. data/lib/datadog/tracing/contrib/sinatra/framework.rb +114 -0
  619. data/lib/datadog/tracing/contrib/sinatra/headers.rb +33 -0
  620. data/lib/datadog/tracing/contrib/sinatra/integration.rb +41 -0
  621. data/lib/datadog/tracing/contrib/sinatra/patcher.rb +73 -0
  622. data/lib/datadog/tracing/contrib/sinatra/tracer.rb +84 -0
  623. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +125 -0
  624. data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +36 -0
  625. data/lib/datadog/tracing/contrib/sneakers/ext.rb +25 -0
  626. data/lib/datadog/tracing/contrib/sneakers/integration.rb +44 -0
  627. data/lib/datadog/tracing/contrib/sneakers/patcher.rb +27 -0
  628. data/lib/datadog/tracing/contrib/sneakers/tracer.rb +60 -0
  629. data/lib/datadog/tracing/contrib/status_code_matcher.rb +73 -0
  630. data/lib/datadog/tracing/contrib/stripe/configuration/settings.rb +33 -0
  631. data/lib/datadog/tracing/contrib/stripe/ext.rb +26 -0
  632. data/lib/datadog/tracing/contrib/stripe/integration.rb +43 -0
  633. data/lib/datadog/tracing/contrib/stripe/patcher.rb +28 -0
  634. data/lib/datadog/tracing/contrib/stripe/request.rb +67 -0
  635. data/lib/datadog/tracing/contrib/sucker_punch/configuration/settings.rb +33 -0
  636. data/lib/datadog/tracing/contrib/sucker_punch/exception_handler.rb +26 -0
  637. data/lib/datadog/tracing/contrib/sucker_punch/ext.rb +25 -0
  638. data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +102 -0
  639. data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +41 -0
  640. data/lib/datadog/tracing/contrib/sucker_punch/patcher.rb +33 -0
  641. data/lib/datadog/tracing/contrib/utils/database.rb +29 -0
  642. data/lib/datadog/tracing/contrib/utils/quantization/hash.rb +109 -0
  643. data/lib/datadog/tracing/contrib/utils/quantization/http.rb +177 -0
  644. data/lib/datadog/tracing/contrib.rb +77 -0
  645. data/lib/datadog/tracing/correlation.rb +112 -0
  646. data/lib/datadog/tracing/diagnostics/ext.rb +34 -0
  647. data/lib/datadog/tracing/diagnostics/health.rb +38 -0
  648. data/lib/datadog/tracing/distributed/b3_multi.rb +72 -0
  649. data/lib/datadog/tracing/distributed/b3_single.rb +68 -0
  650. data/lib/datadog/tracing/distributed/datadog.rb +200 -0
  651. data/lib/datadog/tracing/distributed/datadog_tags_codec.rb +84 -0
  652. data/lib/datadog/tracing/distributed/fetcher.rb +21 -0
  653. data/lib/datadog/tracing/distributed/headers/ext.rb +34 -0
  654. data/lib/datadog/tracing/distributed/helpers.rb +65 -0
  655. data/lib/datadog/tracing/distributed/none.rb +18 -0
  656. data/lib/datadog/tracing/distributed/propagation.rb +126 -0
  657. data/lib/datadog/tracing/distributed/trace_context.rb +373 -0
  658. data/lib/datadog/tracing/event.rb +76 -0
  659. data/lib/datadog/tracing/flush.rb +94 -0
  660. data/lib/datadog/tracing/metadata/analytics.rb +24 -0
  661. data/lib/datadog/tracing/metadata/errors.rb +22 -0
  662. data/lib/datadog/tracing/metadata/ext.rb +182 -0
  663. data/lib/datadog/tracing/metadata/tagging.rb +129 -0
  664. data/lib/datadog/tracing/metadata.rb +18 -0
  665. data/lib/datadog/tracing/pipeline/span_filter.rb +44 -0
  666. data/lib/datadog/tracing/pipeline/span_processor.rb +37 -0
  667. data/lib/datadog/tracing/pipeline.rb +63 -0
  668. data/lib/datadog/tracing/propagation/http.rb +12 -0
  669. data/lib/datadog/tracing/runtime/metrics.rb +17 -0
  670. data/lib/datadog/tracing/sampling/all_sampler.rb +23 -0
  671. data/lib/datadog/tracing/sampling/ext.rb +56 -0
  672. data/lib/datadog/tracing/sampling/matcher.rb +66 -0
  673. data/lib/datadog/tracing/sampling/priority_sampler.rb +163 -0
  674. data/lib/datadog/tracing/sampling/rate_by_key_sampler.rb +94 -0
  675. data/lib/datadog/tracing/sampling/rate_by_service_sampler.rb +63 -0
  676. data/lib/datadog/tracing/sampling/rate_limiter.rb +186 -0
  677. data/lib/datadog/tracing/sampling/rate_sampler.rb +70 -0
  678. data/lib/datadog/tracing/sampling/rule.rb +74 -0
  679. data/lib/datadog/tracing/sampling/rule_sampler.rb +130 -0
  680. data/lib/datadog/tracing/sampling/sampler.rb +42 -0
  681. data/lib/datadog/tracing/sampling/span/ext.rb +25 -0
  682. data/lib/datadog/tracing/sampling/span/matcher.rb +89 -0
  683. data/lib/datadog/tracing/sampling/span/rule.rb +82 -0
  684. data/lib/datadog/tracing/sampling/span/rule_parser.rb +104 -0
  685. data/lib/datadog/tracing/sampling/span/sampler.rb +75 -0
  686. data/lib/datadog/tracing/span.rb +214 -0
  687. data/lib/datadog/tracing/span_operation.rb +518 -0
  688. data/lib/datadog/tracing/sync_writer.rb +67 -0
  689. data/lib/datadog/tracing/trace_digest.rb +144 -0
  690. data/lib/datadog/tracing/trace_operation.rb +474 -0
  691. data/lib/datadog/tracing/trace_segment.rb +217 -0
  692. data/lib/datadog/tracing/tracer.rb +531 -0
  693. data/lib/datadog/tracing/utils.rb +81 -0
  694. data/lib/datadog/tracing/workers/trace_writer.rb +193 -0
  695. data/lib/datadog/tracing/workers.rb +123 -0
  696. data/lib/datadog/tracing/writer.rb +185 -0
  697. data/lib/datadog/tracing.rb +140 -0
  698. data/lib/ddtrace/auto_instrument.rb +13 -4
  699. data/lib/ddtrace/auto_instrument_base.rb +0 -1
  700. data/lib/ddtrace/profiling/preload.rb +2 -4
  701. data/lib/ddtrace/transport/ext.rb +39 -0
  702. data/lib/ddtrace/transport/http/adapters/net.rb +4 -4
  703. data/lib/ddtrace/transport/http/adapters/registry.rb +0 -1
  704. data/lib/ddtrace/transport/http/adapters/test.rb +1 -2
  705. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +3 -4
  706. data/lib/ddtrace/transport/http/api/endpoint.rb +0 -1
  707. data/lib/ddtrace/transport/http/api/fallbacks.rb +0 -1
  708. data/lib/ddtrace/transport/http/api/instance.rb +0 -1
  709. data/lib/ddtrace/transport/http/api/map.rb +1 -2
  710. data/lib/ddtrace/transport/http/api/spec.rb +0 -1
  711. data/lib/ddtrace/transport/http/api.rb +7 -15
  712. data/lib/ddtrace/transport/http/builder.rb +6 -7
  713. data/lib/ddtrace/transport/http/client.rb +4 -4
  714. data/lib/ddtrace/transport/http/env.rb +0 -1
  715. data/lib/ddtrace/transport/http/response.rb +35 -6
  716. data/lib/ddtrace/transport/http/statistics.rb +1 -2
  717. data/lib/ddtrace/transport/http/traces.rb +6 -5
  718. data/lib/ddtrace/transport/http.rb +37 -33
  719. data/lib/ddtrace/transport/io/client.rb +5 -4
  720. data/lib/ddtrace/transport/io/response.rb +1 -2
  721. data/lib/ddtrace/transport/io/traces.rb +4 -7
  722. data/lib/ddtrace/transport/io.rb +4 -5
  723. data/lib/ddtrace/transport/parcel.rb +1 -3
  724. data/lib/ddtrace/transport/request.rb +0 -1
  725. data/lib/ddtrace/transport/response.rb +0 -1
  726. data/lib/ddtrace/transport/serializable_trace.rb +122 -0
  727. data/lib/ddtrace/transport/statistics.rb +5 -5
  728. data/lib/ddtrace/transport/trace_formatter.rb +196 -0
  729. data/lib/ddtrace/transport/traces.rb +20 -10
  730. data/lib/ddtrace/version.rb +14 -14
  731. data/lib/ddtrace.rb +9 -52
  732. metadata +703 -497
  733. data/.editorconfig +0 -22
  734. data/.gitignore +0 -67
  735. data/.yardopts +0 -5
  736. data/CONTRIBUTING.md +0 -81
  737. data/ddtrace.gemspec +0 -56
  738. data/docs/DevelopmentGuide.md +0 -259
  739. data/docs/GettingStarted.md +0 -2626
  740. data/docs/ProfilingDevelopment.md +0 -107
  741. data/lib/datadog/ci/context_flush.rb +0 -29
  742. data/lib/datadog/contrib.rb +0 -71
  743. data/lib/ddtrace/analytics.rb +0 -39
  744. data/lib/ddtrace/buffer.rb +0 -340
  745. data/lib/ddtrace/chunker.rb +0 -35
  746. data/lib/ddtrace/configuration/agent_settings_resolver.rb +0 -309
  747. data/lib/ddtrace/configuration/base.rb +0 -82
  748. data/lib/ddtrace/configuration/components.rb +0 -292
  749. data/lib/ddtrace/configuration/dependency_resolver.rb +0 -25
  750. data/lib/ddtrace/configuration/option.rb +0 -65
  751. data/lib/ddtrace/configuration/option_definition.rb +0 -122
  752. data/lib/ddtrace/configuration/option_definition_set.rb +0 -19
  753. data/lib/ddtrace/configuration/option_set.rb +0 -7
  754. data/lib/ddtrace/configuration/options.rb +0 -112
  755. data/lib/ddtrace/configuration/pin_setup.rb +0 -32
  756. data/lib/ddtrace/configuration/settings.rb +0 -413
  757. data/lib/ddtrace/configuration.rb +0 -195
  758. data/lib/ddtrace/context.rb +0 -334
  759. data/lib/ddtrace/context_flush.rb +0 -82
  760. data/lib/ddtrace/context_provider.rb +0 -62
  761. data/lib/ddtrace/contrib/action_cable/configuration/settings.rb +0 -31
  762. data/lib/ddtrace/contrib/action_cable/event.rb +0 -67
  763. data/lib/ddtrace/contrib/action_cable/events/broadcast.rb +0 -50
  764. data/lib/ddtrace/contrib/action_cable/events/perform_action.rb +0 -56
  765. data/lib/ddtrace/contrib/action_cable/events/transmit.rb +0 -51
  766. data/lib/ddtrace/contrib/action_cable/events.rb +0 -34
  767. data/lib/ddtrace/contrib/action_cable/ext.rb +0 -27
  768. data/lib/ddtrace/contrib/action_cable/instrumentation.rb +0 -78
  769. data/lib/ddtrace/contrib/action_cable/integration.rb +0 -46
  770. data/lib/ddtrace/contrib/action_cable/patcher.rb +0 -29
  771. data/lib/ddtrace/contrib/action_mailer/configuration/settings.rb +0 -32
  772. data/lib/ddtrace/contrib/action_mailer/event.rb +0 -50
  773. data/lib/ddtrace/contrib/action_mailer/events/deliver.rb +0 -54
  774. data/lib/ddtrace/contrib/action_mailer/events/process.rb +0 -41
  775. data/lib/ddtrace/contrib/action_mailer/events.rb +0 -31
  776. data/lib/ddtrace/contrib/action_mailer/ext.rb +0 -32
  777. data/lib/ddtrace/contrib/action_mailer/integration.rb +0 -45
  778. data/lib/ddtrace/contrib/action_mailer/patcher.rb +0 -27
  779. data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +0 -157
  780. data/lib/ddtrace/contrib/action_pack/action_controller/patcher.rb +0 -26
  781. data/lib/ddtrace/contrib/action_pack/configuration/settings.rb +0 -33
  782. data/lib/ddtrace/contrib/action_pack/ext.rb +0 -20
  783. data/lib/ddtrace/contrib/action_pack/integration.rb +0 -46
  784. data/lib/ddtrace/contrib/action_pack/patcher.rb +0 -24
  785. data/lib/ddtrace/contrib/action_pack/utils.rb +0 -37
  786. data/lib/ddtrace/contrib/action_view/configuration/settings.rb +0 -32
  787. data/lib/ddtrace/contrib/action_view/event.rb +0 -36
  788. data/lib/ddtrace/contrib/action_view/events/render_partial.rb +0 -47
  789. data/lib/ddtrace/contrib/action_view/events/render_template.rb +0 -50
  790. data/lib/ddtrace/contrib/action_view/events.rb +0 -31
  791. data/lib/ddtrace/contrib/action_view/ext.rb +0 -21
  792. data/lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb +0 -75
  793. data/lib/ddtrace/contrib/action_view/instrumentation/template_renderer.rb +0 -168
  794. data/lib/ddtrace/contrib/action_view/integration.rb +0 -53
  795. data/lib/ddtrace/contrib/action_view/patcher.rb +0 -48
  796. data/lib/ddtrace/contrib/action_view/utils.rb +0 -33
  797. data/lib/ddtrace/contrib/active_job/configuration/settings.rb +0 -33
  798. data/lib/ddtrace/contrib/active_job/event.rb +0 -54
  799. data/lib/ddtrace/contrib/active_job/events/discard.rb +0 -46
  800. data/lib/ddtrace/contrib/active_job/events/enqueue.rb +0 -45
  801. data/lib/ddtrace/contrib/active_job/events/enqueue_at.rb +0 -45
  802. data/lib/ddtrace/contrib/active_job/events/enqueue_retry.rb +0 -47
  803. data/lib/ddtrace/contrib/active_job/events/perform.rb +0 -45
  804. data/lib/ddtrace/contrib/active_job/events/retry_stopped.rb +0 -46
  805. data/lib/ddtrace/contrib/active_job/events.rb +0 -39
  806. data/lib/ddtrace/contrib/active_job/ext.rb +0 -32
  807. data/lib/ddtrace/contrib/active_job/integration.rb +0 -46
  808. data/lib/ddtrace/contrib/active_job/log_injection.rb +0 -21
  809. data/lib/ddtrace/contrib/active_job/patcher.rb +0 -33
  810. data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +0 -31
  811. data/lib/ddtrace/contrib/active_model_serializers/event.rb +0 -69
  812. data/lib/ddtrace/contrib/active_model_serializers/events/render.rb +0 -33
  813. data/lib/ddtrace/contrib/active_model_serializers/events/serialize.rb +0 -36
  814. data/lib/ddtrace/contrib/active_model_serializers/events.rb +0 -31
  815. data/lib/ddtrace/contrib/active_model_serializers/ext.rb +0 -21
  816. data/lib/ddtrace/contrib/active_model_serializers/integration.rb +0 -41
  817. data/lib/ddtrace/contrib/active_model_serializers/patcher.rb +0 -30
  818. data/lib/ddtrace/contrib/active_record/configuration/makara_resolver.rb +0 -31
  819. data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +0 -135
  820. data/lib/ddtrace/contrib/active_record/configuration/settings.rb +0 -36
  821. data/lib/ddtrace/contrib/active_record/event.rb +0 -31
  822. data/lib/ddtrace/contrib/active_record/events/instantiation.rb +0 -61
  823. data/lib/ddtrace/contrib/active_record/events/sql.rb +0 -69
  824. data/lib/ddtrace/contrib/active_record/events.rb +0 -31
  825. data/lib/ddtrace/contrib/active_record/ext.rb +0 -25
  826. data/lib/ddtrace/contrib/active_record/integration.rb +0 -54
  827. data/lib/ddtrace/contrib/active_record/patcher.rb +0 -24
  828. data/lib/ddtrace/contrib/active_record/utils.rb +0 -124
  829. data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +0 -259
  830. data/lib/ddtrace/contrib/active_support/cache/patcher.rb +0 -70
  831. data/lib/ddtrace/contrib/active_support/cache/redis.rb +0 -44
  832. data/lib/ddtrace/contrib/active_support/configuration/settings.rb +0 -31
  833. data/lib/ddtrace/contrib/active_support/ext.rb +0 -28
  834. data/lib/ddtrace/contrib/active_support/integration.rb +0 -47
  835. data/lib/ddtrace/contrib/active_support/notifications/event.rb +0 -76
  836. data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +0 -68
  837. data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +0 -164
  838. data/lib/ddtrace/contrib/active_support/patcher.rb +0 -24
  839. data/lib/ddtrace/contrib/analytics.rb +0 -25
  840. data/lib/ddtrace/contrib/auto_instrument.rb +0 -48
  841. data/lib/ddtrace/contrib/aws/configuration/settings.rb +0 -31
  842. data/lib/ddtrace/contrib/aws/ext.rb +0 -24
  843. data/lib/ddtrace/contrib/aws/instrumentation.rb +0 -91
  844. data/lib/ddtrace/contrib/aws/integration.rb +0 -43
  845. data/lib/ddtrace/contrib/aws/parsed_context.rb +0 -57
  846. data/lib/ddtrace/contrib/aws/patcher.rb +0 -54
  847. data/lib/ddtrace/contrib/aws/services.rb +0 -119
  848. data/lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb +0 -21
  849. data/lib/ddtrace/contrib/concurrent_ruby/context_composite_executor_service.rb +0 -42
  850. data/lib/ddtrace/contrib/concurrent_ruby/ext.rb +0 -13
  851. data/lib/ddtrace/contrib/concurrent_ruby/future_patch.rb +0 -24
  852. data/lib/ddtrace/contrib/concurrent_ruby/integration.rb +0 -39
  853. data/lib/ddtrace/contrib/concurrent_ruby/patcher.rb +0 -30
  854. data/lib/ddtrace/contrib/configurable.rb +0 -103
  855. data/lib/ddtrace/contrib/configuration/resolver.rb +0 -82
  856. data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +0 -40
  857. data/lib/ddtrace/contrib/configuration/settings.rb +0 -56
  858. data/lib/ddtrace/contrib/dalli/configuration/settings.rb +0 -31
  859. data/lib/ddtrace/contrib/dalli/ext.rb +0 -21
  860. data/lib/ddtrace/contrib/dalli/instrumentation.rb +0 -55
  861. data/lib/ddtrace/contrib/dalli/integration.rb +0 -39
  862. data/lib/ddtrace/contrib/dalli/patcher.rb +0 -26
  863. data/lib/ddtrace/contrib/dalli/quantize.rb +0 -23
  864. data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +0 -33
  865. data/lib/ddtrace/contrib/delayed_job/ext.rb +0 -24
  866. data/lib/ddtrace/contrib/delayed_job/integration.rb +0 -39
  867. data/lib/ddtrace/contrib/delayed_job/patcher.rb +0 -29
  868. data/lib/ddtrace/contrib/delayed_job/plugin.rb +0 -85
  869. data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +0 -32
  870. data/lib/ddtrace/contrib/elasticsearch/ext.rb +0 -23
  871. data/lib/ddtrace/contrib/elasticsearch/integration.rb +0 -40
  872. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +0 -123
  873. data/lib/ddtrace/contrib/elasticsearch/quantize.rb +0 -84
  874. data/lib/ddtrace/contrib/ethon/configuration/settings.rb +0 -33
  875. data/lib/ddtrace/contrib/ethon/easy_patch.rb +0 -152
  876. data/lib/ddtrace/contrib/ethon/ext.rb +0 -20
  877. data/lib/ddtrace/contrib/ethon/integration.rb +0 -44
  878. data/lib/ddtrace/contrib/ethon/multi_patch.rb +0 -85
  879. data/lib/ddtrace/contrib/ethon/patcher.rb +0 -27
  880. data/lib/ddtrace/contrib/excon/configuration/settings.rb +0 -34
  881. data/lib/ddtrace/contrib/excon/ext.rb +0 -18
  882. data/lib/ddtrace/contrib/excon/integration.rb +0 -44
  883. data/lib/ddtrace/contrib/excon/middleware.rb +0 -164
  884. data/lib/ddtrace/contrib/excon/patcher.rb +0 -28
  885. data/lib/ddtrace/contrib/extensions.rb +0 -169
  886. data/lib/ddtrace/contrib/faraday/configuration/settings.rb +0 -39
  887. data/lib/ddtrace/contrib/faraday/connection.rb +0 -19
  888. data/lib/ddtrace/contrib/faraday/ext.rb +0 -18
  889. data/lib/ddtrace/contrib/faraday/integration.rb +0 -44
  890. data/lib/ddtrace/contrib/faraday/middleware.rb +0 -86
  891. data/lib/ddtrace/contrib/faraday/patcher.rb +0 -54
  892. data/lib/ddtrace/contrib/faraday/rack_builder.rb +0 -19
  893. data/lib/ddtrace/contrib/grape/configuration/settings.rb +0 -39
  894. data/lib/ddtrace/contrib/grape/endpoint.rb +0 -246
  895. data/lib/ddtrace/contrib/grape/ext.rb +0 -24
  896. data/lib/ddtrace/contrib/grape/instrumentation.rb +0 -34
  897. data/lib/ddtrace/contrib/grape/integration.rb +0 -40
  898. data/lib/ddtrace/contrib/grape/patcher.rb +0 -32
  899. data/lib/ddtrace/contrib/graphql/configuration/settings.rb +0 -33
  900. data/lib/ddtrace/contrib/graphql/ext.rb +0 -17
  901. data/lib/ddtrace/contrib/graphql/integration.rb +0 -40
  902. data/lib/ddtrace/contrib/graphql/patcher.rb +0 -61
  903. data/lib/ddtrace/contrib/grpc/configuration/settings.rb +0 -32
  904. data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +0 -59
  905. data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +0 -80
  906. data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +0 -79
  907. data/lib/ddtrace/contrib/grpc/ext.rb +0 -19
  908. data/lib/ddtrace/contrib/grpc/integration.rb +0 -39
  909. data/lib/ddtrace/contrib/grpc/intercept_with_datadog.rb +0 -50
  910. data/lib/ddtrace/contrib/grpc/patcher.rb +0 -34
  911. data/lib/ddtrace/contrib/http/circuit_breaker.rb +0 -38
  912. data/lib/ddtrace/contrib/http/configuration/settings.rb +0 -33
  913. data/lib/ddtrace/contrib/http/ext.rb +0 -18
  914. data/lib/ddtrace/contrib/http/instrumentation.rb +0 -180
  915. data/lib/ddtrace/contrib/http/integration.rb +0 -46
  916. data/lib/ddtrace/contrib/http/patcher.rb +0 -27
  917. data/lib/ddtrace/contrib/http_annotation_helper.rb +0 -11
  918. data/lib/ddtrace/contrib/httpclient/configuration/settings.rb +0 -33
  919. data/lib/ddtrace/contrib/httpclient/ext.rb +0 -18
  920. data/lib/ddtrace/contrib/httpclient/instrumentation.rb +0 -148
  921. data/lib/ddtrace/contrib/httpclient/integration.rb +0 -44
  922. data/lib/ddtrace/contrib/httpclient/patcher.rb +0 -39
  923. data/lib/ddtrace/contrib/httprb/configuration/settings.rb +0 -33
  924. data/lib/ddtrace/contrib/httprb/ext.rb +0 -18
  925. data/lib/ddtrace/contrib/httprb/instrumentation.rb +0 -158
  926. data/lib/ddtrace/contrib/httprb/integration.rb +0 -44
  927. data/lib/ddtrace/contrib/httprb/patcher.rb +0 -39
  928. data/lib/ddtrace/contrib/integration.rb +0 -17
  929. data/lib/ddtrace/contrib/kafka/configuration/settings.rb +0 -31
  930. data/lib/ddtrace/contrib/kafka/consumer_event.rb +0 -15
  931. data/lib/ddtrace/contrib/kafka/consumer_group_event.rb +0 -15
  932. data/lib/ddtrace/contrib/kafka/event.rb +0 -52
  933. data/lib/ddtrace/contrib/kafka/events/connection/request.rb +0 -35
  934. data/lib/ddtrace/contrib/kafka/events/consumer/process_batch.rb +0 -42
  935. data/lib/ddtrace/contrib/kafka/events/consumer/process_message.rb +0 -40
  936. data/lib/ddtrace/contrib/kafka/events/consumer_group/heartbeat.rb +0 -40
  937. data/lib/ddtrace/contrib/kafka/events/consumer_group/join_group.rb +0 -30
  938. data/lib/ddtrace/contrib/kafka/events/consumer_group/leave_group.rb +0 -30
  939. data/lib/ddtrace/contrib/kafka/events/consumer_group/sync_group.rb +0 -30
  940. data/lib/ddtrace/contrib/kafka/events/produce_operation/send_messages.rb +0 -33
  941. data/lib/ddtrace/contrib/kafka/events/producer/deliver_messages.rb +0 -36
  942. data/lib/ddtrace/contrib/kafka/events.rb +0 -45
  943. data/lib/ddtrace/contrib/kafka/ext.rb +0 -42
  944. data/lib/ddtrace/contrib/kafka/integration.rb +0 -40
  945. data/lib/ddtrace/contrib/kafka/patcher.rb +0 -27
  946. data/lib/ddtrace/contrib/lograge/configuration/settings.rb +0 -19
  947. data/lib/ddtrace/contrib/lograge/ext.rb +0 -11
  948. data/lib/ddtrace/contrib/lograge/instrumentation.rb +0 -39
  949. data/lib/ddtrace/contrib/lograge/integration.rb +0 -46
  950. data/lib/ddtrace/contrib/lograge/patcher.rb +0 -26
  951. data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +0 -34
  952. data/lib/ddtrace/contrib/mongodb/ext.rb +0 -24
  953. data/lib/ddtrace/contrib/mongodb/instrumentation.rb +0 -70
  954. data/lib/ddtrace/contrib/mongodb/integration.rb +0 -44
  955. data/lib/ddtrace/contrib/mongodb/parsers.rb +0 -69
  956. data/lib/ddtrace/contrib/mongodb/patcher.rb +0 -32
  957. data/lib/ddtrace/contrib/mongodb/subscribers.rb +0 -112
  958. data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +0 -31
  959. data/lib/ddtrace/contrib/mysql2/ext.rb +0 -19
  960. data/lib/ddtrace/contrib/mysql2/instrumentation.rb +0 -65
  961. data/lib/ddtrace/contrib/mysql2/integration.rb +0 -39
  962. data/lib/ddtrace/contrib/mysql2/patcher.rb +0 -28
  963. data/lib/ddtrace/contrib/patchable.rb +0 -71
  964. data/lib/ddtrace/contrib/patcher.rb +0 -66
  965. data/lib/ddtrace/contrib/presto/configuration/settings.rb +0 -31
  966. data/lib/ddtrace/contrib/presto/ext.rb +0 -29
  967. data/lib/ddtrace/contrib/presto/instrumentation.rb +0 -111
  968. data/lib/ddtrace/contrib/presto/integration.rb +0 -39
  969. data/lib/ddtrace/contrib/presto/patcher.rb +0 -34
  970. data/lib/ddtrace/contrib/qless/configuration/settings.rb +0 -36
  971. data/lib/ddtrace/contrib/qless/ext.rb +0 -21
  972. data/lib/ddtrace/contrib/qless/integration.rb +0 -39
  973. data/lib/ddtrace/contrib/qless/patcher.rb +0 -35
  974. data/lib/ddtrace/contrib/qless/qless_job.rb +0 -74
  975. data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +0 -34
  976. data/lib/ddtrace/contrib/que/configuration/settings.rb +0 -44
  977. data/lib/ddtrace/contrib/que/ext.rb +0 -31
  978. data/lib/ddtrace/contrib/que/integration.rb +0 -43
  979. data/lib/ddtrace/contrib/que/patcher.rb +0 -25
  980. data/lib/ddtrace/contrib/que/tracer.rb +0 -58
  981. data/lib/ddtrace/contrib/racecar/configuration/settings.rb +0 -31
  982. data/lib/ddtrace/contrib/racecar/event.rb +0 -77
  983. data/lib/ddtrace/contrib/racecar/events/batch.rb +0 -28
  984. data/lib/ddtrace/contrib/racecar/events/consume.rb +0 -28
  985. data/lib/ddtrace/contrib/racecar/events/message.rb +0 -28
  986. data/lib/ddtrace/contrib/racecar/events.rb +0 -33
  987. data/lib/ddtrace/contrib/racecar/ext.rb +0 -26
  988. data/lib/ddtrace/contrib/racecar/integration.rb +0 -40
  989. data/lib/ddtrace/contrib/racecar/patcher.rb +0 -27
  990. data/lib/ddtrace/contrib/rack/configuration/settings.rb +0 -47
  991. data/lib/ddtrace/contrib/rack/ext.rb +0 -22
  992. data/lib/ddtrace/contrib/rack/integration.rb +0 -46
  993. data/lib/ddtrace/contrib/rack/middlewares.rb +0 -288
  994. data/lib/ddtrace/contrib/rack/patcher.rb +0 -106
  995. data/lib/ddtrace/contrib/rack/request_queue.rb +0 -45
  996. data/lib/ddtrace/contrib/rails/auto_instrument_railtie.rb +0 -10
  997. data/lib/ddtrace/contrib/rails/configuration/settings.rb +0 -101
  998. data/lib/ddtrace/contrib/rails/ext.rb +0 -18
  999. data/lib/ddtrace/contrib/rails/framework.rb +0 -172
  1000. data/lib/ddtrace/contrib/rails/integration.rb +0 -45
  1001. data/lib/ddtrace/contrib/rails/log_injection.rb +0 -42
  1002. data/lib/ddtrace/contrib/rails/middlewares.rb +0 -44
  1003. data/lib/ddtrace/contrib/rails/patcher.rb +0 -119
  1004. data/lib/ddtrace/contrib/rails/railtie.rb +0 -18
  1005. data/lib/ddtrace/contrib/rails/utils.rb +0 -25
  1006. data/lib/ddtrace/contrib/rake/configuration/settings.rb +0 -32
  1007. data/lib/ddtrace/contrib/rake/ext.rb +0 -22
  1008. data/lib/ddtrace/contrib/rake/instrumentation.rb +0 -91
  1009. data/lib/ddtrace/contrib/rake/integration.rb +0 -39
  1010. data/lib/ddtrace/contrib/rake/patcher.rb +0 -31
  1011. data/lib/ddtrace/contrib/redis/configuration/resolver.rb +0 -46
  1012. data/lib/ddtrace/contrib/redis/configuration/settings.rb +0 -36
  1013. data/lib/ddtrace/contrib/redis/ext.rb +0 -23
  1014. data/lib/ddtrace/contrib/redis/instrumentation.rb +0 -90
  1015. data/lib/ddtrace/contrib/redis/integration.rb +0 -43
  1016. data/lib/ddtrace/contrib/redis/patcher.rb +0 -33
  1017. data/lib/ddtrace/contrib/redis/quantize.rb +0 -76
  1018. data/lib/ddtrace/contrib/redis/tags.rb +0 -47
  1019. data/lib/ddtrace/contrib/redis/vendor/resolver.rb +0 -159
  1020. data/lib/ddtrace/contrib/registerable.rb +0 -33
  1021. data/lib/ddtrace/contrib/registry.rb +0 -43
  1022. data/lib/ddtrace/contrib/resque/configuration/settings.rb +0 -49
  1023. data/lib/ddtrace/contrib/resque/ext.rb +0 -18
  1024. data/lib/ddtrace/contrib/resque/integration.rb +0 -44
  1025. data/lib/ddtrace/contrib/resque/patcher.rb +0 -30
  1026. data/lib/ddtrace/contrib/resque/resque_job.rb +0 -104
  1027. data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +0 -32
  1028. data/lib/ddtrace/contrib/rest_client/ext.rb +0 -18
  1029. data/lib/ddtrace/contrib/rest_client/integration.rb +0 -39
  1030. data/lib/ddtrace/contrib/rest_client/patcher.rb +0 -25
  1031. data/lib/ddtrace/contrib/rest_client/request_patch.rb +0 -92
  1032. data/lib/ddtrace/contrib/semantic_logger/configuration/settings.rb +0 -19
  1033. data/lib/ddtrace/contrib/semantic_logger/ext.rb +0 -11
  1034. data/lib/ddtrace/contrib/semantic_logger/instrumentation.rb +0 -43
  1035. data/lib/ddtrace/contrib/semantic_logger/integration.rb +0 -48
  1036. data/lib/ddtrace/contrib/semantic_logger/patcher.rb +0 -26
  1037. data/lib/ddtrace/contrib/sequel/configuration/settings.rb +0 -29
  1038. data/lib/ddtrace/contrib/sequel/database.rb +0 -64
  1039. data/lib/ddtrace/contrib/sequel/dataset.rb +0 -64
  1040. data/lib/ddtrace/contrib/sequel/ext.rb +0 -20
  1041. data/lib/ddtrace/contrib/sequel/integration.rb +0 -39
  1042. data/lib/ddtrace/contrib/sequel/patcher.rb +0 -34
  1043. data/lib/ddtrace/contrib/sequel/utils.rb +0 -75
  1044. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +0 -32
  1045. data/lib/ddtrace/contrib/shoryuken/ext.rb +0 -22
  1046. data/lib/ddtrace/contrib/shoryuken/integration.rb +0 -40
  1047. data/lib/ddtrace/contrib/shoryuken/patcher.rb +0 -25
  1048. data/lib/ddtrace/contrib/shoryuken/tracer.rb +0 -56
  1049. data/lib/ddtrace/contrib/sidekiq/client_tracer.rb +0 -44
  1050. data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +0 -38
  1051. data/lib/ddtrace/contrib/sidekiq/ext.rb +0 -31
  1052. data/lib/ddtrace/contrib/sidekiq/integration.rb +0 -49
  1053. data/lib/ddtrace/contrib/sidekiq/patcher.rb +0 -68
  1054. data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/heartbeat.rb +0 -30
  1055. data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/job_fetch.rb +0 -30
  1056. data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/scheduled_push.rb +0 -29
  1057. data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +0 -66
  1058. data/lib/ddtrace/contrib/sidekiq/tracing.rb +0 -45
  1059. data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +0 -40
  1060. data/lib/ddtrace/contrib/sinatra/env.rb +0 -59
  1061. data/lib/ddtrace/contrib/sinatra/ext.rb +0 -28
  1062. data/lib/ddtrace/contrib/sinatra/headers.rb +0 -30
  1063. data/lib/ddtrace/contrib/sinatra/integration.rb +0 -39
  1064. data/lib/ddtrace/contrib/sinatra/patcher.rb +0 -30
  1065. data/lib/ddtrace/contrib/sinatra/tracer.rb +0 -150
  1066. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +0 -112
  1067. data/lib/ddtrace/contrib/sneakers/configuration/settings.rb +0 -34
  1068. data/lib/ddtrace/contrib/sneakers/ext.rb +0 -23
  1069. data/lib/ddtrace/contrib/sneakers/integration.rb +0 -42
  1070. data/lib/ddtrace/contrib/sneakers/patcher.rb +0 -25
  1071. data/lib/ddtrace/contrib/sneakers/tracer.rb +0 -54
  1072. data/lib/ddtrace/contrib/status_code_matcher.rb +0 -70
  1073. data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +0 -31
  1074. data/lib/ddtrace/contrib/sucker_punch/exception_handler.rb +0 -25
  1075. data/lib/ddtrace/contrib/sucker_punch/ext.rb +0 -22
  1076. data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +0 -89
  1077. data/lib/ddtrace/contrib/sucker_punch/integration.rb +0 -39
  1078. data/lib/ddtrace/contrib/sucker_punch/patcher.rb +0 -44
  1079. data/lib/ddtrace/correlation.rb +0 -40
  1080. data/lib/ddtrace/diagnostics/environment_logger.rb +0 -280
  1081. data/lib/ddtrace/diagnostics/health.rb +0 -34
  1082. data/lib/ddtrace/distributed_tracing/headers/b3.rb +0 -45
  1083. data/lib/ddtrace/distributed_tracing/headers/b3_single.rb +0 -57
  1084. data/lib/ddtrace/distributed_tracing/headers/datadog.rb +0 -43
  1085. data/lib/ddtrace/distributed_tracing/headers/headers.rb +0 -72
  1086. data/lib/ddtrace/distributed_tracing/headers/helpers.rb +0 -44
  1087. data/lib/ddtrace/encoding.rb +0 -72
  1088. data/lib/ddtrace/error.rb +0 -97
  1089. data/lib/ddtrace/event.rb +0 -53
  1090. data/lib/ddtrace/ext/analytics.rb +0 -13
  1091. data/lib/ddtrace/ext/app_types.rb +0 -12
  1092. data/lib/ddtrace/ext/correlation.rb +0 -12
  1093. data/lib/ddtrace/ext/diagnostics.rb +0 -37
  1094. data/lib/ddtrace/ext/distributed.rb +0 -40
  1095. data/lib/ddtrace/ext/environment.rb +0 -24
  1096. data/lib/ddtrace/ext/errors.rb +0 -11
  1097. data/lib/ddtrace/ext/forced_tracing.rb +0 -26
  1098. data/lib/ddtrace/ext/git.rb +0 -32
  1099. data/lib/ddtrace/ext/http.rb +0 -47
  1100. data/lib/ddtrace/ext/integration.rb +0 -9
  1101. data/lib/ddtrace/ext/manual_tracing.rb +0 -10
  1102. data/lib/ddtrace/ext/metrics.rb +0 -16
  1103. data/lib/ddtrace/ext/net.rb +0 -11
  1104. data/lib/ddtrace/ext/priority.rb +0 -19
  1105. data/lib/ddtrace/ext/profiling.rb +0 -53
  1106. data/lib/ddtrace/ext/runtime.rb +0 -25
  1107. data/lib/ddtrace/ext/sampling.rb +0 -17
  1108. data/lib/ddtrace/ext/sql.rb +0 -9
  1109. data/lib/ddtrace/ext/test.rb +0 -9
  1110. data/lib/ddtrace/ext/transport.rb +0 -32
  1111. data/lib/ddtrace/forced_tracing.rb +0 -39
  1112. data/lib/ddtrace/logger.rb +0 -41
  1113. data/lib/ddtrace/metrics.rb +0 -282
  1114. data/lib/ddtrace/opentelemetry/extensions.rb +0 -14
  1115. data/lib/ddtrace/opentelemetry/span.rb +0 -34
  1116. data/lib/ddtrace/opentracer/binary_propagator.rb +0 -25
  1117. data/lib/ddtrace/opentracer/carrier.rb +0 -7
  1118. data/lib/ddtrace/opentracer/distributed_headers.rb +0 -56
  1119. data/lib/ddtrace/opentracer/global_tracer.rb +0 -16
  1120. data/lib/ddtrace/opentracer/propagator.rb +0 -23
  1121. data/lib/ddtrace/opentracer/rack_propagator.rb +0 -61
  1122. data/lib/ddtrace/opentracer/scope.rb +0 -16
  1123. data/lib/ddtrace/opentracer/scope_manager.rb +0 -7
  1124. data/lib/ddtrace/opentracer/span.rb +0 -95
  1125. data/lib/ddtrace/opentracer/span_context.rb +0 -15
  1126. data/lib/ddtrace/opentracer/span_context_factory.rb +0 -24
  1127. data/lib/ddtrace/opentracer/text_map_propagator.rb +0 -76
  1128. data/lib/ddtrace/opentracer/thread_local_scope.rb +0 -32
  1129. data/lib/ddtrace/opentracer/thread_local_scope_manager.rb +0 -41
  1130. data/lib/ddtrace/opentracer/tracer.rb +0 -209
  1131. data/lib/ddtrace/opentracer.rb +0 -22
  1132. data/lib/ddtrace/patcher.rb +0 -69
  1133. data/lib/ddtrace/pin.rb +0 -86
  1134. data/lib/ddtrace/pipeline/span_filter.rb +0 -39
  1135. data/lib/ddtrace/pipeline/span_processor.rb +0 -21
  1136. data/lib/ddtrace/pipeline.rb +0 -47
  1137. data/lib/ddtrace/profiling/backtrace_location.rb +0 -33
  1138. data/lib/ddtrace/profiling/buffer.rb +0 -42
  1139. data/lib/ddtrace/profiling/collectors/stack.rb +0 -297
  1140. data/lib/ddtrace/profiling/encoding/profile.rb +0 -46
  1141. data/lib/ddtrace/profiling/event.rb +0 -14
  1142. data/lib/ddtrace/profiling/events/stack.rb +0 -81
  1143. data/lib/ddtrace/profiling/exporter.rb +0 -24
  1144. data/lib/ddtrace/profiling/ext/forking.rb +0 -98
  1145. data/lib/ddtrace/profiling/flush.rb +0 -44
  1146. data/lib/ddtrace/profiling/native_extension.rb +0 -40
  1147. data/lib/ddtrace/profiling/pprof/builder.rb +0 -126
  1148. data/lib/ddtrace/profiling/pprof/converter.rb +0 -103
  1149. data/lib/ddtrace/profiling/pprof/message_set.rb +0 -15
  1150. data/lib/ddtrace/profiling/pprof/payload.rb +0 -19
  1151. data/lib/ddtrace/profiling/pprof/pprof_pb.rb +0 -82
  1152. data/lib/ddtrace/profiling/pprof/stack_sample.rb +0 -140
  1153. data/lib/ddtrace/profiling/pprof/string_table.rb +0 -11
  1154. data/lib/ddtrace/profiling/pprof/template.rb +0 -119
  1155. data/lib/ddtrace/profiling/profiler.rb +0 -31
  1156. data/lib/ddtrace/profiling/recorder.rb +0 -96
  1157. data/lib/ddtrace/profiling/scheduler.rb +0 -150
  1158. data/lib/ddtrace/profiling/tasks/setup.rb +0 -90
  1159. data/lib/ddtrace/profiling/trace_identifiers/ddtrace.rb +0 -42
  1160. data/lib/ddtrace/profiling/trace_identifiers/helper.rb +0 -46
  1161. data/lib/ddtrace/profiling/transport/client.rb +0 -15
  1162. data/lib/ddtrace/profiling/transport/http/api/endpoint.rb +0 -94
  1163. data/lib/ddtrace/profiling/transport/http/api/instance.rb +0 -37
  1164. data/lib/ddtrace/profiling/transport/http/api/spec.rb +0 -41
  1165. data/lib/ddtrace/profiling/transport/http/api.rb +0 -44
  1166. data/lib/ddtrace/profiling/transport/http/builder.rb +0 -29
  1167. data/lib/ddtrace/profiling/transport/http/client.rb +0 -34
  1168. data/lib/ddtrace/profiling/transport/http/response.rb +0 -22
  1169. data/lib/ddtrace/profiling/transport/http.rb +0 -111
  1170. data/lib/ddtrace/profiling/transport/io/client.rb +0 -28
  1171. data/lib/ddtrace/profiling/transport/io/response.rb +0 -17
  1172. data/lib/ddtrace/profiling/transport/io.rb +0 -31
  1173. data/lib/ddtrace/profiling/transport/parcel.rb +0 -18
  1174. data/lib/ddtrace/profiling/transport/request.rb +0 -16
  1175. data/lib/ddtrace/profiling/transport/response.rb +0 -9
  1176. data/lib/ddtrace/profiling.rb +0 -149
  1177. data/lib/ddtrace/propagation/grpc_propagator.rb +0 -75
  1178. data/lib/ddtrace/propagation/http_propagator.rb +0 -91
  1179. data/lib/ddtrace/quantization/hash.rb +0 -104
  1180. data/lib/ddtrace/quantization/http.rb +0 -90
  1181. data/lib/ddtrace/runtime/metrics.rb +0 -135
  1182. data/lib/ddtrace/sampler.rb +0 -303
  1183. data/lib/ddtrace/sampling/matcher.rb +0 -58
  1184. data/lib/ddtrace/sampling/rate_limiter.rb +0 -177
  1185. data/lib/ddtrace/sampling/rule.rb +0 -62
  1186. data/lib/ddtrace/sampling/rule_sampler.rb +0 -133
  1187. data/lib/ddtrace/sampling.rb +0 -3
  1188. data/lib/ddtrace/span.rb +0 -445
  1189. data/lib/ddtrace/sync_writer.rb +0 -69
  1190. data/lib/ddtrace/tasks/exec.rb +0 -47
  1191. data/lib/ddtrace/tasks/help.rb +0 -15
  1192. data/lib/ddtrace/tracer.rb +0 -449
  1193. data/lib/ddtrace/utils/compression.rb +0 -28
  1194. data/lib/ddtrace/utils/database.rb +0 -26
  1195. data/lib/ddtrace/utils/forking.rb +0 -53
  1196. data/lib/ddtrace/utils/object_set.rb +0 -40
  1197. data/lib/ddtrace/utils/only_once.rb +0 -41
  1198. data/lib/ddtrace/utils/sequence.rb +0 -18
  1199. data/lib/ddtrace/utils/string_table.rb +0 -46
  1200. data/lib/ddtrace/utils/time.rb +0 -51
  1201. data/lib/ddtrace/utils.rb +0 -80
  1202. data/lib/ddtrace/vendor/active_record/connection_specification.rb +0 -302
  1203. data/lib/ddtrace/vendor/multipart-post/multipart/post/composite_read_io.rb +0 -117
  1204. data/lib/ddtrace/vendor/multipart-post/multipart/post/multipartable.rb +0 -58
  1205. data/lib/ddtrace/vendor/multipart-post/multipart/post/parts.rb +0 -136
  1206. data/lib/ddtrace/vendor/multipart-post/multipart/post/version.rb +0 -10
  1207. data/lib/ddtrace/vendor/multipart-post/multipart/post.rb +0 -9
  1208. data/lib/ddtrace/vendor/multipart-post/multipart.rb +0 -13
  1209. data/lib/ddtrace/vendor/multipart-post/net/http/post/multipart.rb +0 -33
  1210. data/lib/ddtrace/worker.rb +0 -21
  1211. data/lib/ddtrace/workers/async.rb +0 -175
  1212. data/lib/ddtrace/workers/interval_loop.rb +0 -116
  1213. data/lib/ddtrace/workers/polling.rb +0 -56
  1214. data/lib/ddtrace/workers/queue.rb +0 -41
  1215. data/lib/ddtrace/workers/runtime_metrics.rb +0 -65
  1216. data/lib/ddtrace/workers/trace_writer.rb +0 -200
  1217. data/lib/ddtrace/workers.rb +0 -123
  1218. data/lib/ddtrace/writer.rb +0 -200
  1219. /data/lib/{ddtrace → datadog/core}/vendor/multipart-post/LICENSE +0 -0
  1220. /data/lib/{ddtrace → datadog}/profiling/pprof/pprof.proto +0 -0
  1221. /data/lib/{ddtrace/vendor/active_record → datadog/tracing/contrib/active_record/vendor}/MIT-LICENSE +0 -0
  1222. /data/lib/{ddtrace → datadog/tracing}/contrib/redis/vendor/LICENSE +0 -0
@@ -0,0 +1,347 @@
1
+ #include <ruby.h>
2
+ #include <ruby/thread.h>
3
+ #include <datadog/profiling.h>
4
+ #include "helpers.h"
5
+ #include "libdatadog_helpers.h"
6
+ #include "ruby_helpers.h"
7
+
8
+ // Used to report profiling data to Datadog.
9
+ // This file implements the native bits of the Datadog::Profiling::HttpTransport class
10
+
11
+ static VALUE ok_symbol = Qnil; // :ok in Ruby
12
+ static VALUE error_symbol = Qnil; // :error in Ruby
13
+
14
+ static ID agentless_id; // id of :agentless in Ruby
15
+ static ID agent_id; // id of :agent in Ruby
16
+
17
+ static ID log_failure_to_process_tag_id; // id of :log_failure_to_process_tag in Ruby
18
+
19
+ static VALUE http_transport_class = Qnil;
20
+ static VALUE library_version_string = Qnil;
21
+
22
+ struct call_exporter_without_gvl_arguments {
23
+ ddog_prof_Exporter *exporter;
24
+ ddog_prof_Exporter_Request_BuildResult *build_result;
25
+ ddog_CancellationToken *cancel_token;
26
+ ddog_prof_Exporter_SendResult result;
27
+ bool send_ran;
28
+ };
29
+
30
+ inline static ddog_ByteSlice byte_slice_from_ruby_string(VALUE string);
31
+ static VALUE _native_validate_exporter(VALUE self, VALUE exporter_configuration);
32
+ static ddog_prof_Exporter_NewResult create_exporter(VALUE exporter_configuration, VALUE tags_as_array);
33
+ static VALUE handle_exporter_failure(ddog_prof_Exporter_NewResult exporter_result);
34
+ static ddog_Endpoint endpoint_from(VALUE exporter_configuration);
35
+ static ddog_Vec_Tag convert_tags(VALUE tags_as_array);
36
+ static void safely_log_failure_to_process_tag(ddog_Vec_Tag tags, VALUE err_details);
37
+ static VALUE _native_do_export(
38
+ VALUE self,
39
+ VALUE exporter_configuration,
40
+ VALUE upload_timeout_milliseconds,
41
+ VALUE start_timespec_seconds,
42
+ VALUE start_timespec_nanoseconds,
43
+ VALUE finish_timespec_seconds,
44
+ VALUE finish_timespec_nanoseconds,
45
+ VALUE pprof_file_name,
46
+ VALUE pprof_data,
47
+ VALUE code_provenance_file_name,
48
+ VALUE code_provenance_data,
49
+ VALUE tags_as_array
50
+ );
51
+ static void *call_exporter_without_gvl(void *call_args);
52
+ static void interrupt_exporter_call(void *cancel_token);
53
+ static VALUE ddtrace_version(void);
54
+
55
+ void http_transport_init(VALUE profiling_module) {
56
+ http_transport_class = rb_define_class_under(profiling_module, "HttpTransport", rb_cObject);
57
+
58
+ rb_define_singleton_method(http_transport_class, "_native_validate_exporter", _native_validate_exporter, 1);
59
+ rb_define_singleton_method(http_transport_class, "_native_do_export", _native_do_export, 11);
60
+
61
+ ok_symbol = ID2SYM(rb_intern_const("ok"));
62
+ error_symbol = ID2SYM(rb_intern_const("error"));
63
+ agentless_id = rb_intern_const("agentless");
64
+ agent_id = rb_intern_const("agent");
65
+ log_failure_to_process_tag_id = rb_intern_const("log_failure_to_process_tag");
66
+
67
+ library_version_string = ddtrace_version();
68
+ rb_global_variable(&library_version_string);
69
+ }
70
+
71
+ inline static ddog_ByteSlice byte_slice_from_ruby_string(VALUE string) {
72
+ ENFORCE_TYPE(string, T_STRING);
73
+ ddog_ByteSlice byte_slice = {.ptr = (uint8_t *) StringValuePtr(string), .len = RSTRING_LEN(string)};
74
+ return byte_slice;
75
+ }
76
+
77
+ static VALUE _native_validate_exporter(DDTRACE_UNUSED VALUE _self, VALUE exporter_configuration) {
78
+ ENFORCE_TYPE(exporter_configuration, T_ARRAY);
79
+ ddog_prof_Exporter_NewResult exporter_result = create_exporter(exporter_configuration, rb_ary_new());
80
+
81
+ VALUE failure_tuple = handle_exporter_failure(exporter_result);
82
+ if (!NIL_P(failure_tuple)) return failure_tuple;
83
+
84
+ // We don't actually need the exporter for now -- we just wanted to validate that we could create it with the
85
+ // settings we were given
86
+ ddog_prof_Exporter_drop(exporter_result.ok);
87
+
88
+ return rb_ary_new_from_args(2, ok_symbol, Qnil);
89
+ }
90
+
91
+ static ddog_prof_Exporter_NewResult create_exporter(VALUE exporter_configuration, VALUE tags_as_array) {
92
+ ENFORCE_TYPE(exporter_configuration, T_ARRAY);
93
+ ENFORCE_TYPE(tags_as_array, T_ARRAY);
94
+
95
+ // This needs to be called BEFORE convert_tags since it can raise an exception and thus cause the ddog_Vec_Tag
96
+ // to be leaked.
97
+ ddog_Endpoint endpoint = endpoint_from(exporter_configuration);
98
+
99
+ ddog_Vec_Tag tags = convert_tags(tags_as_array);
100
+
101
+ ddog_CharSlice library_name = DDOG_CHARSLICE_C("dd-trace-rb");
102
+ ddog_CharSlice library_version = char_slice_from_ruby_string(library_version_string);
103
+ ddog_CharSlice profiling_family = DDOG_CHARSLICE_C("ruby");
104
+
105
+ ddog_prof_Exporter_NewResult exporter_result =
106
+ ddog_prof_Exporter_new(library_name, library_version, profiling_family, &tags, endpoint);
107
+
108
+ ddog_Vec_Tag_drop(tags);
109
+
110
+ return exporter_result;
111
+ }
112
+
113
+ static VALUE handle_exporter_failure(ddog_prof_Exporter_NewResult exporter_result) {
114
+ return exporter_result.tag == DDOG_PROF_EXPORTER_NEW_RESULT_OK ?
115
+ Qnil :
116
+ rb_ary_new_from_args(2, error_symbol, get_error_details_and_drop(&exporter_result.err));
117
+ }
118
+
119
+ static ddog_Endpoint endpoint_from(VALUE exporter_configuration) {
120
+ ENFORCE_TYPE(exporter_configuration, T_ARRAY);
121
+
122
+ ID working_mode = SYM2ID(rb_ary_entry(exporter_configuration, 0)); // SYM2ID verifies its input so we can do this safely
123
+
124
+ if (working_mode != agentless_id && working_mode != agent_id) {
125
+ rb_raise(rb_eArgError, "Failed to initialize transport: Unexpected working mode, expected :agentless or :agent");
126
+ }
127
+
128
+ if (working_mode == agentless_id) {
129
+ VALUE site = rb_ary_entry(exporter_configuration, 1);
130
+ VALUE api_key = rb_ary_entry(exporter_configuration, 2);
131
+ ENFORCE_TYPE(site, T_STRING);
132
+ ENFORCE_TYPE(api_key, T_STRING);
133
+
134
+ return ddog_Endpoint_agentless(char_slice_from_ruby_string(site), char_slice_from_ruby_string(api_key));
135
+ } else { // agent_id
136
+ VALUE base_url = rb_ary_entry(exporter_configuration, 1);
137
+ ENFORCE_TYPE(base_url, T_STRING);
138
+
139
+ return ddog_Endpoint_agent(char_slice_from_ruby_string(base_url));
140
+ }
141
+ }
142
+
143
+ __attribute__((warn_unused_result))
144
+ static ddog_Vec_Tag convert_tags(VALUE tags_as_array) {
145
+ ENFORCE_TYPE(tags_as_array, T_ARRAY);
146
+
147
+ long tags_count = RARRAY_LEN(tags_as_array);
148
+ ddog_Vec_Tag tags = ddog_Vec_Tag_new();
149
+
150
+ for (long i = 0; i < tags_count; i++) {
151
+ VALUE name_value_pair = rb_ary_entry(tags_as_array, i);
152
+
153
+ if (!RB_TYPE_P(name_value_pair, T_ARRAY)) {
154
+ ddog_Vec_Tag_drop(tags);
155
+ ENFORCE_TYPE(name_value_pair, T_ARRAY);
156
+ }
157
+
158
+ // Note: We can index the array without checking its size first because rb_ary_entry returns Qnil if out of bounds
159
+ VALUE tag_name = rb_ary_entry(name_value_pair, 0);
160
+ VALUE tag_value = rb_ary_entry(name_value_pair, 1);
161
+
162
+ if (!(RB_TYPE_P(tag_name, T_STRING) && RB_TYPE_P(tag_value, T_STRING))) {
163
+ ddog_Vec_Tag_drop(tags);
164
+ ENFORCE_TYPE(tag_name, T_STRING);
165
+ ENFORCE_TYPE(tag_value, T_STRING);
166
+ }
167
+
168
+ ddog_Vec_Tag_PushResult push_result =
169
+ ddog_Vec_Tag_push(&tags, char_slice_from_ruby_string(tag_name), char_slice_from_ruby_string(tag_value));
170
+
171
+ if (push_result.tag == DDOG_VEC_TAG_PUSH_RESULT_ERR) {
172
+ // libdatadog validates tags and may catch invalid tags that ddtrace didn't actually catch.
173
+ // We warn users about such tags, and then just ignore them.
174
+ safely_log_failure_to_process_tag(tags, get_error_details_and_drop(&push_result.err));
175
+ }
176
+ }
177
+
178
+ return tags;
179
+ }
180
+
181
+ static VALUE log_failure_to_process_tag(VALUE err_details) {
182
+ return rb_funcall(http_transport_class, log_failure_to_process_tag_id, 1, err_details);
183
+ }
184
+
185
+ // Since we are calling into Ruby code, it may raise an exception. This method ensure that dynamically-allocated tags
186
+ // get cleaned before propagating the exception.
187
+ static void safely_log_failure_to_process_tag(ddog_Vec_Tag tags, VALUE err_details) {
188
+ int exception_state;
189
+ rb_protect(log_failure_to_process_tag, err_details, &exception_state);
190
+
191
+ if (exception_state) { // An exception was raised
192
+ ddog_Vec_Tag_drop(tags); // clean up
193
+ rb_jump_tag(exception_state); // "Re-raise" exception
194
+ }
195
+ }
196
+
197
+ // Note: This function handles a bunch of libdatadog dynamically-allocated objects, so it MUST not use any Ruby APIs
198
+ // which can raise exceptions, otherwise the objects will be leaked.
199
+ static VALUE perform_export(
200
+ ddog_prof_Exporter *exporter,
201
+ ddog_Timespec start,
202
+ ddog_Timespec finish,
203
+ ddog_prof_Exporter_Slice_File slice_files,
204
+ ddog_Vec_Tag *additional_tags,
205
+ uint64_t timeout_milliseconds
206
+ ) {
207
+ ddog_prof_ProfiledEndpointsStats *endpoints_stats = NULL; // Not in use yet
208
+ ddog_prof_Exporter_Request_BuildResult build_result =
209
+ ddog_prof_Exporter_Request_build(exporter, start, finish, slice_files, additional_tags, endpoints_stats, timeout_milliseconds);
210
+
211
+ if (build_result.tag == DDOG_PROF_EXPORTER_REQUEST_BUILD_RESULT_ERR) {
212
+ ddog_prof_Exporter_drop(exporter);
213
+ return rb_ary_new_from_args(2, error_symbol, get_error_details_and_drop(&build_result.err));
214
+ }
215
+
216
+ ddog_CancellationToken *cancel_token = ddog_CancellationToken_new();
217
+
218
+ // We'll release the Global VM Lock while we're calling send, so that the Ruby VM can continue to work while this
219
+ // is pending
220
+ struct call_exporter_without_gvl_arguments args =
221
+ {.exporter = exporter, .build_result = &build_result, .cancel_token = cancel_token, .send_ran = false};
222
+
223
+ // We use rb_thread_call_without_gvl2 instead of rb_thread_call_without_gvl as the gvl2 variant never raises any
224
+ // exceptions.
225
+ //
226
+ // (With rb_thread_call_without_gvl, if someone calls Thread#kill or something like it on the current thread,
227
+ // the exception will be raised without us being able to clean up dynamically-allocated stuff, which would leak.)
228
+ //
229
+ // Instead, we take care of our own exception checking, and delay the exception raising (`rb_jump_tag` call) until
230
+ // after we cleaned up any dynamically-allocated resources.
231
+ //
232
+ // We run rb_thread_call_without_gvl2 in a loop since an "interrupt" may cause it to return before even running
233
+ // our code. In such a case, we retry the call -- unless the interrupt was caused by an exception being pending,
234
+ // and in that case we also give up and break out of the loop.
235
+ int pending_exception = 0;
236
+
237
+ while (!args.send_ran && !pending_exception) {
238
+ rb_thread_call_without_gvl2(call_exporter_without_gvl, &args, interrupt_exporter_call, cancel_token);
239
+
240
+ // To make sure we don't leak memory, we never check for pending exceptions if send ran
241
+ if (!args.send_ran) pending_exception = check_if_pending_exception();
242
+ }
243
+
244
+ // Cleanup exporter and token, no longer needed
245
+ ddog_CancellationToken_drop(cancel_token);
246
+ ddog_prof_Exporter_drop(exporter);
247
+
248
+ if (pending_exception) {
249
+ // If we got here send did not run, so we need to explicitly dispose of the request
250
+ ddog_prof_Exporter_Request_drop(&build_result.ok);
251
+
252
+ // Let Ruby propagate the exception. This will not return.
253
+ rb_jump_tag(pending_exception);
254
+ }
255
+
256
+ // The request itself does not need to be freed as libdatadog takes ownership of it as part of sending.
257
+
258
+ ddog_prof_Exporter_SendResult result = args.result;
259
+
260
+ return result.tag == DDOG_PROF_EXPORTER_SEND_RESULT_HTTP_RESPONSE ?
261
+ rb_ary_new_from_args(2, ok_symbol, UINT2NUM(result.http_response.code)) :
262
+ rb_ary_new_from_args(2, error_symbol, get_error_details_and_drop(&result.err));
263
+ }
264
+
265
+ static VALUE _native_do_export(
266
+ DDTRACE_UNUSED VALUE _self,
267
+ VALUE exporter_configuration,
268
+ VALUE upload_timeout_milliseconds,
269
+ VALUE start_timespec_seconds,
270
+ VALUE start_timespec_nanoseconds,
271
+ VALUE finish_timespec_seconds,
272
+ VALUE finish_timespec_nanoseconds,
273
+ VALUE pprof_file_name,
274
+ VALUE pprof_data,
275
+ VALUE code_provenance_file_name,
276
+ VALUE code_provenance_data,
277
+ VALUE tags_as_array
278
+ ) {
279
+ ENFORCE_TYPE(upload_timeout_milliseconds, T_FIXNUM);
280
+ ENFORCE_TYPE(start_timespec_seconds, T_FIXNUM);
281
+ ENFORCE_TYPE(start_timespec_nanoseconds, T_FIXNUM);
282
+ ENFORCE_TYPE(finish_timespec_seconds, T_FIXNUM);
283
+ ENFORCE_TYPE(finish_timespec_nanoseconds, T_FIXNUM);
284
+ ENFORCE_TYPE(pprof_file_name, T_STRING);
285
+ ENFORCE_TYPE(pprof_data, T_STRING);
286
+ ENFORCE_TYPE(code_provenance_file_name, T_STRING);
287
+
288
+ // Code provenance can be disabled and in that case will be set to nil
289
+ bool have_code_provenance = !NIL_P(code_provenance_data);
290
+ if (have_code_provenance) ENFORCE_TYPE(code_provenance_data, T_STRING);
291
+
292
+ uint64_t timeout_milliseconds = NUM2ULONG(upload_timeout_milliseconds);
293
+
294
+ ddog_Timespec start =
295
+ {.seconds = NUM2LONG(start_timespec_seconds), .nanoseconds = NUM2UINT(start_timespec_nanoseconds)};
296
+ ddog_Timespec finish =
297
+ {.seconds = NUM2LONG(finish_timespec_seconds), .nanoseconds = NUM2UINT(finish_timespec_nanoseconds)};
298
+
299
+ int files_to_report = 1 + (have_code_provenance ? 1 : 0);
300
+ ddog_prof_Exporter_File files[files_to_report];
301
+ ddog_prof_Exporter_Slice_File slice_files = {.ptr = files, .len = files_to_report};
302
+
303
+ files[0] = (ddog_prof_Exporter_File) {
304
+ .name = char_slice_from_ruby_string(pprof_file_name),
305
+ .file = byte_slice_from_ruby_string(pprof_data)
306
+ };
307
+ if (have_code_provenance) {
308
+ files[1] = (ddog_prof_Exporter_File) {
309
+ .name = char_slice_from_ruby_string(code_provenance_file_name),
310
+ .file = byte_slice_from_ruby_string(code_provenance_data)
311
+ };
312
+ }
313
+
314
+ ddog_Vec_Tag *null_additional_tags = NULL;
315
+
316
+ ddog_prof_Exporter_NewResult exporter_result = create_exporter(exporter_configuration, tags_as_array);
317
+ // Note: Do not add anything that can raise exceptions after this line, as otherwise the exporter memory will leak
318
+
319
+ VALUE failure_tuple = handle_exporter_failure(exporter_result);
320
+ if (!NIL_P(failure_tuple)) return failure_tuple;
321
+
322
+ return perform_export(exporter_result.ok, start, finish, slice_files, null_additional_tags, timeout_milliseconds);
323
+ }
324
+
325
+ static void *call_exporter_without_gvl(void *call_args) {
326
+ struct call_exporter_without_gvl_arguments *args = (struct call_exporter_without_gvl_arguments*) call_args;
327
+
328
+ args->result = ddog_prof_Exporter_send(args->exporter, &args->build_result->ok, args->cancel_token);
329
+ args->send_ran = true;
330
+
331
+ return NULL; // Unused
332
+ }
333
+
334
+ // Called by Ruby when it wants to interrupt call_exporter_without_gvl above, e.g. when the app wants to exit cleanly
335
+ static void interrupt_exporter_call(void *cancel_token) {
336
+ ddog_CancellationToken_cancel((ddog_CancellationToken *) cancel_token);
337
+ }
338
+
339
+ static VALUE ddtrace_version(void) {
340
+ VALUE ddtrace_module = rb_const_get(rb_cObject, rb_intern("DDTrace"));
341
+ ENFORCE_TYPE(ddtrace_module, T_MODULE);
342
+ VALUE version_module = rb_const_get(ddtrace_module, rb_intern("VERSION"));
343
+ ENFORCE_TYPE(version_module, T_MODULE);
344
+ VALUE version_string = rb_const_get(version_module, rb_intern("STRING"));
345
+ ENFORCE_TYPE(version_string, T_STRING);
346
+ return version_string;
347
+ }
@@ -0,0 +1,25 @@
1
+ #pragma once
2
+
3
+ #include <datadog/profiling.h>
4
+ #include "ruby_helpers.h"
5
+
6
+ inline static ddog_CharSlice char_slice_from_ruby_string(VALUE string) {
7
+ ENFORCE_TYPE(string, T_STRING);
8
+ ddog_CharSlice char_slice = {.ptr = StringValuePtr(string), .len = RSTRING_LEN(string)};
9
+ return char_slice;
10
+ }
11
+
12
+ inline static VALUE ruby_string_from_vec_u8(ddog_Vec_U8 string) {
13
+ return rb_str_new((char *) string.ptr, string.len);
14
+ }
15
+
16
+ inline static VALUE ruby_string_from_error(const ddog_Error *error) {
17
+ ddog_CharSlice char_slice = ddog_Error_message(error);
18
+ return rb_str_new(char_slice.ptr, char_slice.len);
19
+ }
20
+
21
+ inline static VALUE get_error_details_and_drop(ddog_Error *error) {
22
+ VALUE result = ruby_string_from_error(error);
23
+ ddog_Error_drop(error);
24
+ return result;
25
+ }
@@ -0,0 +1,319 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rubygems'
4
+ require 'pathname'
5
+
6
+ module Datadog
7
+ module Profiling
8
+ # Helpers for extconf.rb
9
+ module NativeExtensionHelpers
10
+ # Can be set when customers want to skip compiling the native extension entirely
11
+ ENV_NO_EXTENSION = 'DD_PROFILING_NO_EXTENSION'
12
+ # Can be set to force rubygems to fail gem installation when profiling extension could not be built
13
+ ENV_FAIL_INSTALL_IF_MISSING_EXTENSION = 'DD_PROFILING_FAIL_INSTALL_IF_MISSING_EXTENSION'
14
+
15
+ # Older Rubies don't have the MJIT header, used by the JIT compiler, so we need to use a different approach
16
+ CAN_USE_MJIT_HEADER = RUBY_VERSION >= '2.6'
17
+
18
+ LIBDATADOG_VERSION = '~> 2.0.0.1.0'
19
+
20
+ def self.fail_install_if_missing_extension?
21
+ ENV[ENV_FAIL_INSTALL_IF_MISSING_EXTENSION].to_s.strip.downcase == 'true'
22
+ end
23
+
24
+ # Used as an workaround for a limitation with how dynamic linking works in environments where ddtrace and
25
+ # libdatadog are moved after the extension gets compiled.
26
+ #
27
+ # Because the libddpprof native library is installed on a non-standard system path, in order for it to be
28
+ # found by the system dynamic linker (e.g. what takes care of dlopen(), which is used to load the profiling
29
+ # native extension), we need to add a "runpath" -- a list of folders to search for libdatadog.
30
+ #
31
+ # This runpath gets hardcoded at native library linking time. You can look at it using the `readelf` tool in
32
+ # Linux: e.g. `readelf -d ddtrace_profiling_native_extension.2.7.3_x86_64-linux.so`.
33
+ #
34
+ # In older versions of ddtrace, we only set as runpath an absolute path to libdatadog.
35
+ # (This gets set automatically by the call
36
+ # to `pkg_config('datadog_profiling_with_rpath')` in `extconf.rb`). This worked fine as long as libdatadog was **NOT**
37
+ # moved from the folder it was present at ddtrace installation/linking time.
38
+ #
39
+ # Unfortunately, environments such as Heroku and AWS Elastic Beanstalk move gems around in the filesystem after
40
+ # installation. Thus, the profiling native extension could not be loaded in these environments
41
+ # (see https://github.com/DataDog/dd-trace-rb/issues/2067) because libdatadog could not be found.
42
+ #
43
+ # To workaround this issue, this method computes the **relative** path between the folder where the profiling
44
+ # native extension is going to be installed and the folder where libdatadog is installed, and returns it
45
+ # to be set as an additional runpath. (Yes, you can set multiple runpath folders to be searched).
46
+ #
47
+ # This way, if both gems are moved together (and it turns out that they are in these environments),
48
+ # the relative path can still be traversed to find libdatadog.
49
+ #
50
+ # This is incredibly awful, and it's kinda bizarre how it's not possible to just find these paths at runtime
51
+ # and set them correctly; rather than needing to set stuff at linking-time and then praying to $deity that
52
+ # weird moves don't happen.
53
+ #
54
+ # As a curiosity, `LD_LIBRARY_PATH` can be used to influence the folders that get searched but **CANNOT BE
55
+ # SET DYNAMICALLY**, e.g. it needs to be set at the start of the process (Ruby VM) and thus it's not something
56
+ # we could setup when doing a `require`.
57
+ #
58
+ def self.libdatadog_folder_relative_to_native_lib_folder(
59
+ current_folder: __dir__,
60
+ libdatadog_pkgconfig_folder: Libdatadog.pkgconfig_folder
61
+ )
62
+ return unless libdatadog_pkgconfig_folder
63
+
64
+ profiling_native_lib_folder = "#{current_folder}/../../lib/"
65
+ libdatadog_lib_folder = "#{libdatadog_pkgconfig_folder}/../"
66
+
67
+ Pathname.new(libdatadog_lib_folder).relative_path_from(Pathname.new(profiling_native_lib_folder)).to_s
68
+ end
69
+
70
+ # Used to check if profiler is supported, including user-visible clear messages explaining why their
71
+ # system may not be supported.
72
+ module Supported
73
+ private_class_method def self.explain_issue(*reason, suggested:)
74
+ { reason: reason, suggested: suggested }
75
+ end
76
+
77
+ def self.supported?
78
+ unsupported_reason.nil?
79
+ end
80
+
81
+ def self.unsupported_reason
82
+ disabled_via_env? ||
83
+ on_jruby? ||
84
+ on_truffleruby? ||
85
+ on_windows? ||
86
+ on_macos? ||
87
+ on_unknown_os? ||
88
+ on_unsupported_cpu_arch? ||
89
+ on_unsupported_ruby_version? ||
90
+ expected_to_use_mjit_but_mjit_is_disabled? ||
91
+ libdatadog_not_available? ||
92
+ libdatadog_not_usable?
93
+ end
94
+
95
+ # This banner will show up in the logs/terminal while compiling the native extension
96
+ def self.failure_banner_for(reason:, suggested:, fail_install:)
97
+ prettify_lines = proc { |lines| Array(lines).map { |line| "| #{line.ljust(76)} |" }.join("\n") }
98
+ outcome =
99
+ if fail_install
100
+ [
101
+ 'Failing installation immediately because the ',
102
+ "`#{ENV_FAIL_INSTALL_IF_MISSING_EXTENSION}` environment variable is set",
103
+ 'to `true`.',
104
+ 'When contacting support, please include the <mkmf.log> file that is shown ',
105
+ 'below.',
106
+ ]
107
+ else
108
+ [
109
+ 'The Datadog Continuous Profiler will not be available,',
110
+ 'but all other ddtrace features will work fine!',
111
+ ]
112
+ end
113
+
114
+ %(
115
+ +------------------------------------------------------------------------------+
116
+ | Could not compile the Datadog Continuous Profiler because |
117
+ #{prettify_lines.call(reason)}
118
+ | |
119
+ #{prettify_lines.call(outcome)}
120
+ | |
121
+ #{prettify_lines.call(suggested)}
122
+ +------------------------------------------------------------------------------+
123
+ )
124
+ end
125
+
126
+ # This will be saved in a file to later be presented while operating the gem
127
+ def self.render_skipped_reason_file(reason:, suggested:)
128
+ [*reason, *suggested].join(' ')
129
+ end
130
+
131
+ # mkmf sets $PKGCONFIG after the `pkg_config` gets used in extconf.rb. When `pkg_config` is unsuccessful, we use
132
+ # this helper to decide if we can show more specific error message vs a generic "something went wrong".
133
+ def self.pkg_config_missing?(command: $PKGCONFIG) # rubocop:disable Style/GlobalVars
134
+ pkg_config_available = command && xsystem("#{command} --version")
135
+
136
+ pkg_config_available != true
137
+ end
138
+
139
+ CONTACT_SUPPORT = [
140
+ 'For help solving this issue, please contact Datadog support at',
141
+ '<https://docs.datadoghq.com/help/>.',
142
+ 'You can also check out the Continuous Profiler troubleshooting page at',
143
+ '<https://dtdg.co/ruby-profiler-troubleshooting>.'
144
+ ].freeze
145
+
146
+ GET_IN_TOUCH = [
147
+ "Get in touch with us if you're interested in profiling your app!"
148
+ ].freeze
149
+
150
+ UPGRADE_RUBY = [
151
+ 'Upgrade to a modern Ruby to enable profiling for your app.'
152
+ ].freeze
153
+
154
+ # Validation for this check is done in extconf.rb because it relies on mkmf
155
+ FAILED_TO_CONFIGURE_LIBDATADOG = explain_issue(
156
+ 'there was a problem in setting up the `libdatadog` dependency.',
157
+ suggested: CONTACT_SUPPORT,
158
+ )
159
+
160
+ # Validation for this check is done in extconf.rb because it relies on mkmf
161
+ COMPILATION_BROKEN = explain_issue(
162
+ 'compilation of the Ruby VM just-in-time header failed.',
163
+ 'Your C compiler or Ruby VM just-in-time compiler seem to be broken.',
164
+ suggested: CONTACT_SUPPORT,
165
+ )
166
+
167
+ # Validation for this check is done in extconf.rb because it relies on mkmf
168
+ PKG_CONFIG_IS_MISSING = explain_issue(
169
+ #+-----------------------------------------------------------------------------+
170
+ 'the `pkg-config` system tool is missing.',
171
+ 'This issue can usually be fixed by installing one of the following:',
172
+ 'the `pkg-config` package on Homebrew and Debian/Ubuntu-based Linux;',
173
+ 'the `pkgconf` package on Arch and Alpine-based Linux;',
174
+ 'the `pkgconf-pkg-config` package on Fedora/Red Hat-based Linux.',
175
+ '(Tip: When fixing this, ensure `pkg-config` is installed **before**',
176
+ 'running `bundle install`, and remember to clear any installed gems cache).',
177
+ suggested: CONTACT_SUPPORT,
178
+ )
179
+
180
+ # Validation for this check is done in extconf.rb because it relies on mkmf
181
+ COMPILER_ATOMIC_MISSING = explain_issue(
182
+ 'your C compiler is missing support for the <stdatomic.h> header.',
183
+ 'This issue can usually be fixed by upgrading to a later version of your',
184
+ 'operating system image or compiler.',
185
+ suggested: CONTACT_SUPPORT,
186
+ )
187
+
188
+ private_class_method def self.disabled_via_env?
189
+ report_disabled = [
190
+ 'If you needed to use this, please tell us why on',
191
+ '<https://github.com/DataDog/dd-trace-rb/issues/new> so we can fix it :)',
192
+ ].freeze
193
+
194
+ disabled_via_env = explain_issue(
195
+ 'the `DD_PROFILING_NO_EXTENSION` environment variable is/was set to',
196
+ '`true` during installation.',
197
+ suggested: report_disabled,
198
+ )
199
+
200
+ return unless ENV[ENV_NO_EXTENSION].to_s.strip.downcase == 'true'
201
+
202
+ disabled_via_env
203
+ end
204
+
205
+ private_class_method def self.on_jruby?
206
+ jruby_not_supported = explain_issue(
207
+ 'JRuby is not supported by the Datadog Continuous Profiler.',
208
+ suggested: GET_IN_TOUCH,
209
+ )
210
+
211
+ jruby_not_supported if RUBY_ENGINE == 'jruby'
212
+ end
213
+
214
+ private_class_method def self.on_truffleruby?
215
+ truffleruby_not_supported = explain_issue(
216
+ 'TruffleRuby is not supported by the ddtrace gem.',
217
+ suggested: GET_IN_TOUCH,
218
+ )
219
+
220
+ truffleruby_not_supported if RUBY_ENGINE == 'truffleruby'
221
+ end
222
+
223
+ # See https://docs.datadoghq.com/tracing/setup_overview/setup/ruby/#microsoft-windows-support for current
224
+ # state of Windows support in ddtrace.
225
+ private_class_method def self.on_windows?
226
+ windows_not_supported = explain_issue(
227
+ 'Microsoft Windows is not supported by the Datadog Continuous Profiler.',
228
+ suggested: GET_IN_TOUCH,
229
+ )
230
+
231
+ windows_not_supported if Gem.win_platform?
232
+ end
233
+
234
+ private_class_method def self.on_macos?
235
+ macos_not_supported = explain_issue(
236
+ 'macOS is currently not supported by the Datadog Continuous Profiler.',
237
+ suggested: GET_IN_TOUCH,
238
+ )
239
+ # For development only; not supported otherwise
240
+ macos_testing_override = ENV['DD_PROFILING_MACOS_TESTING'] == 'true'
241
+
242
+ macos_not_supported if RUBY_PLATFORM.include?('darwin') && !macos_testing_override
243
+ end
244
+
245
+ private_class_method def self.on_unknown_os?
246
+ unknown_os_not_supported = explain_issue(
247
+ 'your operating system is not supported by the Datadog Continuous Profiler.',
248
+ suggested: GET_IN_TOUCH,
249
+ )
250
+
251
+ unknown_os_not_supported unless RUBY_PLATFORM.include?('darwin') || RUBY_PLATFORM.include?('linux')
252
+ end
253
+
254
+ private_class_method def self.on_unsupported_cpu_arch?
255
+ architecture_not_supported = explain_issue(
256
+ 'your CPU architecture is not supported by the Datadog Continuous Profiler.',
257
+ suggested: GET_IN_TOUCH,
258
+ )
259
+
260
+ architecture_not_supported unless RUBY_PLATFORM.start_with?('x86_64', 'aarch64', 'arm64')
261
+ end
262
+
263
+ private_class_method def self.on_unsupported_ruby_version?
264
+ ruby_version_not_supported = explain_issue(
265
+ 'the profiler only supports Ruby 2.3 or newer.',
266
+ suggested: UPGRADE_RUBY,
267
+ )
268
+
269
+ ruby_version_not_supported if RUBY_VERSION.start_with?('2.1.', '2.2.')
270
+ end
271
+
272
+ # On some Rubies, we require the mjit header to be present. If Ruby was installed without MJIT support, we also skip
273
+ # building the extension.
274
+ private_class_method def self.expected_to_use_mjit_but_mjit_is_disabled?
275
+ ruby_without_mjit = explain_issue(
276
+ 'your Ruby has been compiled without JIT support (--disable-jit-support).',
277
+ 'The profiling native extension requires a Ruby compiled with JIT support,',
278
+ 'even if the JIT is not in use by the application itself.',
279
+ suggested: CONTACT_SUPPORT,
280
+ )
281
+
282
+ ruby_without_mjit if CAN_USE_MJIT_HEADER && RbConfig::CONFIG['MJIT_SUPPORT'] != 'yes'
283
+ end
284
+
285
+ private_class_method def self.libdatadog_not_available?
286
+ begin
287
+ gem 'libdatadog', LIBDATADOG_VERSION
288
+ require 'libdatadog'
289
+ nil
290
+ # rubocop:disable Lint/RescueException
291
+ rescue Exception => e
292
+ explain_issue(
293
+ 'there was an exception during loading of the `libdatadog` gem:',
294
+ e.class.name,
295
+ *e.message.split("\n"),
296
+ *Array(e.backtrace),
297
+ '.',
298
+ suggested: CONTACT_SUPPORT,
299
+ )
300
+ end
301
+ # rubocop:enable Lint/RescueException
302
+ end
303
+
304
+ private_class_method def self.libdatadog_not_usable?
305
+ no_binaries_for_current_platform = explain_issue(
306
+ 'the `libdatadog` gem installed on your system is missing binaries for your',
307
+ 'platform variant.',
308
+ "(Your platform: `#{Gem::Platform.local}`)",
309
+ '(Available binaries: ',
310
+ "`#{Libdatadog.available_binaries.join('`, `')}`)",
311
+ suggested: CONTACT_SUPPORT,
312
+ )
313
+
314
+ no_binaries_for_current_platform unless Libdatadog.pkgconfig_folder
315
+ end
316
+ end
317
+ end
318
+ end
319
+ end