ddtrace 0.54.2 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1192) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +528 -2
  3. data/LICENSE-3rdparty.csv +6 -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 +74 -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.c +899 -0
  13. data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time.h +9 -0
  14. data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +776 -0
  15. data/ext/ddtrace_profiling_native_extension/collectors_dynamic_sampling_rate.c +142 -0
  16. data/ext/ddtrace_profiling_native_extension/collectors_dynamic_sampling_rate.h +14 -0
  17. data/ext/ddtrace_profiling_native_extension/collectors_idle_sampling_helper.c +241 -0
  18. data/ext/ddtrace_profiling_native_extension/collectors_idle_sampling_helper.h +3 -0
  19. data/ext/ddtrace_profiling_native_extension/collectors_stack.c +390 -0
  20. data/ext/ddtrace_profiling_native_extension/collectors_stack.h +18 -0
  21. data/ext/ddtrace_profiling_native_extension/extconf.rb +165 -114
  22. data/ext/ddtrace_profiling_native_extension/helpers.h +17 -0
  23. data/ext/ddtrace_profiling_native_extension/http_transport.c +353 -0
  24. data/ext/ddtrace_profiling_native_extension/libdatadog_helpers.h +14 -0
  25. data/ext/ddtrace_profiling_native_extension/native_extension_helpers.rb +297 -0
  26. data/ext/ddtrace_profiling_native_extension/private_vm_api_access.c +810 -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 +487 -0
  34. data/ext/ddtrace_profiling_native_extension/stack_recorder.h +39 -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 +6521 -0
  42. data/lib/datadog/appsec/assets/waf_rules/risky.json +1499 -0
  43. data/lib/datadog/appsec/assets/waf_rules/strict.json +1533 -0
  44. data/lib/datadog/appsec/assets.rb +38 -0
  45. data/lib/datadog/appsec/autoload.rb +18 -0
  46. data/lib/datadog/appsec/configuration/settings.rb +198 -0
  47. data/lib/datadog/appsec/configuration.rb +84 -0
  48. data/lib/datadog/appsec/contrib/auto_instrument.rb +27 -0
  49. data/lib/datadog/appsec/contrib/configuration/settings.rb +20 -0
  50. data/lib/datadog/appsec/contrib/integration.rb +37 -0
  51. data/lib/datadog/appsec/contrib/patcher.rb +12 -0
  52. data/lib/datadog/appsec/contrib/rack/configuration/settings.rb +22 -0
  53. data/lib/datadog/appsec/contrib/rack/ext.rb +15 -0
  54. data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +174 -0
  55. data/lib/datadog/appsec/contrib/rack/integration.rb +49 -0
  56. data/lib/datadog/appsec/contrib/rack/patcher.rb +32 -0
  57. data/lib/datadog/appsec/contrib/rack/reactive/request.rb +83 -0
  58. data/lib/datadog/appsec/contrib/rack/reactive/request_body.rb +64 -0
  59. data/lib/datadog/appsec/contrib/rack/reactive/response.rb +64 -0
  60. data/lib/datadog/appsec/contrib/rack/request.rb +78 -0
  61. data/lib/datadog/appsec/contrib/rack/request_body_middleware.rb +41 -0
  62. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +139 -0
  63. data/lib/datadog/appsec/contrib/rack/response.rb +24 -0
  64. data/lib/datadog/appsec/contrib/rails/configuration/settings.rb +22 -0
  65. data/lib/datadog/appsec/contrib/rails/ext.rb +15 -0
  66. data/lib/datadog/appsec/contrib/rails/framework.rb +30 -0
  67. data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +82 -0
  68. data/lib/datadog/appsec/contrib/rails/integration.rb +48 -0
  69. data/lib/datadog/appsec/contrib/rails/patcher.rb +159 -0
  70. data/lib/datadog/appsec/contrib/rails/reactive/action.rb +68 -0
  71. data/lib/datadog/appsec/contrib/rails/request.rb +36 -0
  72. data/lib/datadog/appsec/contrib/rails/request_middleware.rb +20 -0
  73. data/lib/datadog/appsec/contrib/sinatra/configuration/settings.rb +22 -0
  74. data/lib/datadog/appsec/contrib/sinatra/ext.rb +16 -0
  75. data/lib/datadog/appsec/contrib/sinatra/framework.rb +34 -0
  76. data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +126 -0
  77. data/lib/datadog/appsec/contrib/sinatra/integration.rb +48 -0
  78. data/lib/datadog/appsec/contrib/sinatra/patcher.rb +151 -0
  79. data/lib/datadog/appsec/contrib/sinatra/reactive/routed.rb +63 -0
  80. data/lib/datadog/appsec/contrib/sinatra/request_middleware.rb +20 -0
  81. data/lib/datadog/appsec/event.rb +117 -0
  82. data/lib/datadog/appsec/extensions.rb +128 -0
  83. data/lib/datadog/appsec/instrumentation/gateway.rb +58 -0
  84. data/lib/datadog/appsec/processor.rb +198 -0
  85. data/lib/datadog/appsec/rate_limiter.rb +60 -0
  86. data/lib/datadog/appsec/reactive/address_hash.rb +18 -0
  87. data/lib/datadog/appsec/reactive/engine.rb +44 -0
  88. data/lib/datadog/appsec/reactive/operation.rb +51 -0
  89. data/lib/datadog/appsec/reactive/subscriber.rb +18 -0
  90. data/lib/datadog/appsec/response.rb +54 -0
  91. data/lib/datadog/appsec.rb +23 -0
  92. data/lib/datadog/ci/configuration/components.rb +9 -8
  93. data/lib/datadog/ci/configuration/settings.rb +20 -4
  94. data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +5 -3
  95. data/lib/datadog/ci/contrib/cucumber/ext.rb +2 -0
  96. data/lib/datadog/ci/contrib/cucumber/formatter.rb +9 -14
  97. data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +3 -2
  98. data/lib/datadog/ci/contrib/cucumber/integration.rb +6 -5
  99. data/lib/datadog/ci/contrib/cucumber/patcher.rb +4 -3
  100. data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +5 -3
  101. data/lib/datadog/ci/contrib/rspec/example.rb +9 -14
  102. data/lib/datadog/ci/contrib/rspec/ext.rb +2 -0
  103. data/lib/datadog/ci/contrib/rspec/integration.rb +6 -5
  104. data/lib/datadog/ci/contrib/rspec/patcher.rb +4 -3
  105. data/lib/datadog/ci/ext/app_types.rb +2 -1
  106. data/lib/datadog/ci/ext/environment.rb +149 -117
  107. data/lib/datadog/ci/ext/settings.rb +2 -1
  108. data/lib/datadog/ci/ext/test.rb +1 -0
  109. data/lib/datadog/ci/extensions.rb +7 -6
  110. data/lib/datadog/ci/flush.rb +38 -0
  111. data/lib/datadog/ci/test.rb +17 -15
  112. data/lib/datadog/ci.rb +7 -4
  113. data/lib/datadog/core/buffer/cruby.rb +55 -0
  114. data/lib/datadog/core/buffer/random.rb +134 -0
  115. data/lib/datadog/core/buffer/thread_safe.rb +58 -0
  116. data/lib/datadog/core/chunker.rb +35 -0
  117. data/lib/datadog/core/configuration/agent_settings_resolver.rb +362 -0
  118. data/lib/datadog/core/configuration/base.rb +98 -0
  119. data/lib/datadog/core/configuration/components.rb +462 -0
  120. data/lib/datadog/core/configuration/dependency_resolver.rb +28 -0
  121. data/lib/datadog/core/configuration/ext.rb +18 -0
  122. data/lib/datadog/core/configuration/option.rb +69 -0
  123. data/lib/datadog/core/configuration/option_definition.rb +126 -0
  124. data/lib/datadog/core/configuration/option_definition_set.rb +22 -0
  125. data/lib/datadog/core/configuration/option_set.rb +10 -0
  126. data/lib/datadog/core/configuration/options.rb +118 -0
  127. data/lib/datadog/core/configuration/settings.rb +444 -0
  128. data/lib/datadog/core/configuration.rb +289 -0
  129. data/lib/datadog/core/diagnostics/environment_logger.rb +287 -0
  130. data/lib/datadog/core/diagnostics/health.rb +19 -0
  131. data/lib/datadog/core/encoding.rb +76 -0
  132. data/lib/datadog/core/environment/cgroup.rb +5 -2
  133. data/lib/datadog/core/environment/class_count.rb +1 -0
  134. data/lib/datadog/core/environment/container.rb +4 -2
  135. data/lib/datadog/core/environment/ext.rb +29 -10
  136. data/lib/datadog/core/environment/gc.rb +1 -0
  137. data/lib/datadog/core/environment/identity.rb +12 -5
  138. data/lib/datadog/core/environment/platform.rb +40 -0
  139. data/lib/datadog/core/environment/socket.rb +9 -2
  140. data/lib/datadog/core/environment/thread_count.rb +1 -0
  141. data/lib/datadog/core/environment/variable_helpers.rb +85 -11
  142. data/lib/datadog/core/environment/vm_cache.rb +1 -0
  143. data/lib/datadog/core/error.rb +101 -0
  144. data/lib/datadog/core/extensions.rb +16 -0
  145. data/lib/datadog/core/git/ext.rb +35 -0
  146. data/lib/datadog/core/header_collection.rb +41 -0
  147. data/lib/datadog/core/logger.rb +46 -0
  148. data/lib/datadog/core/logging/ext.rb +11 -0
  149. data/lib/datadog/core/metrics/client.rb +198 -0
  150. data/lib/datadog/core/metrics/ext.rb +20 -0
  151. data/lib/datadog/core/metrics/helpers.rb +25 -0
  152. data/lib/datadog/core/metrics/logging.rb +44 -0
  153. data/lib/datadog/core/metrics/metric.rb +14 -0
  154. data/lib/datadog/core/metrics/options.rb +50 -0
  155. data/lib/datadog/core/pin.rb +75 -0
  156. data/lib/datadog/core/runtime/ext.rb +28 -0
  157. data/lib/datadog/core/runtime/metrics.rb +126 -0
  158. data/lib/datadog/core/telemetry/client.rb +79 -0
  159. data/lib/datadog/core/telemetry/collector.rb +232 -0
  160. data/lib/datadog/core/telemetry/emitter.rb +48 -0
  161. data/lib/datadog/core/telemetry/event.rb +71 -0
  162. data/lib/datadog/core/telemetry/ext.rb +11 -0
  163. data/lib/datadog/core/telemetry/heartbeat.rb +37 -0
  164. data/lib/datadog/core/telemetry/http/adapters/net.rb +113 -0
  165. data/lib/datadog/core/telemetry/http/env.rb +20 -0
  166. data/lib/datadog/core/telemetry/http/ext.rb +20 -0
  167. data/lib/datadog/core/telemetry/http/response.rb +68 -0
  168. data/lib/datadog/core/telemetry/http/transport.rb +53 -0
  169. data/lib/datadog/core/telemetry/v1/app_event.rb +52 -0
  170. data/lib/datadog/core/telemetry/v1/application.rb +86 -0
  171. data/lib/datadog/core/telemetry/v1/configuration.rb +25 -0
  172. data/lib/datadog/core/telemetry/v1/dependency.rb +36 -0
  173. data/lib/datadog/core/telemetry/v1/host.rb +51 -0
  174. data/lib/datadog/core/telemetry/v1/integration.rb +58 -0
  175. data/lib/datadog/core/telemetry/v1/product.rb +28 -0
  176. data/lib/datadog/core/telemetry/v1/telemetry_request.rb +100 -0
  177. data/lib/datadog/core/utils/compression.rb +36 -0
  178. data/lib/datadog/core/utils/forking.rb +63 -0
  179. data/lib/datadog/core/utils/object_set.rb +43 -0
  180. data/lib/datadog/core/utils/only_once.rb +44 -0
  181. data/lib/datadog/core/utils/safe_dup.rb +27 -0
  182. data/lib/datadog/core/utils/sequence.rb +26 -0
  183. data/lib/datadog/core/utils/string_table.rb +49 -0
  184. data/lib/datadog/core/utils/time.rb +54 -0
  185. data/lib/datadog/core/utils.rb +94 -0
  186. data/lib/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rb +120 -0
  187. data/lib/datadog/core/vendor/multipart-post/multipart/post/multipartable.rb +61 -0
  188. data/lib/datadog/core/vendor/multipart-post/multipart/post/parts.rb +139 -0
  189. data/lib/datadog/core/vendor/multipart-post/multipart/post/version.rb +13 -0
  190. data/lib/datadog/core/vendor/multipart-post/multipart/post.rb +12 -0
  191. data/lib/datadog/core/vendor/multipart-post/multipart.rb +16 -0
  192. data/lib/datadog/core/vendor/multipart-post/net/http/post/multipart.rb +36 -0
  193. data/lib/datadog/core/worker.rb +24 -0
  194. data/lib/datadog/core/workers/async.rb +180 -0
  195. data/lib/datadog/core/workers/interval_loop.rb +119 -0
  196. data/lib/datadog/core/workers/polling.rb +59 -0
  197. data/lib/datadog/core/workers/queue.rb +44 -0
  198. data/lib/datadog/core/workers/runtime_metrics.rb +62 -0
  199. data/lib/datadog/core.rb +46 -0
  200. data/lib/datadog/kit/enable_core_dumps.rb +50 -0
  201. data/lib/datadog/kit/identity.rb +63 -0
  202. data/lib/datadog/kit.rb +11 -0
  203. data/lib/datadog/opentracer/binary_propagator.rb +26 -0
  204. data/lib/datadog/opentracer/carrier.rb +9 -0
  205. data/lib/datadog/opentracer/distributed_headers.rb +56 -0
  206. data/lib/datadog/opentracer/global_tracer.rb +17 -0
  207. data/lib/datadog/opentracer/propagator.rb +26 -0
  208. data/lib/datadog/opentracer/rack_propagator.rb +73 -0
  209. data/lib/datadog/opentracer/scope.rb +18 -0
  210. data/lib/datadog/opentracer/scope_manager.rb +9 -0
  211. data/lib/datadog/opentracer/span.rb +101 -0
  212. data/lib/datadog/opentracer/span_context.rb +19 -0
  213. data/lib/datadog/opentracer/span_context_factory.rb +27 -0
  214. data/lib/datadog/opentracer/text_map_propagator.rb +88 -0
  215. data/lib/datadog/opentracer/thread_local_scope.rb +34 -0
  216. data/lib/datadog/opentracer/thread_local_scope_manager.rb +66 -0
  217. data/lib/datadog/opentracer/tracer.rb +214 -0
  218. data/lib/datadog/opentracer.rb +24 -0
  219. data/lib/datadog/profiling/backtrace_location.rb +34 -0
  220. data/lib/datadog/profiling/buffer.rb +43 -0
  221. data/lib/datadog/profiling/collectors/code_provenance.rb +115 -0
  222. data/lib/datadog/profiling/collectors/cpu_and_wall_time.rb +43 -0
  223. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +91 -0
  224. data/lib/datadog/profiling/collectors/dynamic_sampling_rate.rb +14 -0
  225. data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +68 -0
  226. data/lib/datadog/profiling/collectors/old_stack.rb +305 -0
  227. data/lib/datadog/profiling/collectors/stack.rb +13 -0
  228. data/lib/datadog/profiling/encoding/profile.rb +43 -0
  229. data/lib/datadog/profiling/event.rb +15 -0
  230. data/lib/datadog/profiling/events/stack.rb +82 -0
  231. data/lib/datadog/profiling/exporter.rb +85 -0
  232. data/lib/datadog/profiling/ext/forking.rb +98 -0
  233. data/lib/datadog/profiling/ext.rb +45 -0
  234. data/lib/datadog/profiling/flush.rb +38 -0
  235. data/lib/datadog/profiling/http_transport.rb +132 -0
  236. data/lib/datadog/profiling/load_native_extension.rb +22 -0
  237. data/lib/datadog/profiling/native_extension.rb +41 -0
  238. data/lib/datadog/profiling/old_recorder.rb +109 -0
  239. data/lib/datadog/profiling/pprof/builder.rb +127 -0
  240. data/lib/datadog/profiling/pprof/converter.rb +104 -0
  241. data/lib/datadog/profiling/pprof/message_set.rb +16 -0
  242. data/lib/datadog/profiling/pprof/payload.rb +20 -0
  243. data/lib/datadog/profiling/pprof/pprof_pb.rb +83 -0
  244. data/lib/datadog/profiling/pprof/stack_sample.rb +141 -0
  245. data/lib/datadog/profiling/pprof/string_table.rb +12 -0
  246. data/lib/datadog/profiling/pprof/template.rb +120 -0
  247. data/lib/datadog/profiling/preload.rb +5 -0
  248. data/lib/datadog/profiling/profiler.rb +41 -0
  249. data/lib/datadog/profiling/scheduler.rb +130 -0
  250. data/lib/datadog/profiling/stack_recorder.rb +79 -0
  251. data/lib/datadog/profiling/tag_builder.rb +53 -0
  252. data/lib/datadog/profiling/tasks/exec.rb +50 -0
  253. data/lib/datadog/profiling/tasks/help.rb +18 -0
  254. data/lib/datadog/profiling/tasks/setup.rb +86 -0
  255. data/lib/datadog/profiling/trace_identifiers/ddtrace.rb +45 -0
  256. data/lib/datadog/profiling/trace_identifiers/helper.rb +47 -0
  257. data/lib/datadog/profiling.rb +173 -0
  258. data/lib/datadog/tracing/analytics.rb +25 -0
  259. data/lib/datadog/tracing/buffer.rb +132 -0
  260. data/lib/datadog/tracing/client_ip.rb +164 -0
  261. data/lib/datadog/tracing/configuration/ext.rb +95 -0
  262. data/lib/datadog/tracing/configuration/settings.rb +433 -0
  263. data/lib/datadog/tracing/context.rb +68 -0
  264. data/lib/datadog/tracing/context_provider.rb +82 -0
  265. data/lib/datadog/tracing/contrib/action_cable/configuration/settings.rb +35 -0
  266. data/lib/datadog/tracing/contrib/action_cable/event.rb +71 -0
  267. data/lib/datadog/tracing/contrib/action_cable/events/broadcast.rb +58 -0
  268. data/lib/datadog/tracing/contrib/action_cable/events/perform_action.rb +63 -0
  269. data/lib/datadog/tracing/contrib/action_cable/events/transmit.rb +59 -0
  270. data/lib/datadog/tracing/contrib/action_cable/events.rb +37 -0
  271. data/lib/datadog/tracing/contrib/action_cable/ext.rb +32 -0
  272. data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +90 -0
  273. data/lib/datadog/tracing/contrib/action_cable/integration.rb +50 -0
  274. data/lib/datadog/tracing/contrib/action_cable/patcher.rb +31 -0
  275. data/lib/datadog/tracing/contrib/action_mailer/configuration/settings.rb +36 -0
  276. data/lib/datadog/tracing/contrib/action_mailer/event.rb +52 -0
  277. data/lib/datadog/tracing/contrib/action_mailer/events/deliver.rb +60 -0
  278. data/lib/datadog/tracing/contrib/action_mailer/events/process.rb +47 -0
  279. data/lib/datadog/tracing/contrib/action_mailer/events.rb +34 -0
  280. data/lib/datadog/tracing/contrib/action_mailer/ext.rb +33 -0
  281. data/lib/datadog/tracing/contrib/action_mailer/integration.rb +50 -0
  282. data/lib/datadog/tracing/contrib/action_mailer/patcher.rb +29 -0
  283. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +160 -0
  284. data/lib/datadog/tracing/contrib/action_pack/action_controller/patcher.rb +29 -0
  285. data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +36 -0
  286. data/lib/datadog/tracing/contrib/action_pack/ext.rb +22 -0
  287. data/lib/datadog/tracing/contrib/action_pack/integration.rb +50 -0
  288. data/lib/datadog/tracing/contrib/action_pack/patcher.rb +27 -0
  289. data/lib/datadog/tracing/contrib/action_pack/utils.rb +40 -0
  290. data/lib/datadog/tracing/contrib/action_view/configuration/settings.rb +36 -0
  291. data/lib/datadog/tracing/contrib/action_view/event.rb +35 -0
  292. data/lib/datadog/tracing/contrib/action_view/events/render_partial.rb +54 -0
  293. data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +57 -0
  294. data/lib/datadog/tracing/contrib/action_view/events.rb +34 -0
  295. data/lib/datadog/tracing/contrib/action_view/ext.rb +24 -0
  296. data/lib/datadog/tracing/contrib/action_view/instrumentation/partial_renderer.rb +78 -0
  297. data/lib/datadog/tracing/contrib/action_view/instrumentation/template_renderer.rb +91 -0
  298. data/lib/datadog/tracing/contrib/action_view/integration.rb +57 -0
  299. data/lib/datadog/tracing/contrib/action_view/patcher.rb +47 -0
  300. data/lib/datadog/tracing/contrib/action_view/utils.rb +36 -0
  301. data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +37 -0
  302. data/lib/datadog/tracing/contrib/active_job/event.rb +58 -0
  303. data/lib/datadog/tracing/contrib/active_job/events/discard.rb +50 -0
  304. data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +49 -0
  305. data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +49 -0
  306. data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +51 -0
  307. data/lib/datadog/tracing/contrib/active_job/events/perform.rb +49 -0
  308. data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +50 -0
  309. data/lib/datadog/tracing/contrib/active_job/events.rb +42 -0
  310. data/lib/datadog/tracing/contrib/active_job/ext.rb +39 -0
  311. data/lib/datadog/tracing/contrib/active_job/integration.rb +50 -0
  312. data/lib/datadog/tracing/contrib/active_job/log_injection.rb +24 -0
  313. data/lib/datadog/tracing/contrib/active_job/patcher.rb +36 -0
  314. data/lib/datadog/tracing/contrib/active_model_serializers/configuration/settings.rb +33 -0
  315. data/lib/datadog/tracing/contrib/active_model_serializers/event.rb +68 -0
  316. data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +45 -0
  317. data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +47 -0
  318. data/lib/datadog/tracing/contrib/active_model_serializers/events.rb +34 -0
  319. data/lib/datadog/tracing/contrib/active_model_serializers/ext.rb +24 -0
  320. data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +45 -0
  321. data/lib/datadog/tracing/contrib/active_model_serializers/patcher.rb +32 -0
  322. data/lib/datadog/tracing/contrib/active_record/configuration/makara_resolver.rb +36 -0
  323. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +138 -0
  324. data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +39 -0
  325. data/lib/datadog/tracing/contrib/active_record/event.rb +30 -0
  326. data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +58 -0
  327. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +78 -0
  328. data/lib/datadog/tracing/contrib/active_record/events.rb +34 -0
  329. data/lib/datadog/tracing/contrib/active_record/ext.rb +29 -0
  330. data/lib/datadog/tracing/contrib/active_record/integration.rb +56 -0
  331. data/lib/datadog/tracing/contrib/active_record/patcher.rb +27 -0
  332. data/lib/datadog/tracing/contrib/active_record/utils.rb +128 -0
  333. data/lib/datadog/tracing/contrib/active_record/vendor/connection_specification.rb +307 -0
  334. data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +280 -0
  335. data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +73 -0
  336. data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +47 -0
  337. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +35 -0
  338. data/lib/datadog/tracing/contrib/active_support/ext.rb +31 -0
  339. data/lib/datadog/tracing/contrib/active_support/integration.rb +51 -0
  340. data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +71 -0
  341. data/lib/datadog/tracing/contrib/active_support/notifications/subscriber.rb +71 -0
  342. data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +164 -0
  343. data/lib/datadog/tracing/contrib/active_support/patcher.rb +27 -0
  344. data/lib/datadog/tracing/contrib/analytics.rb +29 -0
  345. data/lib/datadog/tracing/contrib/auto_instrument.rb +53 -0
  346. data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +38 -0
  347. data/lib/datadog/tracing/contrib/aws/ext.rb +28 -0
  348. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +96 -0
  349. data/lib/datadog/tracing/contrib/aws/integration.rb +47 -0
  350. data/lib/datadog/tracing/contrib/aws/parsed_context.rb +60 -0
  351. data/lib/datadog/tracing/contrib/aws/patcher.rb +57 -0
  352. data/lib/datadog/tracing/contrib/aws/services.rb +121 -0
  353. data/lib/datadog/tracing/contrib/concurrent_ruby/configuration/settings.rb +23 -0
  354. data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +53 -0
  355. data/lib/datadog/tracing/contrib/concurrent_ruby/ext.rb +16 -0
  356. data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +27 -0
  357. data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +43 -0
  358. data/lib/datadog/tracing/contrib/concurrent_ruby/patcher.rb +33 -0
  359. data/lib/datadog/tracing/contrib/configurable.rb +102 -0
  360. data/lib/datadog/tracing/contrib/configuration/resolver.rb +85 -0
  361. data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +43 -0
  362. data/lib/datadog/tracing/contrib/configuration/settings.rb +43 -0
  363. data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +38 -0
  364. data/lib/datadog/tracing/contrib/dalli/ext.rb +26 -0
  365. data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +61 -0
  366. data/lib/datadog/tracing/contrib/dalli/integration.rb +52 -0
  367. data/lib/datadog/tracing/contrib/dalli/patcher.rb +28 -0
  368. data/lib/datadog/tracing/contrib/dalli/quantize.rb +26 -0
  369. data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +38 -0
  370. data/lib/datadog/tracing/contrib/delayed_job/ext.rb +28 -0
  371. data/lib/datadog/tracing/contrib/delayed_job/integration.rb +43 -0
  372. data/lib/datadog/tracing/contrib/delayed_job/patcher.rb +37 -0
  373. data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +104 -0
  374. data/lib/datadog/tracing/contrib/delayed_job/server_internal_tracer/worker.rb +32 -0
  375. data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +40 -0
  376. data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +29 -0
  377. data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +50 -0
  378. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +153 -0
  379. data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +89 -0
  380. data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +42 -0
  381. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +176 -0
  382. data/lib/datadog/tracing/contrib/ethon/ext.rb +25 -0
  383. data/lib/datadog/tracing/contrib/ethon/integration.rb +48 -0
  384. data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +97 -0
  385. data/lib/datadog/tracing/contrib/ethon/patcher.rb +31 -0
  386. data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +42 -0
  387. data/lib/datadog/tracing/contrib/excon/ext.rb +22 -0
  388. data/lib/datadog/tracing/contrib/excon/integration.rb +48 -0
  389. data/lib/datadog/tracing/contrib/excon/middleware.rb +171 -0
  390. data/lib/datadog/tracing/contrib/excon/patcher.rb +31 -0
  391. data/lib/datadog/tracing/contrib/ext.rb +25 -0
  392. data/lib/datadog/tracing/contrib/extensions.rb +199 -0
  393. data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +46 -0
  394. data/lib/datadog/tracing/contrib/faraday/connection.rb +22 -0
  395. data/lib/datadog/tracing/contrib/faraday/ext.rb +22 -0
  396. data/lib/datadog/tracing/contrib/faraday/integration.rb +48 -0
  397. data/lib/datadog/tracing/contrib/faraday/middleware.rb +93 -0
  398. data/lib/datadog/tracing/contrib/faraday/patcher.rb +56 -0
  399. data/lib/datadog/tracing/contrib/faraday/rack_builder.rb +22 -0
  400. data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +42 -0
  401. data/lib/datadog/tracing/contrib/grape/endpoint.rb +250 -0
  402. data/lib/datadog/tracing/contrib/grape/ext.rb +28 -0
  403. data/lib/datadog/tracing/contrib/grape/instrumentation.rb +37 -0
  404. data/lib/datadog/tracing/contrib/grape/integration.rb +44 -0
  405. data/lib/datadog/tracing/contrib/grape/patcher.rb +33 -0
  406. data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +36 -0
  407. data/lib/datadog/tracing/contrib/graphql/ext.rb +19 -0
  408. data/lib/datadog/tracing/contrib/graphql/integration.rb +44 -0
  409. data/lib/datadog/tracing/contrib/graphql/patcher.rb +90 -0
  410. data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +43 -0
  411. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +99 -0
  412. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +90 -0
  413. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb +107 -0
  414. data/lib/datadog/tracing/contrib/grpc/distributed/fetcher.rb +27 -0
  415. data/lib/datadog/tracing/contrib/grpc/distributed/propagation.rb +43 -0
  416. data/lib/datadog/tracing/contrib/grpc/ext.rb +27 -0
  417. data/lib/datadog/tracing/contrib/grpc/integration.rb +43 -0
  418. data/lib/datadog/tracing/contrib/grpc/intercept_with_datadog.rb +53 -0
  419. data/lib/datadog/tracing/contrib/grpc/patcher.rb +35 -0
  420. data/lib/datadog/tracing/contrib/hanami/action_tracer.rb +47 -0
  421. data/lib/datadog/tracing/contrib/hanami/configuration/settings.rb +22 -0
  422. data/lib/datadog/tracing/contrib/hanami/ext.rb +24 -0
  423. data/lib/datadog/tracing/contrib/hanami/integration.rb +44 -0
  424. data/lib/datadog/tracing/contrib/hanami/patcher.rb +33 -0
  425. data/lib/datadog/tracing/contrib/hanami/plugin.rb +23 -0
  426. data/lib/datadog/tracing/contrib/hanami/renderer_policy_tracing.rb +41 -0
  427. data/lib/datadog/tracing/contrib/hanami/router_tracing.rb +44 -0
  428. data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +43 -0
  429. data/lib/datadog/tracing/contrib/http/configuration/settings.rb +42 -0
  430. data/lib/datadog/tracing/contrib/http/distributed/fetcher.rb +32 -0
  431. data/lib/datadog/tracing/contrib/http/distributed/propagation.rb +38 -0
  432. data/lib/datadog/tracing/contrib/http/ext.rb +22 -0
  433. data/lib/datadog/tracing/contrib/http/instrumentation.rb +140 -0
  434. data/lib/datadog/tracing/contrib/http/integration.rb +49 -0
  435. data/lib/datadog/tracing/contrib/http/patcher.rb +30 -0
  436. data/lib/datadog/tracing/contrib/http_annotation_helper.rb +17 -0
  437. data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +42 -0
  438. data/lib/datadog/tracing/contrib/httpclient/ext.rb +22 -0
  439. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +118 -0
  440. data/lib/datadog/tracing/contrib/httpclient/integration.rb +48 -0
  441. data/lib/datadog/tracing/contrib/httpclient/patcher.rb +42 -0
  442. data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +42 -0
  443. data/lib/datadog/tracing/contrib/httprb/ext.rb +22 -0
  444. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +129 -0
  445. data/lib/datadog/tracing/contrib/httprb/integration.rb +48 -0
  446. data/lib/datadog/tracing/contrib/httprb/patcher.rb +42 -0
  447. data/lib/datadog/tracing/contrib/integration.rb +78 -0
  448. data/lib/datadog/tracing/contrib/kafka/configuration/settings.rb +35 -0
  449. data/lib/datadog/tracing/contrib/kafka/consumer_event.rb +19 -0
  450. data/lib/datadog/tracing/contrib/kafka/consumer_group_event.rb +18 -0
  451. data/lib/datadog/tracing/contrib/kafka/event.rb +52 -0
  452. data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +42 -0
  453. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +49 -0
  454. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +47 -0
  455. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +47 -0
  456. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +37 -0
  457. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +37 -0
  458. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +37 -0
  459. data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +41 -0
  460. data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +44 -0
  461. data/lib/datadog/tracing/contrib/kafka/events.rb +48 -0
  462. data/lib/datadog/tracing/contrib/kafka/ext.rb +52 -0
  463. data/lib/datadog/tracing/contrib/kafka/integration.rb +44 -0
  464. data/lib/datadog/tracing/contrib/kafka/patcher.rb +29 -0
  465. data/lib/datadog/tracing/contrib/lograge/configuration/settings.rb +23 -0
  466. data/lib/datadog/tracing/contrib/lograge/ext.rb +15 -0
  467. data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +46 -0
  468. data/lib/datadog/tracing/contrib/lograge/integration.rb +50 -0
  469. data/lib/datadog/tracing/contrib/lograge/patcher.rb +29 -0
  470. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +42 -0
  471. data/lib/datadog/tracing/contrib/mongodb/ext.rb +35 -0
  472. data/lib/datadog/tracing/contrib/mongodb/instrumentation.rb +47 -0
  473. data/lib/datadog/tracing/contrib/mongodb/integration.rb +48 -0
  474. data/lib/datadog/tracing/contrib/mongodb/parsers.rb +49 -0
  475. data/lib/datadog/tracing/contrib/mongodb/patcher.rb +34 -0
  476. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +127 -0
  477. data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +50 -0
  478. data/lib/datadog/tracing/contrib/mysql2/ext.rb +24 -0
  479. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +77 -0
  480. data/lib/datadog/tracing/contrib/mysql2/integration.rb +43 -0
  481. data/lib/datadog/tracing/contrib/mysql2/patcher.rb +31 -0
  482. data/lib/datadog/tracing/contrib/patchable.rb +109 -0
  483. data/lib/datadog/tracing/contrib/patcher.rb +86 -0
  484. data/lib/datadog/tracing/contrib/pg/configuration/settings.rb +50 -0
  485. data/lib/datadog/tracing/contrib/pg/ext.rb +33 -0
  486. data/lib/datadog/tracing/contrib/pg/instrumentation.rb +155 -0
  487. data/lib/datadog/tracing/contrib/pg/integration.rb +43 -0
  488. data/lib/datadog/tracing/contrib/pg/patcher.rb +31 -0
  489. data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +38 -0
  490. data/lib/datadog/tracing/contrib/presto/ext.rb +33 -0
  491. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +124 -0
  492. data/lib/datadog/tracing/contrib/presto/integration.rb +43 -0
  493. data/lib/datadog/tracing/contrib/presto/patcher.rb +37 -0
  494. data/lib/datadog/tracing/contrib/propagation/sql_comment/comment.rb +43 -0
  495. data/lib/datadog/tracing/contrib/propagation/sql_comment/ext.rb +33 -0
  496. data/lib/datadog/tracing/contrib/propagation/sql_comment/mode.rb +28 -0
  497. data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +47 -0
  498. data/lib/datadog/tracing/contrib/qless/configuration/settings.rb +40 -0
  499. data/lib/datadog/tracing/contrib/qless/ext.rb +26 -0
  500. data/lib/datadog/tracing/contrib/qless/integration.rb +43 -0
  501. data/lib/datadog/tracing/contrib/qless/patcher.rb +37 -0
  502. data/lib/datadog/tracing/contrib/qless/qless_job.rb +74 -0
  503. data/lib/datadog/tracing/contrib/qless/tracer_cleaner.rb +30 -0
  504. data/lib/datadog/tracing/contrib/que/configuration/settings.rb +49 -0
  505. data/lib/datadog/tracing/contrib/que/ext.rb +34 -0
  506. data/lib/datadog/tracing/contrib/que/integration.rb +46 -0
  507. data/lib/datadog/tracing/contrib/que/patcher.rb +28 -0
  508. data/lib/datadog/tracing/contrib/que/tracer.rb +63 -0
  509. data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +35 -0
  510. data/lib/datadog/tracing/contrib/racecar/event.rb +78 -0
  511. data/lib/datadog/tracing/contrib/racecar/events/batch.rb +38 -0
  512. data/lib/datadog/tracing/contrib/racecar/events/consume.rb +35 -0
  513. data/lib/datadog/tracing/contrib/racecar/events/message.rb +38 -0
  514. data/lib/datadog/tracing/contrib/racecar/events.rb +36 -0
  515. data/lib/datadog/tracing/contrib/racecar/ext.rb +31 -0
  516. data/lib/datadog/tracing/contrib/racecar/integration.rb +44 -0
  517. data/lib/datadog/tracing/contrib/racecar/patcher.rb +29 -0
  518. data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +51 -0
  519. data/lib/datadog/tracing/contrib/rack/ext.rb +25 -0
  520. data/lib/datadog/tracing/contrib/rack/header_collection.rb +35 -0
  521. data/lib/datadog/tracing/contrib/rack/integration.rb +50 -0
  522. data/lib/datadog/tracing/contrib/rack/middlewares.rb +323 -0
  523. data/lib/datadog/tracing/contrib/rack/patcher.rb +119 -0
  524. data/lib/datadog/tracing/contrib/rack/request_queue.rb +48 -0
  525. data/lib/datadog/tracing/contrib/rails/auto_instrument_railtie.rb +12 -0
  526. data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +74 -0
  527. data/lib/datadog/tracing/contrib/rails/ext.rb +19 -0
  528. data/lib/datadog/tracing/contrib/rails/framework.rb +148 -0
  529. data/lib/datadog/tracing/contrib/rails/integration.rb +49 -0
  530. data/lib/datadog/tracing/contrib/rails/log_injection.rb +32 -0
  531. data/lib/datadog/tracing/contrib/rails/middlewares.rb +46 -0
  532. data/lib/datadog/tracing/contrib/rails/patcher.rb +120 -0
  533. data/lib/datadog/tracing/contrib/rails/railtie.rb +19 -0
  534. data/lib/datadog/tracing/contrib/rails/utils.rb +28 -0
  535. data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +51 -0
  536. data/lib/datadog/tracing/contrib/rake/ext.rb +26 -0
  537. data/lib/datadog/tracing/contrib/rake/instrumentation.rb +103 -0
  538. data/lib/datadog/tracing/contrib/rake/integration.rb +43 -0
  539. data/lib/datadog/tracing/contrib/rake/patcher.rb +33 -0
  540. data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +49 -0
  541. data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +43 -0
  542. data/lib/datadog/tracing/contrib/redis/ext.rb +29 -0
  543. data/lib/datadog/tracing/contrib/redis/instrumentation.rb +88 -0
  544. data/lib/datadog/tracing/contrib/redis/integration.rb +80 -0
  545. data/lib/datadog/tracing/contrib/redis/patcher.rb +79 -0
  546. data/lib/datadog/tracing/contrib/redis/quantize.rb +82 -0
  547. data/lib/datadog/tracing/contrib/redis/tags.rb +56 -0
  548. data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +72 -0
  549. data/lib/datadog/tracing/contrib/redis/vendor/resolver.rb +162 -0
  550. data/lib/datadog/tracing/contrib/registerable.rb +50 -0
  551. data/lib/datadog/tracing/contrib/registry.rb +52 -0
  552. data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +37 -0
  553. data/lib/datadog/tracing/contrib/resque/ext.rb +21 -0
  554. data/lib/datadog/tracing/contrib/resque/integration.rb +48 -0
  555. data/lib/datadog/tracing/contrib/resque/patcher.rb +29 -0
  556. data/lib/datadog/tracing/contrib/resque/resque_job.rb +104 -0
  557. data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +42 -0
  558. data/lib/datadog/tracing/contrib/rest_client/ext.rb +22 -0
  559. data/lib/datadog/tracing/contrib/rest_client/integration.rb +43 -0
  560. data/lib/datadog/tracing/contrib/rest_client/patcher.rb +29 -0
  561. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +106 -0
  562. data/lib/datadog/tracing/contrib/semantic_logger/configuration/settings.rb +23 -0
  563. data/lib/datadog/tracing/contrib/semantic_logger/ext.rb +15 -0
  564. data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +50 -0
  565. data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +52 -0
  566. data/lib/datadog/tracing/contrib/semantic_logger/patcher.rb +29 -0
  567. data/lib/datadog/tracing/contrib/sequel/configuration/settings.rb +33 -0
  568. data/lib/datadog/tracing/contrib/sequel/database.rb +59 -0
  569. data/lib/datadog/tracing/contrib/sequel/dataset.rb +64 -0
  570. data/lib/datadog/tracing/contrib/sequel/ext.rb +22 -0
  571. data/lib/datadog/tracing/contrib/sequel/integration.rb +43 -0
  572. data/lib/datadog/tracing/contrib/sequel/patcher.rb +37 -0
  573. data/lib/datadog/tracing/contrib/sequel/utils.rb +87 -0
  574. data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +38 -0
  575. data/lib/datadog/tracing/contrib/shoryuken/ext.rb +25 -0
  576. data/lib/datadog/tracing/contrib/shoryuken/integration.rb +44 -0
  577. data/lib/datadog/tracing/contrib/shoryuken/patcher.rb +28 -0
  578. data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +63 -0
  579. data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +57 -0
  580. data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +44 -0
  581. data/lib/datadog/tracing/contrib/sidekiq/ext.rb +44 -0
  582. data/lib/datadog/tracing/contrib/sidekiq/integration.rb +53 -0
  583. data/lib/datadog/tracing/contrib/sidekiq/patcher.rb +78 -0
  584. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/heartbeat.rb +52 -0
  585. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/job_fetch.rb +34 -0
  586. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/redis_info.rb +32 -0
  587. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/scheduled_poller.rb +53 -0
  588. data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +102 -0
  589. data/lib/datadog/tracing/contrib/sidekiq/tracing.rb +44 -0
  590. data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +43 -0
  591. data/lib/datadog/tracing/contrib/sinatra/env.rb +55 -0
  592. data/lib/datadog/tracing/contrib/sinatra/ext.rb +36 -0
  593. data/lib/datadog/tracing/contrib/sinatra/framework.rb +116 -0
  594. data/lib/datadog/tracing/contrib/sinatra/headers.rb +35 -0
  595. data/lib/datadog/tracing/contrib/sinatra/integration.rb +43 -0
  596. data/lib/datadog/tracing/contrib/sinatra/patcher.rb +76 -0
  597. data/lib/datadog/tracing/contrib/sinatra/tracer.rb +86 -0
  598. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +127 -0
  599. data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +38 -0
  600. data/lib/datadog/tracing/contrib/sneakers/ext.rb +26 -0
  601. data/lib/datadog/tracing/contrib/sneakers/integration.rb +46 -0
  602. data/lib/datadog/tracing/contrib/sneakers/patcher.rb +29 -0
  603. data/lib/datadog/tracing/contrib/sneakers/tracer.rb +59 -0
  604. data/lib/datadog/tracing/contrib/status_code_matcher.rb +75 -0
  605. data/lib/datadog/tracing/contrib/sucker_punch/configuration/settings.rb +35 -0
  606. data/lib/datadog/tracing/contrib/sucker_punch/exception_handler.rb +28 -0
  607. data/lib/datadog/tracing/contrib/sucker_punch/ext.rb +27 -0
  608. data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +104 -0
  609. data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +43 -0
  610. data/lib/datadog/tracing/contrib/sucker_punch/patcher.rb +36 -0
  611. data/lib/datadog/tracing/contrib/utils/database.rb +31 -0
  612. data/lib/datadog/tracing/contrib/utils/quantization/hash.rb +111 -0
  613. data/lib/datadog/tracing/contrib/utils/quantization/http.rb +181 -0
  614. data/lib/datadog/tracing/contrib.rb +78 -0
  615. data/lib/datadog/tracing/correlation.rb +100 -0
  616. data/lib/datadog/tracing/diagnostics/ext.rb +36 -0
  617. data/lib/datadog/tracing/diagnostics/health.rb +40 -0
  618. data/lib/datadog/tracing/distributed/b3_multi.rb +66 -0
  619. data/lib/datadog/tracing/distributed/b3_single.rb +66 -0
  620. data/lib/datadog/tracing/distributed/datadog.rb +153 -0
  621. data/lib/datadog/tracing/distributed/datadog_tags_codec.rb +85 -0
  622. data/lib/datadog/tracing/distributed/fetcher.rb +30 -0
  623. data/lib/datadog/tracing/distributed/headers/ext.rb +35 -0
  624. data/lib/datadog/tracing/distributed/helpers.rb +80 -0
  625. data/lib/datadog/tracing/distributed/none.rb +19 -0
  626. data/lib/datadog/tracing/distributed/propagation.rb +127 -0
  627. data/lib/datadog/tracing/distributed/trace_context.rb +369 -0
  628. data/lib/datadog/tracing/event.rb +78 -0
  629. data/lib/datadog/tracing/flush.rb +96 -0
  630. data/lib/datadog/tracing/metadata/analytics.rb +26 -0
  631. data/lib/datadog/tracing/metadata/errors.rb +24 -0
  632. data/lib/datadog/tracing/metadata/ext.rb +178 -0
  633. data/lib/datadog/tracing/metadata/tagging.rb +125 -0
  634. data/lib/datadog/tracing/metadata.rb +20 -0
  635. data/lib/datadog/tracing/pipeline/span_filter.rb +46 -0
  636. data/lib/datadog/tracing/pipeline/span_processor.rb +39 -0
  637. data/lib/datadog/tracing/pipeline.rb +65 -0
  638. data/lib/datadog/tracing/propagation/http.rb +14 -0
  639. data/lib/datadog/tracing/runtime/metrics.rb +19 -0
  640. data/lib/datadog/tracing/sampling/all_sampler.rb +25 -0
  641. data/lib/datadog/tracing/sampling/ext.rb +58 -0
  642. data/lib/datadog/tracing/sampling/matcher.rb +68 -0
  643. data/lib/datadog/tracing/sampling/priority_sampler.rb +165 -0
  644. data/lib/datadog/tracing/sampling/rate_by_key_sampler.rb +96 -0
  645. data/lib/datadog/tracing/sampling/rate_by_service_sampler.rb +65 -0
  646. data/lib/datadog/tracing/sampling/rate_limiter.rb +188 -0
  647. data/lib/datadog/tracing/sampling/rate_sampler.rb +72 -0
  648. data/lib/datadog/tracing/sampling/rule.rb +76 -0
  649. data/lib/datadog/tracing/sampling/rule_sampler.rb +132 -0
  650. data/lib/datadog/tracing/sampling/sampler.rb +44 -0
  651. data/lib/datadog/tracing/sampling/span/ext.rb +25 -0
  652. data/lib/datadog/tracing/sampling/span/matcher.rb +89 -0
  653. data/lib/datadog/tracing/sampling/span/rule.rb +82 -0
  654. data/lib/datadog/tracing/sampling/span/rule_parser.rb +104 -0
  655. data/lib/datadog/tracing/sampling/span/sampler.rb +75 -0
  656. data/lib/datadog/tracing/span.rb +216 -0
  657. data/lib/datadog/tracing/span_operation.rb +520 -0
  658. data/lib/datadog/tracing/sync_writer.rb +69 -0
  659. data/lib/datadog/tracing/trace_digest.rb +136 -0
  660. data/lib/datadog/tracing/trace_operation.rb +468 -0
  661. data/lib/datadog/tracing/trace_segment.rb +212 -0
  662. data/lib/datadog/tracing/tracer.rb +533 -0
  663. data/lib/datadog/tracing/utils.rb +50 -0
  664. data/lib/datadog/tracing/workers/trace_writer.rb +195 -0
  665. data/lib/datadog/tracing/workers.rb +125 -0
  666. data/lib/datadog/tracing/writer.rb +187 -0
  667. data/lib/datadog/tracing.rb +142 -0
  668. data/lib/ddtrace/auto_instrument.rb +14 -3
  669. data/lib/ddtrace/auto_instrument_base.rb +1 -0
  670. data/lib/ddtrace/profiling/preload.rb +2 -2
  671. data/lib/ddtrace/transport/ext.rb +41 -0
  672. data/lib/ddtrace/transport/http/adapters/net.rb +5 -3
  673. data/lib/ddtrace/transport/http/adapters/registry.rb +1 -0
  674. data/lib/ddtrace/transport/http/adapters/test.rb +2 -1
  675. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +4 -3
  676. data/lib/ddtrace/transport/http/api/endpoint.rb +1 -0
  677. data/lib/ddtrace/transport/http/api/fallbacks.rb +1 -0
  678. data/lib/ddtrace/transport/http/api/instance.rb +1 -0
  679. data/lib/ddtrace/transport/http/api/map.rb +2 -1
  680. data/lib/ddtrace/transport/http/api/spec.rb +1 -0
  681. data/lib/ddtrace/transport/http/api.rb +8 -14
  682. data/lib/ddtrace/transport/http/builder.rb +7 -6
  683. data/lib/ddtrace/transport/http/client.rb +5 -3
  684. data/lib/ddtrace/transport/http/env.rb +1 -0
  685. data/lib/ddtrace/transport/http/response.rb +36 -5
  686. data/lib/ddtrace/transport/http/statistics.rb +2 -1
  687. data/lib/ddtrace/transport/http/traces.rb +6 -3
  688. data/lib/ddtrace/transport/http.rb +39 -31
  689. data/lib/ddtrace/transport/io/client.rb +6 -3
  690. data/lib/ddtrace/transport/io/response.rb +2 -1
  691. data/lib/ddtrace/transport/io/traces.rb +5 -4
  692. data/lib/ddtrace/transport/io.rb +5 -4
  693. data/lib/ddtrace/transport/parcel.rb +2 -0
  694. data/lib/ddtrace/transport/request.rb +1 -0
  695. data/lib/ddtrace/transport/response.rb +1 -0
  696. data/lib/ddtrace/transport/serializable_trace.rb +118 -0
  697. data/lib/ddtrace/transport/statistics.rb +6 -4
  698. data/lib/ddtrace/transport/trace_formatter.rb +191 -0
  699. data/lib/ddtrace/transport/traces.rb +20 -8
  700. data/lib/ddtrace/version.rb +15 -13
  701. data/lib/ddtrace.rb +9 -48
  702. metadata +673 -497
  703. data/.editorconfig +0 -22
  704. data/.gitignore +0 -67
  705. data/.yardopts +0 -5
  706. data/CONTRIBUTING.md +0 -81
  707. data/ddtrace.gemspec +0 -56
  708. data/docs/DevelopmentGuide.md +0 -259
  709. data/docs/GettingStarted.md +0 -2626
  710. data/docs/ProfilingDevelopment.md +0 -107
  711. data/lib/datadog/ci/context_flush.rb +0 -29
  712. data/lib/datadog/contrib.rb +0 -71
  713. data/lib/ddtrace/analytics.rb +0 -39
  714. data/lib/ddtrace/buffer.rb +0 -340
  715. data/lib/ddtrace/chunker.rb +0 -35
  716. data/lib/ddtrace/configuration/agent_settings_resolver.rb +0 -309
  717. data/lib/ddtrace/configuration/base.rb +0 -82
  718. data/lib/ddtrace/configuration/components.rb +0 -292
  719. data/lib/ddtrace/configuration/dependency_resolver.rb +0 -25
  720. data/lib/ddtrace/configuration/option.rb +0 -65
  721. data/lib/ddtrace/configuration/option_definition.rb +0 -122
  722. data/lib/ddtrace/configuration/option_definition_set.rb +0 -19
  723. data/lib/ddtrace/configuration/option_set.rb +0 -7
  724. data/lib/ddtrace/configuration/options.rb +0 -112
  725. data/lib/ddtrace/configuration/pin_setup.rb +0 -32
  726. data/lib/ddtrace/configuration/settings.rb +0 -413
  727. data/lib/ddtrace/configuration.rb +0 -195
  728. data/lib/ddtrace/context.rb +0 -334
  729. data/lib/ddtrace/context_flush.rb +0 -82
  730. data/lib/ddtrace/context_provider.rb +0 -62
  731. data/lib/ddtrace/contrib/action_cable/configuration/settings.rb +0 -31
  732. data/lib/ddtrace/contrib/action_cable/event.rb +0 -67
  733. data/lib/ddtrace/contrib/action_cable/events/broadcast.rb +0 -50
  734. data/lib/ddtrace/contrib/action_cable/events/perform_action.rb +0 -56
  735. data/lib/ddtrace/contrib/action_cable/events/transmit.rb +0 -51
  736. data/lib/ddtrace/contrib/action_cable/events.rb +0 -34
  737. data/lib/ddtrace/contrib/action_cable/ext.rb +0 -27
  738. data/lib/ddtrace/contrib/action_cable/instrumentation.rb +0 -78
  739. data/lib/ddtrace/contrib/action_cable/integration.rb +0 -46
  740. data/lib/ddtrace/contrib/action_cable/patcher.rb +0 -29
  741. data/lib/ddtrace/contrib/action_mailer/configuration/settings.rb +0 -32
  742. data/lib/ddtrace/contrib/action_mailer/event.rb +0 -50
  743. data/lib/ddtrace/contrib/action_mailer/events/deliver.rb +0 -54
  744. data/lib/ddtrace/contrib/action_mailer/events/process.rb +0 -41
  745. data/lib/ddtrace/contrib/action_mailer/events.rb +0 -31
  746. data/lib/ddtrace/contrib/action_mailer/ext.rb +0 -32
  747. data/lib/ddtrace/contrib/action_mailer/integration.rb +0 -45
  748. data/lib/ddtrace/contrib/action_mailer/patcher.rb +0 -27
  749. data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +0 -157
  750. data/lib/ddtrace/contrib/action_pack/action_controller/patcher.rb +0 -26
  751. data/lib/ddtrace/contrib/action_pack/configuration/settings.rb +0 -33
  752. data/lib/ddtrace/contrib/action_pack/ext.rb +0 -20
  753. data/lib/ddtrace/contrib/action_pack/integration.rb +0 -46
  754. data/lib/ddtrace/contrib/action_pack/patcher.rb +0 -24
  755. data/lib/ddtrace/contrib/action_pack/utils.rb +0 -37
  756. data/lib/ddtrace/contrib/action_view/configuration/settings.rb +0 -32
  757. data/lib/ddtrace/contrib/action_view/event.rb +0 -36
  758. data/lib/ddtrace/contrib/action_view/events/render_partial.rb +0 -47
  759. data/lib/ddtrace/contrib/action_view/events/render_template.rb +0 -50
  760. data/lib/ddtrace/contrib/action_view/events.rb +0 -31
  761. data/lib/ddtrace/contrib/action_view/ext.rb +0 -21
  762. data/lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb +0 -75
  763. data/lib/ddtrace/contrib/action_view/instrumentation/template_renderer.rb +0 -168
  764. data/lib/ddtrace/contrib/action_view/integration.rb +0 -53
  765. data/lib/ddtrace/contrib/action_view/patcher.rb +0 -48
  766. data/lib/ddtrace/contrib/action_view/utils.rb +0 -33
  767. data/lib/ddtrace/contrib/active_job/configuration/settings.rb +0 -33
  768. data/lib/ddtrace/contrib/active_job/event.rb +0 -54
  769. data/lib/ddtrace/contrib/active_job/events/discard.rb +0 -46
  770. data/lib/ddtrace/contrib/active_job/events/enqueue.rb +0 -45
  771. data/lib/ddtrace/contrib/active_job/events/enqueue_at.rb +0 -45
  772. data/lib/ddtrace/contrib/active_job/events/enqueue_retry.rb +0 -47
  773. data/lib/ddtrace/contrib/active_job/events/perform.rb +0 -45
  774. data/lib/ddtrace/contrib/active_job/events/retry_stopped.rb +0 -46
  775. data/lib/ddtrace/contrib/active_job/events.rb +0 -39
  776. data/lib/ddtrace/contrib/active_job/ext.rb +0 -32
  777. data/lib/ddtrace/contrib/active_job/integration.rb +0 -46
  778. data/lib/ddtrace/contrib/active_job/log_injection.rb +0 -21
  779. data/lib/ddtrace/contrib/active_job/patcher.rb +0 -33
  780. data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +0 -31
  781. data/lib/ddtrace/contrib/active_model_serializers/event.rb +0 -69
  782. data/lib/ddtrace/contrib/active_model_serializers/events/render.rb +0 -33
  783. data/lib/ddtrace/contrib/active_model_serializers/events/serialize.rb +0 -36
  784. data/lib/ddtrace/contrib/active_model_serializers/events.rb +0 -31
  785. data/lib/ddtrace/contrib/active_model_serializers/ext.rb +0 -21
  786. data/lib/ddtrace/contrib/active_model_serializers/integration.rb +0 -41
  787. data/lib/ddtrace/contrib/active_model_serializers/patcher.rb +0 -30
  788. data/lib/ddtrace/contrib/active_record/configuration/makara_resolver.rb +0 -31
  789. data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +0 -135
  790. data/lib/ddtrace/contrib/active_record/configuration/settings.rb +0 -36
  791. data/lib/ddtrace/contrib/active_record/event.rb +0 -31
  792. data/lib/ddtrace/contrib/active_record/events/instantiation.rb +0 -61
  793. data/lib/ddtrace/contrib/active_record/events/sql.rb +0 -69
  794. data/lib/ddtrace/contrib/active_record/events.rb +0 -31
  795. data/lib/ddtrace/contrib/active_record/ext.rb +0 -25
  796. data/lib/ddtrace/contrib/active_record/integration.rb +0 -54
  797. data/lib/ddtrace/contrib/active_record/patcher.rb +0 -24
  798. data/lib/ddtrace/contrib/active_record/utils.rb +0 -124
  799. data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +0 -259
  800. data/lib/ddtrace/contrib/active_support/cache/patcher.rb +0 -70
  801. data/lib/ddtrace/contrib/active_support/cache/redis.rb +0 -44
  802. data/lib/ddtrace/contrib/active_support/configuration/settings.rb +0 -31
  803. data/lib/ddtrace/contrib/active_support/ext.rb +0 -28
  804. data/lib/ddtrace/contrib/active_support/integration.rb +0 -47
  805. data/lib/ddtrace/contrib/active_support/notifications/event.rb +0 -76
  806. data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +0 -68
  807. data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +0 -164
  808. data/lib/ddtrace/contrib/active_support/patcher.rb +0 -24
  809. data/lib/ddtrace/contrib/analytics.rb +0 -25
  810. data/lib/ddtrace/contrib/auto_instrument.rb +0 -48
  811. data/lib/ddtrace/contrib/aws/configuration/settings.rb +0 -31
  812. data/lib/ddtrace/contrib/aws/ext.rb +0 -24
  813. data/lib/ddtrace/contrib/aws/instrumentation.rb +0 -91
  814. data/lib/ddtrace/contrib/aws/integration.rb +0 -43
  815. data/lib/ddtrace/contrib/aws/parsed_context.rb +0 -57
  816. data/lib/ddtrace/contrib/aws/patcher.rb +0 -54
  817. data/lib/ddtrace/contrib/aws/services.rb +0 -119
  818. data/lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb +0 -21
  819. data/lib/ddtrace/contrib/concurrent_ruby/context_composite_executor_service.rb +0 -42
  820. data/lib/ddtrace/contrib/concurrent_ruby/ext.rb +0 -13
  821. data/lib/ddtrace/contrib/concurrent_ruby/future_patch.rb +0 -24
  822. data/lib/ddtrace/contrib/concurrent_ruby/integration.rb +0 -39
  823. data/lib/ddtrace/contrib/concurrent_ruby/patcher.rb +0 -30
  824. data/lib/ddtrace/contrib/configurable.rb +0 -103
  825. data/lib/ddtrace/contrib/configuration/resolver.rb +0 -82
  826. data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +0 -40
  827. data/lib/ddtrace/contrib/configuration/settings.rb +0 -56
  828. data/lib/ddtrace/contrib/dalli/configuration/settings.rb +0 -31
  829. data/lib/ddtrace/contrib/dalli/ext.rb +0 -21
  830. data/lib/ddtrace/contrib/dalli/instrumentation.rb +0 -55
  831. data/lib/ddtrace/contrib/dalli/integration.rb +0 -39
  832. data/lib/ddtrace/contrib/dalli/patcher.rb +0 -26
  833. data/lib/ddtrace/contrib/dalli/quantize.rb +0 -23
  834. data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +0 -33
  835. data/lib/ddtrace/contrib/delayed_job/ext.rb +0 -24
  836. data/lib/ddtrace/contrib/delayed_job/integration.rb +0 -39
  837. data/lib/ddtrace/contrib/delayed_job/patcher.rb +0 -29
  838. data/lib/ddtrace/contrib/delayed_job/plugin.rb +0 -85
  839. data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +0 -32
  840. data/lib/ddtrace/contrib/elasticsearch/ext.rb +0 -23
  841. data/lib/ddtrace/contrib/elasticsearch/integration.rb +0 -40
  842. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +0 -123
  843. data/lib/ddtrace/contrib/elasticsearch/quantize.rb +0 -84
  844. data/lib/ddtrace/contrib/ethon/configuration/settings.rb +0 -33
  845. data/lib/ddtrace/contrib/ethon/easy_patch.rb +0 -152
  846. data/lib/ddtrace/contrib/ethon/ext.rb +0 -20
  847. data/lib/ddtrace/contrib/ethon/integration.rb +0 -44
  848. data/lib/ddtrace/contrib/ethon/multi_patch.rb +0 -85
  849. data/lib/ddtrace/contrib/ethon/patcher.rb +0 -27
  850. data/lib/ddtrace/contrib/excon/configuration/settings.rb +0 -34
  851. data/lib/ddtrace/contrib/excon/ext.rb +0 -18
  852. data/lib/ddtrace/contrib/excon/integration.rb +0 -44
  853. data/lib/ddtrace/contrib/excon/middleware.rb +0 -164
  854. data/lib/ddtrace/contrib/excon/patcher.rb +0 -28
  855. data/lib/ddtrace/contrib/extensions.rb +0 -169
  856. data/lib/ddtrace/contrib/faraday/configuration/settings.rb +0 -39
  857. data/lib/ddtrace/contrib/faraday/connection.rb +0 -19
  858. data/lib/ddtrace/contrib/faraday/ext.rb +0 -18
  859. data/lib/ddtrace/contrib/faraday/integration.rb +0 -44
  860. data/lib/ddtrace/contrib/faraday/middleware.rb +0 -86
  861. data/lib/ddtrace/contrib/faraday/patcher.rb +0 -54
  862. data/lib/ddtrace/contrib/faraday/rack_builder.rb +0 -19
  863. data/lib/ddtrace/contrib/grape/configuration/settings.rb +0 -39
  864. data/lib/ddtrace/contrib/grape/endpoint.rb +0 -246
  865. data/lib/ddtrace/contrib/grape/ext.rb +0 -24
  866. data/lib/ddtrace/contrib/grape/instrumentation.rb +0 -34
  867. data/lib/ddtrace/contrib/grape/integration.rb +0 -40
  868. data/lib/ddtrace/contrib/grape/patcher.rb +0 -32
  869. data/lib/ddtrace/contrib/graphql/configuration/settings.rb +0 -33
  870. data/lib/ddtrace/contrib/graphql/ext.rb +0 -17
  871. data/lib/ddtrace/contrib/graphql/integration.rb +0 -40
  872. data/lib/ddtrace/contrib/graphql/patcher.rb +0 -61
  873. data/lib/ddtrace/contrib/grpc/configuration/settings.rb +0 -32
  874. data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +0 -59
  875. data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +0 -80
  876. data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +0 -79
  877. data/lib/ddtrace/contrib/grpc/ext.rb +0 -19
  878. data/lib/ddtrace/contrib/grpc/integration.rb +0 -39
  879. data/lib/ddtrace/contrib/grpc/intercept_with_datadog.rb +0 -50
  880. data/lib/ddtrace/contrib/grpc/patcher.rb +0 -34
  881. data/lib/ddtrace/contrib/http/circuit_breaker.rb +0 -38
  882. data/lib/ddtrace/contrib/http/configuration/settings.rb +0 -33
  883. data/lib/ddtrace/contrib/http/ext.rb +0 -18
  884. data/lib/ddtrace/contrib/http/instrumentation.rb +0 -180
  885. data/lib/ddtrace/contrib/http/integration.rb +0 -46
  886. data/lib/ddtrace/contrib/http/patcher.rb +0 -27
  887. data/lib/ddtrace/contrib/http_annotation_helper.rb +0 -11
  888. data/lib/ddtrace/contrib/httpclient/configuration/settings.rb +0 -33
  889. data/lib/ddtrace/contrib/httpclient/ext.rb +0 -18
  890. data/lib/ddtrace/contrib/httpclient/instrumentation.rb +0 -148
  891. data/lib/ddtrace/contrib/httpclient/integration.rb +0 -44
  892. data/lib/ddtrace/contrib/httpclient/patcher.rb +0 -39
  893. data/lib/ddtrace/contrib/httprb/configuration/settings.rb +0 -33
  894. data/lib/ddtrace/contrib/httprb/ext.rb +0 -18
  895. data/lib/ddtrace/contrib/httprb/instrumentation.rb +0 -158
  896. data/lib/ddtrace/contrib/httprb/integration.rb +0 -44
  897. data/lib/ddtrace/contrib/httprb/patcher.rb +0 -39
  898. data/lib/ddtrace/contrib/integration.rb +0 -17
  899. data/lib/ddtrace/contrib/kafka/configuration/settings.rb +0 -31
  900. data/lib/ddtrace/contrib/kafka/consumer_event.rb +0 -15
  901. data/lib/ddtrace/contrib/kafka/consumer_group_event.rb +0 -15
  902. data/lib/ddtrace/contrib/kafka/event.rb +0 -52
  903. data/lib/ddtrace/contrib/kafka/events/connection/request.rb +0 -35
  904. data/lib/ddtrace/contrib/kafka/events/consumer/process_batch.rb +0 -42
  905. data/lib/ddtrace/contrib/kafka/events/consumer/process_message.rb +0 -40
  906. data/lib/ddtrace/contrib/kafka/events/consumer_group/heartbeat.rb +0 -40
  907. data/lib/ddtrace/contrib/kafka/events/consumer_group/join_group.rb +0 -30
  908. data/lib/ddtrace/contrib/kafka/events/consumer_group/leave_group.rb +0 -30
  909. data/lib/ddtrace/contrib/kafka/events/consumer_group/sync_group.rb +0 -30
  910. data/lib/ddtrace/contrib/kafka/events/produce_operation/send_messages.rb +0 -33
  911. data/lib/ddtrace/contrib/kafka/events/producer/deliver_messages.rb +0 -36
  912. data/lib/ddtrace/contrib/kafka/events.rb +0 -45
  913. data/lib/ddtrace/contrib/kafka/ext.rb +0 -42
  914. data/lib/ddtrace/contrib/kafka/integration.rb +0 -40
  915. data/lib/ddtrace/contrib/kafka/patcher.rb +0 -27
  916. data/lib/ddtrace/contrib/lograge/configuration/settings.rb +0 -19
  917. data/lib/ddtrace/contrib/lograge/ext.rb +0 -11
  918. data/lib/ddtrace/contrib/lograge/instrumentation.rb +0 -39
  919. data/lib/ddtrace/contrib/lograge/integration.rb +0 -46
  920. data/lib/ddtrace/contrib/lograge/patcher.rb +0 -26
  921. data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +0 -34
  922. data/lib/ddtrace/contrib/mongodb/ext.rb +0 -24
  923. data/lib/ddtrace/contrib/mongodb/instrumentation.rb +0 -70
  924. data/lib/ddtrace/contrib/mongodb/integration.rb +0 -44
  925. data/lib/ddtrace/contrib/mongodb/parsers.rb +0 -69
  926. data/lib/ddtrace/contrib/mongodb/patcher.rb +0 -32
  927. data/lib/ddtrace/contrib/mongodb/subscribers.rb +0 -112
  928. data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +0 -31
  929. data/lib/ddtrace/contrib/mysql2/ext.rb +0 -19
  930. data/lib/ddtrace/contrib/mysql2/instrumentation.rb +0 -65
  931. data/lib/ddtrace/contrib/mysql2/integration.rb +0 -39
  932. data/lib/ddtrace/contrib/mysql2/patcher.rb +0 -28
  933. data/lib/ddtrace/contrib/patchable.rb +0 -71
  934. data/lib/ddtrace/contrib/patcher.rb +0 -66
  935. data/lib/ddtrace/contrib/presto/configuration/settings.rb +0 -31
  936. data/lib/ddtrace/contrib/presto/ext.rb +0 -29
  937. data/lib/ddtrace/contrib/presto/instrumentation.rb +0 -111
  938. data/lib/ddtrace/contrib/presto/integration.rb +0 -39
  939. data/lib/ddtrace/contrib/presto/patcher.rb +0 -34
  940. data/lib/ddtrace/contrib/qless/configuration/settings.rb +0 -36
  941. data/lib/ddtrace/contrib/qless/ext.rb +0 -21
  942. data/lib/ddtrace/contrib/qless/integration.rb +0 -39
  943. data/lib/ddtrace/contrib/qless/patcher.rb +0 -35
  944. data/lib/ddtrace/contrib/qless/qless_job.rb +0 -74
  945. data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +0 -34
  946. data/lib/ddtrace/contrib/que/configuration/settings.rb +0 -44
  947. data/lib/ddtrace/contrib/que/ext.rb +0 -31
  948. data/lib/ddtrace/contrib/que/integration.rb +0 -43
  949. data/lib/ddtrace/contrib/que/patcher.rb +0 -25
  950. data/lib/ddtrace/contrib/que/tracer.rb +0 -58
  951. data/lib/ddtrace/contrib/racecar/configuration/settings.rb +0 -31
  952. data/lib/ddtrace/contrib/racecar/event.rb +0 -77
  953. data/lib/ddtrace/contrib/racecar/events/batch.rb +0 -28
  954. data/lib/ddtrace/contrib/racecar/events/consume.rb +0 -28
  955. data/lib/ddtrace/contrib/racecar/events/message.rb +0 -28
  956. data/lib/ddtrace/contrib/racecar/events.rb +0 -33
  957. data/lib/ddtrace/contrib/racecar/ext.rb +0 -26
  958. data/lib/ddtrace/contrib/racecar/integration.rb +0 -40
  959. data/lib/ddtrace/contrib/racecar/patcher.rb +0 -27
  960. data/lib/ddtrace/contrib/rack/configuration/settings.rb +0 -47
  961. data/lib/ddtrace/contrib/rack/ext.rb +0 -22
  962. data/lib/ddtrace/contrib/rack/integration.rb +0 -46
  963. data/lib/ddtrace/contrib/rack/middlewares.rb +0 -288
  964. data/lib/ddtrace/contrib/rack/patcher.rb +0 -106
  965. data/lib/ddtrace/contrib/rack/request_queue.rb +0 -45
  966. data/lib/ddtrace/contrib/rails/auto_instrument_railtie.rb +0 -10
  967. data/lib/ddtrace/contrib/rails/configuration/settings.rb +0 -101
  968. data/lib/ddtrace/contrib/rails/ext.rb +0 -18
  969. data/lib/ddtrace/contrib/rails/framework.rb +0 -172
  970. data/lib/ddtrace/contrib/rails/integration.rb +0 -45
  971. data/lib/ddtrace/contrib/rails/log_injection.rb +0 -42
  972. data/lib/ddtrace/contrib/rails/middlewares.rb +0 -44
  973. data/lib/ddtrace/contrib/rails/patcher.rb +0 -119
  974. data/lib/ddtrace/contrib/rails/railtie.rb +0 -18
  975. data/lib/ddtrace/contrib/rails/utils.rb +0 -25
  976. data/lib/ddtrace/contrib/rake/configuration/settings.rb +0 -32
  977. data/lib/ddtrace/contrib/rake/ext.rb +0 -22
  978. data/lib/ddtrace/contrib/rake/instrumentation.rb +0 -91
  979. data/lib/ddtrace/contrib/rake/integration.rb +0 -39
  980. data/lib/ddtrace/contrib/rake/patcher.rb +0 -31
  981. data/lib/ddtrace/contrib/redis/configuration/resolver.rb +0 -46
  982. data/lib/ddtrace/contrib/redis/configuration/settings.rb +0 -36
  983. data/lib/ddtrace/contrib/redis/ext.rb +0 -23
  984. data/lib/ddtrace/contrib/redis/instrumentation.rb +0 -90
  985. data/lib/ddtrace/contrib/redis/integration.rb +0 -43
  986. data/lib/ddtrace/contrib/redis/patcher.rb +0 -33
  987. data/lib/ddtrace/contrib/redis/quantize.rb +0 -76
  988. data/lib/ddtrace/contrib/redis/tags.rb +0 -47
  989. data/lib/ddtrace/contrib/redis/vendor/resolver.rb +0 -159
  990. data/lib/ddtrace/contrib/registerable.rb +0 -33
  991. data/lib/ddtrace/contrib/registry.rb +0 -43
  992. data/lib/ddtrace/contrib/resque/configuration/settings.rb +0 -49
  993. data/lib/ddtrace/contrib/resque/ext.rb +0 -18
  994. data/lib/ddtrace/contrib/resque/integration.rb +0 -44
  995. data/lib/ddtrace/contrib/resque/patcher.rb +0 -30
  996. data/lib/ddtrace/contrib/resque/resque_job.rb +0 -104
  997. data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +0 -32
  998. data/lib/ddtrace/contrib/rest_client/ext.rb +0 -18
  999. data/lib/ddtrace/contrib/rest_client/integration.rb +0 -39
  1000. data/lib/ddtrace/contrib/rest_client/patcher.rb +0 -25
  1001. data/lib/ddtrace/contrib/rest_client/request_patch.rb +0 -92
  1002. data/lib/ddtrace/contrib/semantic_logger/configuration/settings.rb +0 -19
  1003. data/lib/ddtrace/contrib/semantic_logger/ext.rb +0 -11
  1004. data/lib/ddtrace/contrib/semantic_logger/instrumentation.rb +0 -43
  1005. data/lib/ddtrace/contrib/semantic_logger/integration.rb +0 -48
  1006. data/lib/ddtrace/contrib/semantic_logger/patcher.rb +0 -26
  1007. data/lib/ddtrace/contrib/sequel/configuration/settings.rb +0 -29
  1008. data/lib/ddtrace/contrib/sequel/database.rb +0 -64
  1009. data/lib/ddtrace/contrib/sequel/dataset.rb +0 -64
  1010. data/lib/ddtrace/contrib/sequel/ext.rb +0 -20
  1011. data/lib/ddtrace/contrib/sequel/integration.rb +0 -39
  1012. data/lib/ddtrace/contrib/sequel/patcher.rb +0 -34
  1013. data/lib/ddtrace/contrib/sequel/utils.rb +0 -75
  1014. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +0 -32
  1015. data/lib/ddtrace/contrib/shoryuken/ext.rb +0 -22
  1016. data/lib/ddtrace/contrib/shoryuken/integration.rb +0 -40
  1017. data/lib/ddtrace/contrib/shoryuken/patcher.rb +0 -25
  1018. data/lib/ddtrace/contrib/shoryuken/tracer.rb +0 -56
  1019. data/lib/ddtrace/contrib/sidekiq/client_tracer.rb +0 -44
  1020. data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +0 -38
  1021. data/lib/ddtrace/contrib/sidekiq/ext.rb +0 -31
  1022. data/lib/ddtrace/contrib/sidekiq/integration.rb +0 -49
  1023. data/lib/ddtrace/contrib/sidekiq/patcher.rb +0 -68
  1024. data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/heartbeat.rb +0 -30
  1025. data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/job_fetch.rb +0 -30
  1026. data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/scheduled_push.rb +0 -29
  1027. data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +0 -66
  1028. data/lib/ddtrace/contrib/sidekiq/tracing.rb +0 -45
  1029. data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +0 -40
  1030. data/lib/ddtrace/contrib/sinatra/env.rb +0 -59
  1031. data/lib/ddtrace/contrib/sinatra/ext.rb +0 -28
  1032. data/lib/ddtrace/contrib/sinatra/headers.rb +0 -30
  1033. data/lib/ddtrace/contrib/sinatra/integration.rb +0 -39
  1034. data/lib/ddtrace/contrib/sinatra/patcher.rb +0 -30
  1035. data/lib/ddtrace/contrib/sinatra/tracer.rb +0 -150
  1036. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +0 -112
  1037. data/lib/ddtrace/contrib/sneakers/configuration/settings.rb +0 -34
  1038. data/lib/ddtrace/contrib/sneakers/ext.rb +0 -23
  1039. data/lib/ddtrace/contrib/sneakers/integration.rb +0 -42
  1040. data/lib/ddtrace/contrib/sneakers/patcher.rb +0 -25
  1041. data/lib/ddtrace/contrib/sneakers/tracer.rb +0 -54
  1042. data/lib/ddtrace/contrib/status_code_matcher.rb +0 -70
  1043. data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +0 -31
  1044. data/lib/ddtrace/contrib/sucker_punch/exception_handler.rb +0 -25
  1045. data/lib/ddtrace/contrib/sucker_punch/ext.rb +0 -22
  1046. data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +0 -89
  1047. data/lib/ddtrace/contrib/sucker_punch/integration.rb +0 -39
  1048. data/lib/ddtrace/contrib/sucker_punch/patcher.rb +0 -44
  1049. data/lib/ddtrace/correlation.rb +0 -40
  1050. data/lib/ddtrace/diagnostics/environment_logger.rb +0 -280
  1051. data/lib/ddtrace/diagnostics/health.rb +0 -34
  1052. data/lib/ddtrace/distributed_tracing/headers/b3.rb +0 -45
  1053. data/lib/ddtrace/distributed_tracing/headers/b3_single.rb +0 -57
  1054. data/lib/ddtrace/distributed_tracing/headers/datadog.rb +0 -43
  1055. data/lib/ddtrace/distributed_tracing/headers/headers.rb +0 -72
  1056. data/lib/ddtrace/distributed_tracing/headers/helpers.rb +0 -44
  1057. data/lib/ddtrace/encoding.rb +0 -72
  1058. data/lib/ddtrace/error.rb +0 -97
  1059. data/lib/ddtrace/event.rb +0 -53
  1060. data/lib/ddtrace/ext/analytics.rb +0 -13
  1061. data/lib/ddtrace/ext/app_types.rb +0 -12
  1062. data/lib/ddtrace/ext/correlation.rb +0 -12
  1063. data/lib/ddtrace/ext/diagnostics.rb +0 -37
  1064. data/lib/ddtrace/ext/distributed.rb +0 -40
  1065. data/lib/ddtrace/ext/environment.rb +0 -24
  1066. data/lib/ddtrace/ext/errors.rb +0 -11
  1067. data/lib/ddtrace/ext/forced_tracing.rb +0 -26
  1068. data/lib/ddtrace/ext/git.rb +0 -32
  1069. data/lib/ddtrace/ext/http.rb +0 -47
  1070. data/lib/ddtrace/ext/integration.rb +0 -9
  1071. data/lib/ddtrace/ext/manual_tracing.rb +0 -10
  1072. data/lib/ddtrace/ext/metrics.rb +0 -16
  1073. data/lib/ddtrace/ext/net.rb +0 -11
  1074. data/lib/ddtrace/ext/priority.rb +0 -19
  1075. data/lib/ddtrace/ext/profiling.rb +0 -53
  1076. data/lib/ddtrace/ext/runtime.rb +0 -25
  1077. data/lib/ddtrace/ext/sampling.rb +0 -17
  1078. data/lib/ddtrace/ext/sql.rb +0 -9
  1079. data/lib/ddtrace/ext/test.rb +0 -9
  1080. data/lib/ddtrace/ext/transport.rb +0 -32
  1081. data/lib/ddtrace/forced_tracing.rb +0 -39
  1082. data/lib/ddtrace/logger.rb +0 -41
  1083. data/lib/ddtrace/metrics.rb +0 -282
  1084. data/lib/ddtrace/opentelemetry/extensions.rb +0 -14
  1085. data/lib/ddtrace/opentelemetry/span.rb +0 -34
  1086. data/lib/ddtrace/opentracer/binary_propagator.rb +0 -25
  1087. data/lib/ddtrace/opentracer/carrier.rb +0 -7
  1088. data/lib/ddtrace/opentracer/distributed_headers.rb +0 -56
  1089. data/lib/ddtrace/opentracer/global_tracer.rb +0 -16
  1090. data/lib/ddtrace/opentracer/propagator.rb +0 -23
  1091. data/lib/ddtrace/opentracer/rack_propagator.rb +0 -61
  1092. data/lib/ddtrace/opentracer/scope.rb +0 -16
  1093. data/lib/ddtrace/opentracer/scope_manager.rb +0 -7
  1094. data/lib/ddtrace/opentracer/span.rb +0 -95
  1095. data/lib/ddtrace/opentracer/span_context.rb +0 -15
  1096. data/lib/ddtrace/opentracer/span_context_factory.rb +0 -24
  1097. data/lib/ddtrace/opentracer/text_map_propagator.rb +0 -76
  1098. data/lib/ddtrace/opentracer/thread_local_scope.rb +0 -32
  1099. data/lib/ddtrace/opentracer/thread_local_scope_manager.rb +0 -41
  1100. data/lib/ddtrace/opentracer/tracer.rb +0 -209
  1101. data/lib/ddtrace/opentracer.rb +0 -22
  1102. data/lib/ddtrace/patcher.rb +0 -69
  1103. data/lib/ddtrace/pin.rb +0 -86
  1104. data/lib/ddtrace/pipeline/span_filter.rb +0 -39
  1105. data/lib/ddtrace/pipeline/span_processor.rb +0 -21
  1106. data/lib/ddtrace/pipeline.rb +0 -47
  1107. data/lib/ddtrace/profiling/backtrace_location.rb +0 -33
  1108. data/lib/ddtrace/profiling/buffer.rb +0 -42
  1109. data/lib/ddtrace/profiling/collectors/stack.rb +0 -297
  1110. data/lib/ddtrace/profiling/encoding/profile.rb +0 -46
  1111. data/lib/ddtrace/profiling/event.rb +0 -14
  1112. data/lib/ddtrace/profiling/events/stack.rb +0 -81
  1113. data/lib/ddtrace/profiling/exporter.rb +0 -24
  1114. data/lib/ddtrace/profiling/ext/forking.rb +0 -98
  1115. data/lib/ddtrace/profiling/flush.rb +0 -44
  1116. data/lib/ddtrace/profiling/native_extension.rb +0 -40
  1117. data/lib/ddtrace/profiling/pprof/builder.rb +0 -126
  1118. data/lib/ddtrace/profiling/pprof/converter.rb +0 -103
  1119. data/lib/ddtrace/profiling/pprof/message_set.rb +0 -15
  1120. data/lib/ddtrace/profiling/pprof/payload.rb +0 -19
  1121. data/lib/ddtrace/profiling/pprof/pprof_pb.rb +0 -82
  1122. data/lib/ddtrace/profiling/pprof/stack_sample.rb +0 -140
  1123. data/lib/ddtrace/profiling/pprof/string_table.rb +0 -11
  1124. data/lib/ddtrace/profiling/pprof/template.rb +0 -119
  1125. data/lib/ddtrace/profiling/profiler.rb +0 -31
  1126. data/lib/ddtrace/profiling/recorder.rb +0 -96
  1127. data/lib/ddtrace/profiling/scheduler.rb +0 -150
  1128. data/lib/ddtrace/profiling/tasks/setup.rb +0 -90
  1129. data/lib/ddtrace/profiling/trace_identifiers/ddtrace.rb +0 -42
  1130. data/lib/ddtrace/profiling/trace_identifiers/helper.rb +0 -46
  1131. data/lib/ddtrace/profiling/transport/client.rb +0 -15
  1132. data/lib/ddtrace/profiling/transport/http/api/endpoint.rb +0 -94
  1133. data/lib/ddtrace/profiling/transport/http/api/instance.rb +0 -37
  1134. data/lib/ddtrace/profiling/transport/http/api/spec.rb +0 -41
  1135. data/lib/ddtrace/profiling/transport/http/api.rb +0 -44
  1136. data/lib/ddtrace/profiling/transport/http/builder.rb +0 -29
  1137. data/lib/ddtrace/profiling/transport/http/client.rb +0 -34
  1138. data/lib/ddtrace/profiling/transport/http/response.rb +0 -22
  1139. data/lib/ddtrace/profiling/transport/http.rb +0 -111
  1140. data/lib/ddtrace/profiling/transport/io/client.rb +0 -28
  1141. data/lib/ddtrace/profiling/transport/io/response.rb +0 -17
  1142. data/lib/ddtrace/profiling/transport/io.rb +0 -31
  1143. data/lib/ddtrace/profiling/transport/parcel.rb +0 -18
  1144. data/lib/ddtrace/profiling/transport/request.rb +0 -16
  1145. data/lib/ddtrace/profiling/transport/response.rb +0 -9
  1146. data/lib/ddtrace/profiling.rb +0 -149
  1147. data/lib/ddtrace/propagation/grpc_propagator.rb +0 -75
  1148. data/lib/ddtrace/propagation/http_propagator.rb +0 -91
  1149. data/lib/ddtrace/quantization/hash.rb +0 -104
  1150. data/lib/ddtrace/quantization/http.rb +0 -90
  1151. data/lib/ddtrace/runtime/metrics.rb +0 -135
  1152. data/lib/ddtrace/sampler.rb +0 -303
  1153. data/lib/ddtrace/sampling/matcher.rb +0 -58
  1154. data/lib/ddtrace/sampling/rate_limiter.rb +0 -177
  1155. data/lib/ddtrace/sampling/rule.rb +0 -62
  1156. data/lib/ddtrace/sampling/rule_sampler.rb +0 -133
  1157. data/lib/ddtrace/sampling.rb +0 -3
  1158. data/lib/ddtrace/span.rb +0 -445
  1159. data/lib/ddtrace/sync_writer.rb +0 -69
  1160. data/lib/ddtrace/tasks/exec.rb +0 -47
  1161. data/lib/ddtrace/tasks/help.rb +0 -15
  1162. data/lib/ddtrace/tracer.rb +0 -449
  1163. data/lib/ddtrace/utils/compression.rb +0 -28
  1164. data/lib/ddtrace/utils/database.rb +0 -26
  1165. data/lib/ddtrace/utils/forking.rb +0 -53
  1166. data/lib/ddtrace/utils/object_set.rb +0 -40
  1167. data/lib/ddtrace/utils/only_once.rb +0 -41
  1168. data/lib/ddtrace/utils/sequence.rb +0 -18
  1169. data/lib/ddtrace/utils/string_table.rb +0 -46
  1170. data/lib/ddtrace/utils/time.rb +0 -51
  1171. data/lib/ddtrace/utils.rb +0 -80
  1172. data/lib/ddtrace/vendor/active_record/connection_specification.rb +0 -302
  1173. data/lib/ddtrace/vendor/multipart-post/multipart/post/composite_read_io.rb +0 -117
  1174. data/lib/ddtrace/vendor/multipart-post/multipart/post/multipartable.rb +0 -58
  1175. data/lib/ddtrace/vendor/multipart-post/multipart/post/parts.rb +0 -136
  1176. data/lib/ddtrace/vendor/multipart-post/multipart/post/version.rb +0 -10
  1177. data/lib/ddtrace/vendor/multipart-post/multipart/post.rb +0 -9
  1178. data/lib/ddtrace/vendor/multipart-post/multipart.rb +0 -13
  1179. data/lib/ddtrace/vendor/multipart-post/net/http/post/multipart.rb +0 -33
  1180. data/lib/ddtrace/worker.rb +0 -21
  1181. data/lib/ddtrace/workers/async.rb +0 -175
  1182. data/lib/ddtrace/workers/interval_loop.rb +0 -116
  1183. data/lib/ddtrace/workers/polling.rb +0 -56
  1184. data/lib/ddtrace/workers/queue.rb +0 -41
  1185. data/lib/ddtrace/workers/runtime_metrics.rb +0 -65
  1186. data/lib/ddtrace/workers/trace_writer.rb +0 -200
  1187. data/lib/ddtrace/workers.rb +0 -123
  1188. data/lib/ddtrace/writer.rb +0 -200
  1189. /data/lib/{ddtrace → datadog/core}/vendor/multipart-post/LICENSE +0 -0
  1190. /data/lib/{ddtrace → datadog}/profiling/pprof/pprof.proto +0 -0
  1191. /data/lib/{ddtrace/vendor/active_record → datadog/tracing/contrib/active_record/vendor}/MIT-LICENSE +0 -0
  1192. /data/lib/{ddtrace → datadog/tracing}/contrib/redis/vendor/LICENSE +0 -0
@@ -0,0 +1,95 @@
1
+ # typed: true
2
+
3
+ module Datadog
4
+ module Tracing
5
+ module Configuration
6
+ # Constants for configuration settings
7
+ # e.g. Env vars, default values, enums, etc...
8
+ module Ext
9
+ ENV_ENABLED = 'DD_TRACE_ENABLED'.freeze
10
+
11
+ # @public_api
12
+ module Analytics
13
+ ENV_TRACE_ANALYTICS_ENABLED = 'DD_TRACE_ANALYTICS_ENABLED'.freeze
14
+ end
15
+
16
+ # @public_api
17
+ module Correlation
18
+ ENV_LOGS_INJECTION_ENABLED = 'DD_LOGS_INJECTION'.freeze
19
+ end
20
+
21
+ # @public_api
22
+ module Distributed
23
+ # Custom Datadog format
24
+ PROPAGATION_STYLE_DATADOG = 'Datadog'.freeze
25
+
26
+ PROPAGATION_STYLE_B3_MULTI_HEADER = 'b3multi'.freeze
27
+ # @deprecated Use `b3multi` instead.
28
+ PROPAGATION_STYLE_B3 = 'B3'.freeze
29
+
30
+ PROPAGATION_STYLE_B3_SINGLE_HEADER = 'b3'.freeze
31
+ # @deprecated Use `b3` instead.
32
+ PROPAGATION_STYLE_B3_SINGLE_HEADER_OLD = 'B3 single header'.freeze
33
+
34
+ # W3C Trace Context
35
+ PROPAGATION_STYLE_TRACE_CONTEXT = 'tracecontext'.freeze
36
+
37
+ # Sets both extract and inject propagation style tho the provided value.
38
+ # Has lower precedence than `DD_TRACE_PROPAGATION_STYLE_INJECT` or
39
+ # `DD_TRACE_PROPAGATION_STYLE_EXTRACT`.
40
+ ENV_PROPAGATION_STYLE = 'DD_TRACE_PROPAGATION_STYLE'.freeze
41
+
42
+ ENV_PROPAGATION_STYLE_INJECT = 'DD_TRACE_PROPAGATION_STYLE_INJECT'.freeze
43
+ # @deprecated Use `DD_TRACE_PROPAGATION_STYLE_INJECT` instead.
44
+ ENV_PROPAGATION_STYLE_INJECT_OLD = 'DD_PROPAGATION_STYLE_INJECT'.freeze
45
+
46
+ ENV_PROPAGATION_STYLE_EXTRACT = 'DD_TRACE_PROPAGATION_STYLE_EXTRACT'.freeze
47
+ # @deprecated Use `DD_TRACE_PROPAGATION_STYLE_EXTRACT` instead.
48
+ ENV_PROPAGATION_STYLE_EXTRACT_OLD = 'DD_PROPAGATION_STYLE_EXTRACT'.freeze
49
+
50
+ # A no-op propagator. Compatible with OpenTelemetry's `none` propagator.
51
+ # @see https://opentelemetry.io/docs/concepts/sdk-configuration/general-sdk-configuration/#otel_propagators
52
+ PROPAGATION_STYLE_NONE = 'none'.freeze
53
+
54
+ ENV_X_DATADOG_TAGS_MAX_LENGTH = 'DD_TRACE_X_DATADOG_TAGS_MAX_LENGTH'.freeze
55
+ end
56
+
57
+ # @public_api
58
+ module NET
59
+ ENV_REPORT_HOSTNAME = 'DD_TRACE_REPORT_HOSTNAME'.freeze
60
+ end
61
+
62
+ # @public_api
63
+ module Sampling
64
+ ENV_SAMPLE_RATE = 'DD_TRACE_SAMPLE_RATE'.freeze
65
+ ENV_RATE_LIMIT = 'DD_TRACE_RATE_LIMIT'.freeze
66
+
67
+ # @public_api
68
+ module Span
69
+ ENV_SPAN_SAMPLING_RULES = 'DD_SPAN_SAMPLING_RULES'.freeze
70
+ ENV_SPAN_SAMPLING_RULES_FILE = 'DD_SPAN_SAMPLING_RULES_FILE'.freeze
71
+ end
72
+ end
73
+
74
+ # @public_api
75
+ module Test
76
+ ENV_MODE_ENABLED = 'DD_TRACE_TEST_MODE_ENABLED'.freeze
77
+ end
78
+
79
+ # @public_api
80
+ module Transport
81
+ ENV_DEFAULT_HOST = 'DD_AGENT_HOST'.freeze
82
+ ENV_DEFAULT_PORT = 'DD_TRACE_AGENT_PORT'.freeze
83
+ ENV_DEFAULT_URL = 'DD_TRACE_AGENT_URL'.freeze
84
+ end
85
+
86
+ # @public_api
87
+ module ClientIp
88
+ ENV_ENABLED = 'DD_TRACE_CLIENT_IP_ENABLED'.freeze
89
+ ENV_DISABLED = 'DD_TRACE_CLIENT_IP_HEADER_DISABLED'.freeze # TODO: deprecated, remove later
90
+ ENV_HEADER_NAME = 'DD_TRACE_CLIENT_IP_HEADER'.freeze
91
+ end
92
+ end
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,433 @@
1
+ # typed: false
2
+
3
+ require_relative '../../tracing/configuration/ext'
4
+
5
+ module Datadog
6
+ module Tracing
7
+ module Configuration
8
+ # Configuration settings for tracing.
9
+ # @public_api
10
+ # rubocop:disable Metrics/AbcSize
11
+ # rubocop:disable Metrics/BlockLength
12
+ # rubocop:disable Metrics/CyclomaticComplexity
13
+ # rubocop:disable Metrics/MethodLength
14
+ # rubocop:disable Layout/LineLength
15
+ module Settings
16
+ def self.extended(base)
17
+ base.class_eval do
18
+ # Tracer specific configurations.
19
+ # @public_api
20
+ settings :tracing do
21
+ # Legacy [App Analytics](https://docs.datadoghq.com/tracing/legacy_app_analytics/) configuration.
22
+ #
23
+ # @configure_with {Datadog::Tracing}
24
+ # @deprecated Use [Trace Retention and Ingestion](https://docs.datadoghq.com/tracing/trace_retention_and_ingestion/)
25
+ # controls.
26
+ # @public_api
27
+ settings :analytics do
28
+ # @default `DD_TRACE_ANALYTICS_ENABLED` environment variable, otherwise `nil`
29
+ # @return [Boolean,nil]
30
+ option :enabled do |o|
31
+ o.default { env_to_bool(Tracing::Configuration::Ext::Analytics::ENV_TRACE_ANALYTICS_ENABLED, nil) }
32
+ o.lazy
33
+ end
34
+ end
35
+
36
+ # [Distributed Tracing](https://docs.datadoghq.com/tracing/setup_overview/setup/ruby/#distributed-tracing) propagation
37
+ # style configuration.
38
+ #
39
+ # The supported formats are:
40
+ # * `Datadog`: Datadog propagation format, described by [Distributed Tracing](https://docs.datadoghq.com/tracing/setup_overview/setup/ruby/#distributed-tracing).
41
+ # * `b3multi`: B3 Propagation using multiple headers, described by [openzipkin/b3-propagation](https://github.com/openzipkin/b3-propagation#multiple-headers).
42
+ # * `b3`: B3 Propagation using a single header, described by [openzipkin/b3-propagation](https://github.com/openzipkin/b3-propagation#single-header).
43
+ #
44
+ # @public_api
45
+ settings :distributed_tracing do
46
+ # An ordered list of what data propagation styles the tracer will use to extract distributed tracing propagation
47
+ # data from incoming requests and messages.
48
+ #
49
+ # The tracer will try to find distributed headers in the order they are present in the list provided to this option.
50
+ # The first format to have valid data present will be used.
51
+ #
52
+ # @default `DD_TRACE_PROPAGATION_STYLE_EXTRACT` environment variable (comma-separated list),
53
+ # otherwise `['Datadog','b3multi','b3']`.
54
+ # @return [Array<String>]
55
+ option :propagation_extract_style do |o|
56
+ o.default do
57
+ # DEV-2.0: Change default value to `tracecontext, Datadog`.
58
+ # Look for all headers by default
59
+ env_to_list(
60
+ [
61
+ Tracing::Configuration::Ext::Distributed::ENV_PROPAGATION_STYLE_EXTRACT,
62
+ Tracing::Configuration::Ext::Distributed::ENV_PROPAGATION_STYLE_EXTRACT_OLD
63
+ ],
64
+ [
65
+ Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_DATADOG,
66
+ Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3_MULTI_HEADER,
67
+ Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3_SINGLE_HEADER
68
+ ],
69
+ comma_separated_only: true
70
+ )
71
+ end
72
+
73
+ o.on_set do |styles|
74
+ # Modernize B3 options
75
+ # DEV-2.0: Can be removed with the removal of deprecated B3 constants.
76
+ styles.map! do |style|
77
+ case style
78
+ when Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3
79
+ Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3_MULTI_HEADER
80
+ when Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3_SINGLE_HEADER_OLD
81
+ Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3_SINGLE_HEADER
82
+ else
83
+ style
84
+ end
85
+ end
86
+ end
87
+
88
+ o.lazy
89
+ end
90
+
91
+ # The data propagation styles the tracer will use to inject distributed tracing propagation
92
+ # data into outgoing requests and messages.
93
+ #
94
+ # The tracer will inject data from all styles specified in this option.
95
+ #
96
+ # @default `DD_TRACE_PROPAGATION_STYLE_INJECT` environment variable (comma-separated list), otherwise `['Datadog']`.
97
+ # @return [Array<String>]
98
+ option :propagation_inject_style do |o|
99
+ o.default do
100
+ # DEV-2.0: Change default value to `tracecontext, Datadog`.
101
+ env_to_list(
102
+ [
103
+ Tracing::Configuration::Ext::Distributed::ENV_PROPAGATION_STYLE_INJECT,
104
+ Tracing::Configuration::Ext::Distributed::ENV_PROPAGATION_STYLE_INJECT_OLD
105
+ ],
106
+ [Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_DATADOG],
107
+ comma_separated_only: true # Only inject Datadog headers by default
108
+ )
109
+ end
110
+
111
+ o.on_set do |styles|
112
+ # Modernize B3 options
113
+ # DEV-2.0: Can be removed with the removal of deprecated B3 constants.
114
+ styles.map! do |style|
115
+ case style
116
+ when Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3
117
+ Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3_MULTI_HEADER
118
+ when Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3_SINGLE_HEADER_OLD
119
+ Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3_SINGLE_HEADER
120
+ else
121
+ style
122
+ end
123
+ end
124
+ end
125
+
126
+ o.lazy
127
+ end
128
+
129
+ # An ordered list of what data propagation styles the tracer will use to extract distributed tracing propagation
130
+ # data from incoming requests and inject into outgoing requests.
131
+ #
132
+ # This configuration is the equivalent of configuring both {propagation_extract_style}
133
+ # {propagation_inject_style} to value set to {propagation_style}.
134
+ #
135
+ # @default `DD_TRACE_PROPAGATION_STYLE` environment variable (comma-separated list).
136
+ # @return [Array<String>]
137
+ option :propagation_style do |o|
138
+ o.default do
139
+ env_to_list(Configuration::Ext::Distributed::ENV_PROPAGATION_STYLE, nil, comma_separated_only: true)
140
+ end
141
+
142
+ o.on_set do |styles|
143
+ next unless styles
144
+
145
+ # Modernize B3 options
146
+ # DEV-2.0: Can be removed with the removal of deprecated B3 constants.
147
+ styles.map! do |style|
148
+ case style
149
+ when Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3
150
+ Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3_MULTI_HEADER
151
+ when Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3_SINGLE_HEADER_OLD
152
+ Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3_SINGLE_HEADER
153
+ else
154
+ style
155
+ end
156
+ end
157
+
158
+ set_option(:propagation_extract_style, styles)
159
+ set_option(:propagation_inject_style, styles)
160
+ end
161
+
162
+ o.lazy
163
+ end
164
+ end
165
+
166
+ # Enable trace collection and span generation.
167
+ #
168
+ # You can use this option to disable tracing without having to
169
+ # remove the library as a whole.
170
+ #
171
+ # @default `DD_TRACE_ENABLED` environment variable, otherwise `true`
172
+ # @return [Boolean]
173
+ option :enabled do |o|
174
+ o.default { env_to_bool(Tracing::Configuration::Ext::ENV_ENABLED, true) }
175
+ o.lazy
176
+ end
177
+
178
+ # A custom tracer instance.
179
+ #
180
+ # It must respect the contract of {Datadog::Tracing::Tracer}.
181
+ # It's recommended to delegate methods to {Datadog::Tracing::Tracer} to ease the implementation
182
+ # of a custom tracer.
183
+ #
184
+ # This option will not return the live tracer instance: it only holds a custom tracing instance, if any.
185
+ #
186
+ # For internal use only.
187
+ #
188
+ # @default `nil`
189
+ # @return [Object,nil]
190
+ option :instance
191
+
192
+ # Automatic correlation between tracing and logging.
193
+ # @see https://docs.datadoghq.com/tracing/setup_overview/setup/ruby/#trace-correlation
194
+ # @return [Boolean]
195
+ option :log_injection do |o|
196
+ o.default { env_to_bool(Tracing::Configuration::Ext::Correlation::ENV_LOGS_INJECTION_ENABLED, true) }
197
+ o.lazy
198
+ end
199
+
200
+ # Configures an alternative trace transport behavior, where
201
+ # traces can be sent to the agent and backend before all spans
202
+ # have finished.
203
+ #
204
+ # This is useful for long-running jobs or very large traces.
205
+ #
206
+ # The trace flame graph will display the partial trace as it is received and constantly
207
+ # update with new spans as they are flushed.
208
+ # @public_api
209
+ settings :partial_flush do
210
+ # Enable partial trace flushing.
211
+ #
212
+ # @default `false`
213
+ # @return [Boolean]
214
+ option :enabled, default: false
215
+
216
+ # Minimum number of finished spans required in a single unfinished trace before
217
+ # the tracer will consider that trace for partial flushing.
218
+ #
219
+ # This option helps preserve a minimum amount of batching in the
220
+ # flushing process, reducing network overhead.
221
+ #
222
+ # This threshold only applies to unfinished traces. Traces that have finished
223
+ # are always flushed immediately.
224
+ #
225
+ # @default 500
226
+ # @return [Integer]
227
+ option :min_spans_threshold, default: 500
228
+ end
229
+
230
+ # Enables {https://docs.datadoghq.com/tracing/trace_retention_and_ingestion/#datadog-intelligent-retention-filter
231
+ # Datadog intelligent retention filter}.
232
+ # @default `true`
233
+ # @return [Boolean,nil]
234
+ option :priority_sampling
235
+
236
+ option :report_hostname do |o|
237
+ o.default { env_to_bool(Tracing::Configuration::Ext::NET::ENV_REPORT_HOSTNAME, false) }
238
+ o.lazy
239
+ end
240
+
241
+ # A custom sampler instance.
242
+ # The object must respect the {Datadog::Tracing::Sampling::Sampler} interface.
243
+ # @default `nil`
244
+ # @return [Object,nil]
245
+ option :sampler
246
+
247
+ # Client-side sampling configuration.
248
+ # @see https://docs.datadoghq.com/tracing/trace_ingestion/mechanisms/
249
+ # @public_api
250
+ settings :sampling do
251
+ # Default sampling rate for the tracer.
252
+ #
253
+ # If `nil`, the trace uses an automatic sampling strategy that tries to ensure
254
+ # the collection of traces that are considered important (e.g. traces with an error, traces
255
+ # for resources not seen recently).
256
+ #
257
+ # @default `DD_TRACE_SAMPLE_RATE` environment variable, otherwise `nil`.
258
+ # @return [Float,nil]
259
+ option :default_rate do |o|
260
+ o.default { env_to_float(Tracing::Configuration::Ext::Sampling::ENV_SAMPLE_RATE, nil) }
261
+ o.lazy
262
+ end
263
+
264
+ # Rate limit for number of spans per second.
265
+ #
266
+ # Spans created above the limit will contribute to service metrics, but won't
267
+ # have their payload stored.
268
+ #
269
+ # @default `DD_TRACE_RATE_LIMIT` environment variable, otherwise 100.
270
+ # @return [Numeric,nil]
271
+ option :rate_limit do |o|
272
+ o.default { env_to_float(Tracing::Configuration::Ext::Sampling::ENV_RATE_LIMIT, 100) }
273
+ o.lazy
274
+ end
275
+
276
+ # Single span sampling rules.
277
+ # These rules allow a span to be kept when its encompassing trace is dropped.
278
+ #
279
+ # The syntax for single span sampling rules can be found here:
280
+ # TODO: <Single Span Sampling documentation URL here>
281
+ #
282
+ # @default `DD_SPAN_SAMPLING_RULES` environment variable.
283
+ # Otherwise, `ENV_SPAN_SAMPLING_RULES_FILE` environment variable.
284
+ # Otherwise `nil`.
285
+ # @return [String,nil]
286
+ # @public_api
287
+ option :span_rules do |o|
288
+ o.default do
289
+ rules = ENV[Tracing::Configuration::Ext::Sampling::Span::ENV_SPAN_SAMPLING_RULES]
290
+ rules_file = ENV[Tracing::Configuration::Ext::Sampling::Span::ENV_SPAN_SAMPLING_RULES_FILE]
291
+
292
+ if rules
293
+ if rules_file
294
+ Datadog.logger.warn(
295
+ 'Both DD_SPAN_SAMPLING_RULES and DD_SPAN_SAMPLING_RULES_FILE were provided: only ' \
296
+ 'DD_SPAN_SAMPLING_RULES will be used. Please do not provide DD_SPAN_SAMPLING_RULES_FILE when ' \
297
+ 'also providing DD_SPAN_SAMPLING_RULES as their configuration conflicts. ' \
298
+ "DD_SPAN_SAMPLING_RULES_FILE=#{rules_file} DD_SPAN_SAMPLING_RULES=#{rules}"
299
+ )
300
+ end
301
+ rules
302
+ elsif rules_file
303
+ begin
304
+ File.read(rules_file)
305
+ rescue => e
306
+ # `File#read` errors have clear and actionable messages, no need to add extra exception info.
307
+ Datadog.logger.warn(
308
+ "Cannot read span sampling rules file `#{rules_file}`: #{e.message}." \
309
+ 'No span sampling rules will be applied.'
310
+ )
311
+ nil
312
+ end
313
+ end
314
+ end
315
+ o.lazy
316
+ end
317
+ end
318
+
319
+ # [Continuous Integration Visibility](https://docs.datadoghq.com/continuous_integration/) configuration.
320
+ # @public_api
321
+ settings :test_mode do
322
+ # Enable test mode. This allows the tracer to collect spans from test runs.
323
+ #
324
+ # It also prevents the tracer from collecting spans in a production environment. Only use in a test environment.
325
+ #
326
+ # @default `DD_TRACE_TEST_MODE_ENABLED` environment variable, otherwise `false`
327
+ # @return [Boolean]
328
+ option :enabled do |o|
329
+ o.default { env_to_bool(Tracing::Configuration::Ext::Test::ENV_MODE_ENABLED, false) }
330
+ o.lazy
331
+ end
332
+
333
+ option :trace_flush do |o|
334
+ o.default { nil }
335
+ o.lazy
336
+ end
337
+
338
+ option :writer_options do |o|
339
+ o.default { {} }
340
+ o.lazy
341
+ end
342
+ end
343
+
344
+ # @see file:docs/GettingStarted.md#configuring-the-transport-layer Configuring the transport layer
345
+ #
346
+ # A {Proc} that configures a custom tracer transport.
347
+ # @yield Receives a {Datadog::Transport::HTTP} that can be modified with custom adapters and settings.
348
+ # @yieldparam [Datadog::Transport::HTTP] t transport to be configured.
349
+ # @default `nil`
350
+ # @return [Proc,nil]
351
+ option :transport_options, default: nil
352
+
353
+ # A custom writer instance.
354
+ # The object must respect the {Datadog::Tracing::Writer} interface.
355
+ #
356
+ # This option is recommended for internal use only.
357
+ #
358
+ # @default `nil`
359
+ # @return [Object,nil]
360
+ option :writer
361
+
362
+ # A custom {Hash} with keyword options to be passed to {Datadog::Tracing::Writer#initialize}.
363
+ #
364
+ # This option is recommended for internal use only.
365
+ #
366
+ # @default `{}`
367
+ # @return [Hash,nil]
368
+ option :writer_options, default: ->(_i) { {} }, lazy: true
369
+
370
+ # Client IP configuration
371
+ # @public_api
372
+ settings :client_ip do
373
+ # Whether client IP collection is enabled. When enabled client IPs from HTTP requests will
374
+ # be reported in traces.
375
+ #
376
+ # Usage of the DD_TRACE_CLIENT_IP_HEADER_DISABLED environment variable is deprecated.
377
+ #
378
+ # @see https://docs.datadoghq.com/tracing/configure_data_security#configuring-a-client-ip-header
379
+ #
380
+ # @default `DD_TRACE_CLIENT_IP_ENABLED` environment variable, otherwise `false`.
381
+ # @return [Boolean]
382
+ option :enabled do |o|
383
+ o.default do
384
+ disabled = env_to_bool(Tracing::Configuration::Ext::ClientIp::ENV_DISABLED)
385
+
386
+ enabled = if disabled.nil?
387
+ false
388
+ else
389
+ Datadog.logger.warn { "#{Tracing::Configuration::Ext::ClientIp::ENV_DISABLED} environment variable is deprecated, found set to #{disabled}, use #{Tracing::Configuration::Ext::ClientIp::ENV_ENABLED}=#{!disabled}" }
390
+
391
+ !disabled
392
+ end
393
+
394
+ # ENABLED env var takes precedence over deprecated DISABLED
395
+ env_to_bool(Tracing::Configuration::Ext::ClientIp::ENV_ENABLED, enabled)
396
+ end
397
+ o.lazy
398
+ end
399
+
400
+ # An optional name of a custom header to resolve the client IP from.
401
+ #
402
+ # @default `DD_TRACE_CLIENT_IP_HEADER` environment variable, otherwise `nil`.
403
+ # @return [String,nil]
404
+ option :header_name do |o|
405
+ o.default { ENV.fetch(Tracing::Configuration::Ext::ClientIp::ENV_HEADER_NAME, nil) }
406
+ o.lazy
407
+ end
408
+ end
409
+
410
+ # Maximum size for the `x-datadog-tags` distributed trace tags header.
411
+ #
412
+ # If the serialized size of distributed trace tags is larger than this value, it will
413
+ # not be parsed if incoming, nor exported if outgoing. An error message will be logged
414
+ # in this case.
415
+ #
416
+ # @default `DD_TRACE_X_DATADOG_TAGS_MAX_LENGTH` environment variable, otherwise `512`
417
+ # @return [Integer]
418
+ option :x_datadog_tags_max_length do |o|
419
+ o.default { env_to_int(Tracing::Configuration::Ext::Distributed::ENV_X_DATADOG_TAGS_MAX_LENGTH, 512) }
420
+ o.lazy
421
+ end
422
+ end
423
+ end
424
+ end
425
+ end
426
+ # rubocop:enable Metrics/AbcSize
427
+ # rubocop:enable Metrics/BlockLength
428
+ # rubocop:enable Metrics/CyclomaticComplexity
429
+ # rubocop:enable Metrics/MethodLength
430
+ # rubocop:enable Layout/LineLength
431
+ end
432
+ end
433
+ end
@@ -0,0 +1,68 @@
1
+ # typed: true
2
+
3
+ require_relative '../core/utils/forking'
4
+
5
+ module Datadog
6
+ module Tracing
7
+ # {Datadog::Tracing::Context} is used to keep track of a the active trace for the current
8
+ # execution flow. During each logical execution, the same {Datadog::Tracing::Context} is
9
+ # used to represent a single logical trace, even if the trace is built
10
+ # asynchronously.
11
+ #
12
+ # A single code execution may use multiple {Datadog::Tracing::Context} if part of the execution
13
+ # must not be related to the current tracing. As example, a delayed job may
14
+ # compose a standalone trace instead of being related to the same trace that
15
+ # generates the job itself. On the other hand, if it's part of the same
16
+ # {Datadog::Tracing::Context}, it will be related to the original trace.
17
+ class Context
18
+ include Core::Utils::Forking
19
+
20
+ attr_reader \
21
+ :active_trace
22
+
23
+ def initialize(
24
+ trace: nil
25
+ )
26
+ activate!(trace)
27
+ end
28
+
29
+ # Handles trace activation.
30
+ #
31
+ # Permits nil, allowing traces to be deactivated.
32
+ #
33
+ # If given a block, it will reset to the original
34
+ # trace after the block completes.
35
+ #
36
+ # When restoring the original trace, if it is finished,
37
+ # it will deactivate it. This prevents the context from
38
+ # holding references to completed traces thereby releasing
39
+ # its memory.
40
+ def activate!(trace)
41
+ if block_given?
42
+ begin
43
+ original_trace = @active_trace
44
+ set_active_trace!(trace)
45
+ yield
46
+ ensure
47
+ set_active_trace!(original_trace)
48
+ end
49
+ else
50
+ set_active_trace!(trace)
51
+ end
52
+ end
53
+
54
+ # Creates a copy of the context, when forked.
55
+ def fork_clone
56
+ forked_trace = @active_trace && @active_trace.fork_clone
57
+ self.class.new(trace: forked_trace)
58
+ end
59
+
60
+ private
61
+
62
+ def set_active_trace!(trace)
63
+ # Don't retain finished traces
64
+ @active_trace = trace && !trace.finished? ? trace : nil
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,82 @@
1
+ # typed: true
2
+
3
+ require_relative '../core/utils/sequence'
4
+ require_relative 'context'
5
+
6
+ module Datadog
7
+ module Tracing
8
+ # DefaultContextProvider is a default context provider that retrieves
9
+ # all contexts from the current fiber-local storage. It is suitable for
10
+ # synchronous programming.
11
+ #
12
+ # @see https://ruby-doc.org/core-3.1.2/Thread.html#method-i-5B-5D Thread attributes are fiber-local
13
+ class DefaultContextProvider
14
+ # Initializes the default context provider with a fiber-bound context.
15
+ def initialize
16
+ @context = FiberLocalContext.new
17
+ end
18
+
19
+ # Sets the current context.
20
+ def context=(ctx)
21
+ @context.local = ctx
22
+ end
23
+
24
+ # Return the local context.
25
+ def context(key = nil)
26
+ current_context = key.nil? ? @context.local : @context.local(key)
27
+
28
+ # Rebuild/reset context after a fork
29
+ #
30
+ # We don't want forked processes to copy and retransmit spans
31
+ # that were generated from the parent process. Reset it such
32
+ # that it acts like a distributed trace.
33
+ current_context.after_fork! do
34
+ # TODO: Only assign to `self.context` when working on the current thread (`key == nil`)
35
+ current_context = self.context = current_context.fork_clone
36
+ end
37
+
38
+ current_context
39
+ end
40
+ end
41
+
42
+ # FiberLocalContext can be used as a tracer global reference to create
43
+ # a different {Datadog::Tracing::Context} for each fiber. This allows for the tracer
44
+ # to create a serial execution graph regardless of any concurrent execution: each
45
+ # concurrent execution path creates a new trace graph.
46
+ #
47
+ # @see https://ruby-doc.org/core-3.1.2/Thread.html#method-i-5B-5D Thread attributes are fiber-local
48
+ class FiberLocalContext
49
+ # To support multiple tracers simultaneously, each {Datadog::Tracing::FiberLocalContext}
50
+ # instance has its own fiber-local variable.
51
+ def initialize
52
+ @key = "datadog_context_#{FiberLocalContext.next_instance_id}".to_sym
53
+
54
+ self.local = Context.new
55
+ end
56
+
57
+ # Override the fiber-local context with a new context.
58
+ def local=(ctx)
59
+ Thread.current[@key] = ctx
60
+ end
61
+
62
+ # Return the fiber-local context.
63
+ def local(storage = Thread.current)
64
+ storage[@key] ||= Context.new
65
+ end
66
+
67
+ # Ensure two instances of {FiberLocalContext} do not conflict.
68
+ # We previously used {FiberLocalContext#object_id} to ensure uniqueness
69
+ # but the VM is allowed to reuse `object_id`, allow for the possibility that
70
+ # a new FiberLocalContext would be able to read an old FiberLocalContext's
71
+ # value.
72
+ UNIQUE_INSTANCE_MUTEX = Mutex.new
73
+ UNIQUE_INSTANCE_GENERATOR = Datadog::Core::Utils::Sequence.new
74
+
75
+ private_constant :UNIQUE_INSTANCE_MUTEX, :UNIQUE_INSTANCE_GENERATOR
76
+
77
+ def self.next_instance_id
78
+ UNIQUE_INSTANCE_MUTEX.synchronize { UNIQUE_INSTANCE_GENERATOR.next }
79
+ end
80
+ end
81
+ end
82
+ end