ddtrace 0.54.2 → 1.2.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 (1139) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +7 -16
  3. data/CHANGELOG.md +213 -1
  4. data/CONTRIBUTING.md +1 -1
  5. data/LICENSE-3rdparty.csv +3 -1
  6. data/README.md +10 -1
  7. data/bin/ddtracerb +5 -5
  8. data/ddtrace.gemspec +22 -7
  9. data/docs/0.x-trace.png +0 -0
  10. data/docs/1.0-trace.png +0 -0
  11. data/docs/AutoInstrumentation.md +36 -0
  12. data/docs/Deprecation.md +8 -0
  13. data/docs/DevelopmentGuide.md +1 -1
  14. data/docs/GettingStarted.md +596 -510
  15. data/docs/ProfilingDevelopment.md +36 -34
  16. data/docs/PublicApi.md +14 -0
  17. data/docs/UpgradeGuide.md +736 -0
  18. data/ext/ddtrace_profiling_loader/ddtrace_profiling_loader.c +118 -0
  19. data/ext/ddtrace_profiling_loader/extconf.rb +54 -0
  20. data/ext/ddtrace_profiling_native_extension/NativeExtensionDesign.md +36 -9
  21. data/ext/ddtrace_profiling_native_extension/clock_id.h +1 -1
  22. data/ext/ddtrace_profiling_native_extension/clock_id_from_pthread.c +1 -9
  23. data/ext/ddtrace_profiling_native_extension/clock_id_noop.c +1 -1
  24. data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time.c +269 -0
  25. data/ext/ddtrace_profiling_native_extension/collectors_stack.c +278 -0
  26. data/ext/ddtrace_profiling_native_extension/collectors_stack.h +9 -0
  27. data/ext/ddtrace_profiling_native_extension/extconf.rb +123 -103
  28. data/ext/ddtrace_profiling_native_extension/http_transport.c +341 -0
  29. data/ext/ddtrace_profiling_native_extension/libddprof_helpers.h +13 -0
  30. data/ext/ddtrace_profiling_native_extension/native_extension_helpers.rb +274 -0
  31. data/ext/ddtrace_profiling_native_extension/private_vm_api_access.c +655 -8
  32. data/ext/ddtrace_profiling_native_extension/private_vm_api_access.h +33 -0
  33. data/ext/ddtrace_profiling_native_extension/profiling.c +14 -1
  34. data/ext/ddtrace_profiling_native_extension/ruby_helpers.h +33 -0
  35. data/ext/ddtrace_profiling_native_extension/stack_recorder.c +147 -0
  36. data/ext/ddtrace_profiling_native_extension/stack_recorder.h +37 -0
  37. data/lib/datadog/appsec/assets/blocked.html +4 -0
  38. data/lib/datadog/appsec/assets/waf_rules/README.md +7 -0
  39. data/lib/datadog/appsec/assets/waf_rules/recommended.json +5638 -0
  40. data/lib/datadog/appsec/assets/waf_rules/risky.json +1499 -0
  41. data/lib/datadog/appsec/assets/waf_rules/strict.json +1298 -0
  42. data/lib/datadog/appsec/assets.rb +38 -0
  43. data/lib/datadog/appsec/autoload.rb +16 -0
  44. data/lib/datadog/appsec/configuration/settings.rb +194 -0
  45. data/lib/datadog/appsec/configuration.rb +80 -0
  46. data/lib/datadog/appsec/contrib/auto_instrument.rb +29 -0
  47. data/lib/datadog/appsec/contrib/configuration/settings.rb +20 -0
  48. data/lib/datadog/appsec/contrib/integration.rb +37 -0
  49. data/lib/datadog/appsec/contrib/patcher.rb +12 -0
  50. data/lib/datadog/appsec/contrib/rack/configuration/settings.rb +22 -0
  51. data/lib/datadog/appsec/contrib/rack/ext.rb +15 -0
  52. data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +169 -0
  53. data/lib/datadog/appsec/contrib/rack/integration.rb +49 -0
  54. data/lib/datadog/appsec/contrib/rack/patcher.rb +32 -0
  55. data/lib/datadog/appsec/contrib/rack/reactive/request.rb +87 -0
  56. data/lib/datadog/appsec/contrib/rack/reactive/request_body.rb +64 -0
  57. data/lib/datadog/appsec/contrib/rack/reactive/response.rb +64 -0
  58. data/lib/datadog/appsec/contrib/rack/request.rb +58 -0
  59. data/lib/datadog/appsec/contrib/rack/request_body_middleware.rb +41 -0
  60. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +112 -0
  61. data/lib/datadog/appsec/contrib/rack/response.rb +24 -0
  62. data/lib/datadog/appsec/contrib/rails/configuration/settings.rb +22 -0
  63. data/lib/datadog/appsec/contrib/rails/ext.rb +15 -0
  64. data/lib/datadog/appsec/contrib/rails/framework.rb +30 -0
  65. data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +81 -0
  66. data/lib/datadog/appsec/contrib/rails/integration.rb +48 -0
  67. data/lib/datadog/appsec/contrib/rails/patcher.rb +158 -0
  68. data/lib/datadog/appsec/contrib/rails/reactive/action.rb +68 -0
  69. data/lib/datadog/appsec/contrib/rails/request.rb +33 -0
  70. data/lib/datadog/appsec/contrib/rails/request_middleware.rb +20 -0
  71. data/lib/datadog/appsec/contrib/sinatra/configuration/settings.rb +22 -0
  72. data/lib/datadog/appsec/contrib/sinatra/ext.rb +15 -0
  73. data/lib/datadog/appsec/contrib/sinatra/framework.rb +34 -0
  74. data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +124 -0
  75. data/lib/datadog/appsec/contrib/sinatra/integration.rb +48 -0
  76. data/lib/datadog/appsec/contrib/sinatra/patcher.rb +144 -0
  77. data/lib/datadog/appsec/contrib/sinatra/reactive/routed.rb +63 -0
  78. data/lib/datadog/appsec/contrib/sinatra/request_middleware.rb +20 -0
  79. data/lib/datadog/appsec/event.rb +121 -0
  80. data/lib/datadog/appsec/extensions.rb +118 -0
  81. data/lib/datadog/appsec/instrumentation/gateway.rb +44 -0
  82. data/lib/datadog/appsec/processor.rb +164 -0
  83. data/lib/datadog/appsec/rate_limiter.rb +60 -0
  84. data/lib/datadog/appsec/reactive/address_hash.rb +18 -0
  85. data/lib/datadog/appsec/reactive/engine.rb +44 -0
  86. data/lib/datadog/appsec/reactive/operation.rb +51 -0
  87. data/lib/datadog/appsec/reactive/subscriber.rb +18 -0
  88. data/lib/datadog/appsec.rb +23 -0
  89. data/lib/datadog/ci/configuration/components.rb +9 -8
  90. data/lib/datadog/ci/configuration/settings.rb +19 -3
  91. data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +4 -2
  92. data/lib/datadog/ci/contrib/cucumber/ext.rb +2 -0
  93. data/lib/datadog/ci/contrib/cucumber/formatter.rb +4 -9
  94. data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +2 -1
  95. data/lib/datadog/ci/contrib/cucumber/integration.rb +3 -2
  96. data/lib/datadog/ci/contrib/cucumber/patcher.rb +3 -2
  97. data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +4 -2
  98. data/lib/datadog/ci/contrib/rspec/example.rb +4 -9
  99. data/lib/datadog/ci/contrib/rspec/ext.rb +2 -0
  100. data/lib/datadog/ci/contrib/rspec/integration.rb +3 -2
  101. data/lib/datadog/ci/contrib/rspec/patcher.rb +3 -2
  102. data/lib/datadog/ci/ext/app_types.rb +2 -1
  103. data/lib/datadog/ci/ext/environment.rb +128 -110
  104. data/lib/datadog/ci/ext/settings.rb +2 -1
  105. data/lib/datadog/ci/ext/test.rb +1 -0
  106. data/lib/datadog/ci/extensions.rb +5 -4
  107. data/lib/datadog/ci/flush.rb +38 -0
  108. data/lib/datadog/ci/test.rb +15 -13
  109. data/lib/datadog/ci.rb +4 -1
  110. data/lib/datadog/core/buffer/cruby.rb +55 -0
  111. data/lib/datadog/core/buffer/random.rb +134 -0
  112. data/lib/datadog/core/buffer/thread_safe.rb +58 -0
  113. data/lib/datadog/core/chunker.rb +35 -0
  114. data/lib/datadog/core/configuration/agent_settings_resolver.rb +365 -0
  115. data/lib/datadog/core/configuration/base.rb +89 -0
  116. data/lib/datadog/core/configuration/components.rb +426 -0
  117. data/lib/datadog/core/configuration/dependency_resolver.rb +28 -0
  118. data/lib/datadog/core/configuration/option.rb +69 -0
  119. data/lib/datadog/core/configuration/option_definition.rb +126 -0
  120. data/lib/datadog/core/configuration/option_definition_set.rb +22 -0
  121. data/lib/datadog/core/configuration/option_set.rb +10 -0
  122. data/lib/datadog/core/configuration/options.rb +118 -0
  123. data/lib/datadog/core/configuration/settings.rb +625 -0
  124. data/lib/datadog/core/configuration.rb +286 -0
  125. data/lib/datadog/core/diagnostics/environment_logger.rb +283 -0
  126. data/lib/datadog/core/diagnostics/ext.rb +41 -0
  127. data/lib/datadog/core/diagnostics/health.rb +37 -0
  128. data/lib/datadog/core/encoding.rb +76 -0
  129. data/lib/datadog/core/environment/cgroup.rb +4 -1
  130. data/lib/datadog/core/environment/class_count.rb +1 -0
  131. data/lib/datadog/core/environment/container.rb +3 -1
  132. data/lib/datadog/core/environment/ext.rb +28 -9
  133. data/lib/datadog/core/environment/gc.rb +1 -0
  134. data/lib/datadog/core/environment/identity.rb +11 -4
  135. data/lib/datadog/core/environment/platform.rb +40 -0
  136. data/lib/datadog/core/environment/socket.rb +9 -2
  137. data/lib/datadog/core/environment/thread_count.rb +1 -0
  138. data/lib/datadog/core/environment/variable_helpers.rb +28 -2
  139. data/lib/datadog/core/environment/vm_cache.rb +1 -0
  140. data/lib/datadog/core/error.rb +101 -0
  141. data/lib/datadog/core/extensions.rb +16 -0
  142. data/lib/datadog/core/git/ext.rb +35 -0
  143. data/lib/datadog/core/logger.rb +46 -0
  144. data/lib/datadog/core/logging/ext.rb +11 -0
  145. data/lib/datadog/core/metrics/client.rb +198 -0
  146. data/lib/datadog/core/metrics/ext.rb +20 -0
  147. data/lib/datadog/core/metrics/helpers.rb +25 -0
  148. data/lib/datadog/core/metrics/logging.rb +44 -0
  149. data/lib/datadog/core/metrics/metric.rb +14 -0
  150. data/lib/datadog/core/metrics/options.rb +50 -0
  151. data/lib/datadog/core/pin.rb +75 -0
  152. data/lib/datadog/core/runtime/ext.rb +28 -0
  153. data/lib/datadog/core/runtime/metrics.rb +126 -0
  154. data/lib/datadog/core/utils/compression.rb +32 -0
  155. data/lib/datadog/core/utils/forking.rb +63 -0
  156. data/lib/datadog/core/utils/object_set.rb +43 -0
  157. data/lib/datadog/core/utils/only_once.rb +44 -0
  158. data/lib/datadog/core/utils/safe_dup.rb +27 -0
  159. data/lib/datadog/core/utils/sequence.rb +21 -0
  160. data/lib/datadog/core/utils/string_table.rb +49 -0
  161. data/lib/datadog/core/utils/time.rb +54 -0
  162. data/lib/datadog/core/utils.rb +115 -0
  163. data/lib/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rb +120 -0
  164. data/lib/datadog/core/vendor/multipart-post/multipart/post/multipartable.rb +61 -0
  165. data/lib/datadog/core/vendor/multipart-post/multipart/post/parts.rb +139 -0
  166. data/lib/datadog/core/vendor/multipart-post/multipart/post/version.rb +13 -0
  167. data/lib/datadog/core/vendor/multipart-post/multipart/post.rb +12 -0
  168. data/lib/datadog/core/vendor/multipart-post/multipart.rb +16 -0
  169. data/lib/datadog/core/vendor/multipart-post/net/http/post/multipart.rb +36 -0
  170. data/lib/datadog/core/worker.rb +24 -0
  171. data/lib/datadog/core/workers/async.rb +182 -0
  172. data/lib/datadog/core/workers/interval_loop.rb +119 -0
  173. data/lib/datadog/core/workers/polling.rb +59 -0
  174. data/lib/datadog/core/workers/queue.rb +44 -0
  175. data/lib/datadog/core/workers/runtime_metrics.rb +62 -0
  176. data/lib/datadog/core.rb +80 -0
  177. data/lib/datadog/kit/enable_core_dumps.rb +50 -0
  178. data/lib/datadog/kit/identity.rb +63 -0
  179. data/lib/datadog/kit.rb +11 -0
  180. data/lib/datadog/opentracer/binary_propagator.rb +26 -0
  181. data/lib/datadog/opentracer/carrier.rb +9 -0
  182. data/lib/datadog/opentracer/distributed_headers.rb +58 -0
  183. data/lib/datadog/opentracer/global_tracer.rb +17 -0
  184. data/lib/datadog/opentracer/propagator.rb +26 -0
  185. data/lib/datadog/opentracer/rack_propagator.rb +72 -0
  186. data/lib/datadog/opentracer/scope.rb +18 -0
  187. data/lib/datadog/opentracer/scope_manager.rb +9 -0
  188. data/lib/datadog/opentracer/span.rb +101 -0
  189. data/lib/datadog/opentracer/span_context.rb +19 -0
  190. data/lib/datadog/opentracer/span_context_factory.rb +27 -0
  191. data/lib/datadog/opentracer/text_map_propagator.rb +87 -0
  192. data/lib/datadog/opentracer/thread_local_scope.rb +34 -0
  193. data/lib/datadog/opentracer/thread_local_scope_manager.rb +66 -0
  194. data/lib/datadog/opentracer/tracer.rb +212 -0
  195. data/lib/datadog/opentracer.rb +24 -0
  196. data/lib/datadog/profiling/backtrace_location.rb +34 -0
  197. data/lib/datadog/profiling/buffer.rb +43 -0
  198. data/lib/datadog/profiling/collectors/code_provenance.rb +115 -0
  199. data/lib/datadog/profiling/collectors/cpu_and_wall_time.rb +42 -0
  200. data/lib/datadog/profiling/collectors/old_stack.rb +298 -0
  201. data/lib/datadog/profiling/collectors/stack.rb +18 -0
  202. data/lib/datadog/profiling/encoding/profile.rb +43 -0
  203. data/lib/datadog/profiling/event.rb +15 -0
  204. data/lib/datadog/profiling/events/stack.rb +82 -0
  205. data/lib/datadog/profiling/exporter.rb +74 -0
  206. data/lib/datadog/profiling/ext/forking.rb +99 -0
  207. data/lib/datadog/profiling/ext.rb +44 -0
  208. data/lib/datadog/profiling/flush.rb +41 -0
  209. data/lib/datadog/profiling/http_transport.rb +131 -0
  210. data/lib/datadog/profiling/load_native_extension.rb +22 -0
  211. data/lib/datadog/profiling/native_extension.rb +41 -0
  212. data/lib/datadog/profiling/old_ext.rb +42 -0
  213. data/lib/datadog/profiling/old_recorder.rb +106 -0
  214. data/lib/datadog/profiling/pprof/builder.rb +127 -0
  215. data/lib/datadog/profiling/pprof/converter.rb +104 -0
  216. data/lib/datadog/profiling/pprof/message_set.rb +16 -0
  217. data/lib/datadog/profiling/pprof/payload.rb +20 -0
  218. data/lib/datadog/profiling/pprof/pprof_pb.rb +83 -0
  219. data/lib/datadog/profiling/pprof/stack_sample.rb +141 -0
  220. data/lib/datadog/profiling/pprof/string_table.rb +12 -0
  221. data/lib/datadog/profiling/pprof/template.rb +120 -0
  222. data/lib/datadog/profiling/preload.rb +5 -0
  223. data/lib/datadog/profiling/profiler.rb +34 -0
  224. data/lib/datadog/profiling/scheduler.rb +132 -0
  225. data/lib/datadog/profiling/stack_recorder.rb +33 -0
  226. data/lib/datadog/profiling/tag_builder.rb +48 -0
  227. data/lib/datadog/profiling/tasks/exec.rb +50 -0
  228. data/lib/datadog/profiling/tasks/help.rb +18 -0
  229. data/lib/datadog/profiling/tasks/setup.rb +93 -0
  230. data/lib/datadog/profiling/trace_identifiers/ddtrace.rb +45 -0
  231. data/lib/datadog/profiling/trace_identifiers/helper.rb +47 -0
  232. data/lib/datadog/profiling/transport/http/api/endpoint.rb +85 -0
  233. data/lib/datadog/profiling/transport/http/api/instance.rb +38 -0
  234. data/lib/datadog/profiling/transport/http/api/spec.rb +42 -0
  235. data/lib/datadog/profiling/transport/http/api.rb +45 -0
  236. data/lib/datadog/profiling/transport/http/builder.rb +30 -0
  237. data/lib/datadog/profiling/transport/http/client.rb +37 -0
  238. data/lib/datadog/profiling/transport/http/response.rb +21 -0
  239. data/lib/datadog/profiling/transport/http.rb +112 -0
  240. data/lib/datadog/profiling.rb +170 -0
  241. data/lib/datadog/tracing/analytics.rb +25 -0
  242. data/lib/datadog/tracing/buffer.rb +132 -0
  243. data/lib/datadog/tracing/configuration/ext.rb +51 -0
  244. data/lib/datadog/tracing/context.rb +68 -0
  245. data/lib/datadog/tracing/context_provider.rb +82 -0
  246. data/lib/datadog/tracing/contrib/action_cable/configuration/settings.rb +35 -0
  247. data/lib/datadog/tracing/contrib/action_cable/event.rb +72 -0
  248. data/lib/datadog/tracing/contrib/action_cable/events/broadcast.rb +58 -0
  249. data/lib/datadog/tracing/contrib/action_cable/events/perform_action.rb +63 -0
  250. data/lib/datadog/tracing/contrib/action_cable/events/transmit.rb +59 -0
  251. data/lib/datadog/tracing/contrib/action_cable/events.rb +37 -0
  252. data/lib/datadog/tracing/contrib/action_cable/ext.rb +32 -0
  253. data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +91 -0
  254. data/lib/datadog/tracing/contrib/action_cable/integration.rb +50 -0
  255. data/lib/datadog/tracing/contrib/action_cable/patcher.rb +31 -0
  256. data/lib/datadog/tracing/contrib/action_mailer/configuration/settings.rb +36 -0
  257. data/lib/datadog/tracing/contrib/action_mailer/event.rb +52 -0
  258. data/lib/datadog/tracing/contrib/action_mailer/events/deliver.rb +60 -0
  259. data/lib/datadog/tracing/contrib/action_mailer/events/process.rb +47 -0
  260. data/lib/datadog/tracing/contrib/action_mailer/events.rb +34 -0
  261. data/lib/datadog/tracing/contrib/action_mailer/ext.rb +33 -0
  262. data/lib/datadog/tracing/contrib/action_mailer/integration.rb +50 -0
  263. data/lib/datadog/tracing/contrib/action_mailer/patcher.rb +29 -0
  264. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +160 -0
  265. data/lib/datadog/tracing/contrib/action_pack/action_controller/patcher.rb +29 -0
  266. data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +36 -0
  267. data/lib/datadog/tracing/contrib/action_pack/ext.rb +22 -0
  268. data/lib/datadog/tracing/contrib/action_pack/integration.rb +50 -0
  269. data/lib/datadog/tracing/contrib/action_pack/patcher.rb +27 -0
  270. data/lib/datadog/tracing/contrib/action_pack/utils.rb +40 -0
  271. data/lib/datadog/tracing/contrib/action_view/configuration/settings.rb +36 -0
  272. data/lib/datadog/tracing/contrib/action_view/event.rb +35 -0
  273. data/lib/datadog/tracing/contrib/action_view/events/render_partial.rb +54 -0
  274. data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +57 -0
  275. data/lib/datadog/tracing/contrib/action_view/events.rb +34 -0
  276. data/lib/datadog/tracing/contrib/action_view/ext.rb +24 -0
  277. data/lib/datadog/tracing/contrib/action_view/instrumentation/partial_renderer.rb +78 -0
  278. data/lib/datadog/tracing/contrib/action_view/instrumentation/template_renderer.rb +91 -0
  279. data/lib/datadog/tracing/contrib/action_view/integration.rb +57 -0
  280. data/lib/datadog/tracing/contrib/action_view/patcher.rb +47 -0
  281. data/lib/datadog/tracing/contrib/action_view/utils.rb +36 -0
  282. data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +37 -0
  283. data/lib/datadog/tracing/contrib/active_job/event.rb +58 -0
  284. data/lib/datadog/tracing/contrib/active_job/events/discard.rb +50 -0
  285. data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +49 -0
  286. data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +49 -0
  287. data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +51 -0
  288. data/lib/datadog/tracing/contrib/active_job/events/perform.rb +49 -0
  289. data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +50 -0
  290. data/lib/datadog/tracing/contrib/active_job/events.rb +42 -0
  291. data/lib/datadog/tracing/contrib/active_job/ext.rb +39 -0
  292. data/lib/datadog/tracing/contrib/active_job/integration.rb +50 -0
  293. data/lib/datadog/tracing/contrib/active_job/log_injection.rb +26 -0
  294. data/lib/datadog/tracing/contrib/active_job/patcher.rb +36 -0
  295. data/lib/datadog/tracing/contrib/active_model_serializers/configuration/settings.rb +33 -0
  296. data/lib/datadog/tracing/contrib/active_model_serializers/event.rb +69 -0
  297. data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +45 -0
  298. data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +47 -0
  299. data/lib/datadog/tracing/contrib/active_model_serializers/events.rb +34 -0
  300. data/lib/datadog/tracing/contrib/active_model_serializers/ext.rb +24 -0
  301. data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +45 -0
  302. data/lib/datadog/tracing/contrib/active_model_serializers/patcher.rb +33 -0
  303. data/lib/datadog/tracing/contrib/active_record/configuration/makara_resolver.rb +36 -0
  304. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +138 -0
  305. data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +39 -0
  306. data/lib/datadog/tracing/contrib/active_record/event.rb +30 -0
  307. data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +58 -0
  308. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +78 -0
  309. data/lib/datadog/tracing/contrib/active_record/events.rb +34 -0
  310. data/lib/datadog/tracing/contrib/active_record/ext.rb +29 -0
  311. data/lib/datadog/tracing/contrib/active_record/integration.rb +56 -0
  312. data/lib/datadog/tracing/contrib/active_record/patcher.rb +27 -0
  313. data/lib/datadog/tracing/contrib/active_record/utils.rb +128 -0
  314. data/lib/datadog/tracing/contrib/active_record/vendor/connection_specification.rb +307 -0
  315. data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +270 -0
  316. data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +73 -0
  317. data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +47 -0
  318. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +35 -0
  319. data/lib/datadog/tracing/contrib/active_support/ext.rb +31 -0
  320. data/lib/datadog/tracing/contrib/active_support/integration.rb +51 -0
  321. data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +71 -0
  322. data/lib/datadog/tracing/contrib/active_support/notifications/subscriber.rb +71 -0
  323. data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +164 -0
  324. data/lib/datadog/tracing/contrib/active_support/patcher.rb +27 -0
  325. data/lib/datadog/tracing/contrib/analytics.rb +29 -0
  326. data/lib/datadog/tracing/contrib/auto_instrument.rb +53 -0
  327. data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +35 -0
  328. data/lib/datadog/tracing/contrib/aws/ext.rb +27 -0
  329. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +95 -0
  330. data/lib/datadog/tracing/contrib/aws/integration.rb +47 -0
  331. data/lib/datadog/tracing/contrib/aws/parsed_context.rb +60 -0
  332. data/lib/datadog/tracing/contrib/aws/patcher.rb +57 -0
  333. data/lib/datadog/tracing/contrib/aws/services.rb +123 -0
  334. data/lib/datadog/tracing/contrib/concurrent_ruby/configuration/settings.rb +23 -0
  335. data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +53 -0
  336. data/lib/datadog/tracing/contrib/concurrent_ruby/ext.rb +16 -0
  337. data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +27 -0
  338. data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +43 -0
  339. data/lib/datadog/tracing/contrib/concurrent_ruby/patcher.rb +33 -0
  340. data/lib/datadog/tracing/contrib/configurable.rb +102 -0
  341. data/lib/datadog/tracing/contrib/configuration/resolver.rb +85 -0
  342. data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +43 -0
  343. data/lib/datadog/tracing/contrib/configuration/settings.rb +43 -0
  344. data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +35 -0
  345. data/lib/datadog/tracing/contrib/dalli/ext.rb +24 -0
  346. data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +58 -0
  347. data/lib/datadog/tracing/contrib/dalli/integration.rb +52 -0
  348. data/lib/datadog/tracing/contrib/dalli/patcher.rb +28 -0
  349. data/lib/datadog/tracing/contrib/dalli/quantize.rb +26 -0
  350. data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +38 -0
  351. data/lib/datadog/tracing/contrib/delayed_job/ext.rb +26 -0
  352. data/lib/datadog/tracing/contrib/delayed_job/integration.rb +43 -0
  353. data/lib/datadog/tracing/contrib/delayed_job/patcher.rb +31 -0
  354. data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +101 -0
  355. data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +36 -0
  356. data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +26 -0
  357. data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +50 -0
  358. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +151 -0
  359. data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +89 -0
  360. data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +37 -0
  361. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +177 -0
  362. data/lib/datadog/tracing/contrib/ethon/ext.rb +24 -0
  363. data/lib/datadog/tracing/contrib/ethon/integration.rb +48 -0
  364. data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +96 -0
  365. data/lib/datadog/tracing/contrib/ethon/patcher.rb +31 -0
  366. data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +38 -0
  367. data/lib/datadog/tracing/contrib/excon/ext.rb +21 -0
  368. data/lib/datadog/tracing/contrib/excon/integration.rb +48 -0
  369. data/lib/datadog/tracing/contrib/excon/middleware.rb +170 -0
  370. data/lib/datadog/tracing/contrib/excon/patcher.rb +31 -0
  371. data/lib/datadog/tracing/contrib/extensions.rb +197 -0
  372. data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +42 -0
  373. data/lib/datadog/tracing/contrib/faraday/connection.rb +22 -0
  374. data/lib/datadog/tracing/contrib/faraday/ext.rb +21 -0
  375. data/lib/datadog/tracing/contrib/faraday/integration.rb +48 -0
  376. data/lib/datadog/tracing/contrib/faraday/middleware.rb +93 -0
  377. data/lib/datadog/tracing/contrib/faraday/patcher.rb +56 -0
  378. data/lib/datadog/tracing/contrib/faraday/rack_builder.rb +22 -0
  379. data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +42 -0
  380. data/lib/datadog/tracing/contrib/grape/endpoint.rb +253 -0
  381. data/lib/datadog/tracing/contrib/grape/ext.rb +28 -0
  382. data/lib/datadog/tracing/contrib/grape/instrumentation.rb +37 -0
  383. data/lib/datadog/tracing/contrib/grape/integration.rb +44 -0
  384. data/lib/datadog/tracing/contrib/grape/patcher.rb +33 -0
  385. data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +36 -0
  386. data/lib/datadog/tracing/contrib/graphql/ext.rb +19 -0
  387. data/lib/datadog/tracing/contrib/graphql/integration.rb +44 -0
  388. data/lib/datadog/tracing/contrib/graphql/patcher.rb +91 -0
  389. data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +38 -0
  390. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +84 -0
  391. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +90 -0
  392. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb +108 -0
  393. data/lib/datadog/tracing/contrib/grpc/ext.rb +23 -0
  394. data/lib/datadog/tracing/contrib/grpc/integration.rb +43 -0
  395. data/lib/datadog/tracing/contrib/grpc/intercept_with_datadog.rb +53 -0
  396. data/lib/datadog/tracing/contrib/grpc/patcher.rb +37 -0
  397. data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +44 -0
  398. data/lib/datadog/tracing/contrib/http/configuration/settings.rb +37 -0
  399. data/lib/datadog/tracing/contrib/http/ext.rb +21 -0
  400. data/lib/datadog/tracing/contrib/http/instrumentation.rb +139 -0
  401. data/lib/datadog/tracing/contrib/http/integration.rb +49 -0
  402. data/lib/datadog/tracing/contrib/http/patcher.rb +30 -0
  403. data/lib/datadog/tracing/contrib/http_annotation_helper.rb +17 -0
  404. data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +37 -0
  405. data/lib/datadog/tracing/contrib/httpclient/ext.rb +21 -0
  406. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +117 -0
  407. data/lib/datadog/tracing/contrib/httpclient/integration.rb +48 -0
  408. data/lib/datadog/tracing/contrib/httpclient/patcher.rb +42 -0
  409. data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +37 -0
  410. data/lib/datadog/tracing/contrib/httprb/ext.rb +21 -0
  411. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +128 -0
  412. data/lib/datadog/tracing/contrib/httprb/integration.rb +48 -0
  413. data/lib/datadog/tracing/contrib/httprb/patcher.rb +42 -0
  414. data/lib/datadog/tracing/contrib/integration.rb +78 -0
  415. data/lib/datadog/tracing/contrib/kafka/configuration/settings.rb +35 -0
  416. data/lib/datadog/tracing/contrib/kafka/consumer_event.rb +18 -0
  417. data/lib/datadog/tracing/contrib/kafka/consumer_group_event.rb +18 -0
  418. data/lib/datadog/tracing/contrib/kafka/event.rb +52 -0
  419. data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +42 -0
  420. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +49 -0
  421. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +47 -0
  422. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +47 -0
  423. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +37 -0
  424. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +37 -0
  425. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +37 -0
  426. data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +40 -0
  427. data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +43 -0
  428. data/lib/datadog/tracing/contrib/kafka/events.rb +48 -0
  429. data/lib/datadog/tracing/contrib/kafka/ext.rb +52 -0
  430. data/lib/datadog/tracing/contrib/kafka/integration.rb +44 -0
  431. data/lib/datadog/tracing/contrib/kafka/patcher.rb +29 -0
  432. data/lib/datadog/tracing/contrib/lograge/configuration/settings.rb +23 -0
  433. data/lib/datadog/tracing/contrib/lograge/ext.rb +15 -0
  434. data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +47 -0
  435. data/lib/datadog/tracing/contrib/lograge/integration.rb +50 -0
  436. data/lib/datadog/tracing/contrib/lograge/patcher.rb +29 -0
  437. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +38 -0
  438. data/lib/datadog/tracing/contrib/mongodb/ext.rb +27 -0
  439. data/lib/datadog/tracing/contrib/mongodb/instrumentation.rb +47 -0
  440. data/lib/datadog/tracing/contrib/mongodb/integration.rb +48 -0
  441. data/lib/datadog/tracing/contrib/mongodb/parsers.rb +49 -0
  442. data/lib/datadog/tracing/contrib/mongodb/patcher.rb +34 -0
  443. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +121 -0
  444. data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +35 -0
  445. data/lib/datadog/tracing/contrib/mysql2/ext.rb +22 -0
  446. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +62 -0
  447. data/lib/datadog/tracing/contrib/mysql2/integration.rb +43 -0
  448. data/lib/datadog/tracing/contrib/mysql2/patcher.rb +31 -0
  449. data/lib/datadog/tracing/contrib/patchable.rb +109 -0
  450. data/lib/datadog/tracing/contrib/patcher.rb +74 -0
  451. data/lib/datadog/tracing/contrib/pg/configuration/settings.rb +35 -0
  452. data/lib/datadog/tracing/contrib/pg/ext.rb +31 -0
  453. data/lib/datadog/tracing/contrib/pg/instrumentation.rb +129 -0
  454. data/lib/datadog/tracing/contrib/pg/integration.rb +43 -0
  455. data/lib/datadog/tracing/contrib/pg/patcher.rb +31 -0
  456. data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +35 -0
  457. data/lib/datadog/tracing/contrib/presto/ext.rb +32 -0
  458. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +125 -0
  459. data/lib/datadog/tracing/contrib/presto/integration.rb +43 -0
  460. data/lib/datadog/tracing/contrib/presto/patcher.rb +37 -0
  461. data/lib/datadog/tracing/contrib/qless/configuration/settings.rb +40 -0
  462. data/lib/datadog/tracing/contrib/qless/ext.rb +26 -0
  463. data/lib/datadog/tracing/contrib/qless/integration.rb +43 -0
  464. data/lib/datadog/tracing/contrib/qless/patcher.rb +38 -0
  465. data/lib/datadog/tracing/contrib/qless/qless_job.rb +75 -0
  466. data/lib/datadog/tracing/contrib/qless/tracer_cleaner.rb +32 -0
  467. data/lib/datadog/tracing/contrib/que/configuration/settings.rb +49 -0
  468. data/lib/datadog/tracing/contrib/que/ext.rb +34 -0
  469. data/lib/datadog/tracing/contrib/que/integration.rb +46 -0
  470. data/lib/datadog/tracing/contrib/que/patcher.rb +28 -0
  471. data/lib/datadog/tracing/contrib/que/tracer.rb +61 -0
  472. data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +35 -0
  473. data/lib/datadog/tracing/contrib/racecar/event.rb +79 -0
  474. data/lib/datadog/tracing/contrib/racecar/events/batch.rb +35 -0
  475. data/lib/datadog/tracing/contrib/racecar/events/consume.rb +35 -0
  476. data/lib/datadog/tracing/contrib/racecar/events/message.rb +35 -0
  477. data/lib/datadog/tracing/contrib/racecar/events.rb +36 -0
  478. data/lib/datadog/tracing/contrib/racecar/ext.rb +31 -0
  479. data/lib/datadog/tracing/contrib/racecar/integration.rb +44 -0
  480. data/lib/datadog/tracing/contrib/racecar/patcher.rb +29 -0
  481. data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +51 -0
  482. data/lib/datadog/tracing/contrib/rack/ext.rb +25 -0
  483. data/lib/datadog/tracing/contrib/rack/integration.rb +50 -0
  484. data/lib/datadog/tracing/contrib/rack/middlewares.rb +255 -0
  485. data/lib/datadog/tracing/contrib/rack/patcher.rb +109 -0
  486. data/lib/datadog/tracing/contrib/rack/request_queue.rb +48 -0
  487. data/lib/datadog/tracing/contrib/rails/auto_instrument_railtie.rb +12 -0
  488. data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +74 -0
  489. data/lib/datadog/tracing/contrib/rails/ext.rb +19 -0
  490. data/lib/datadog/tracing/contrib/rails/framework.rb +153 -0
  491. data/lib/datadog/tracing/contrib/rails/integration.rb +49 -0
  492. data/lib/datadog/tracing/contrib/rails/log_injection.rb +34 -0
  493. data/lib/datadog/tracing/contrib/rails/middlewares.rb +47 -0
  494. data/lib/datadog/tracing/contrib/rails/patcher.rb +121 -0
  495. data/lib/datadog/tracing/contrib/rails/railtie.rb +19 -0
  496. data/lib/datadog/tracing/contrib/rails/utils.rb +28 -0
  497. data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +36 -0
  498. data/lib/datadog/tracing/contrib/rake/ext.rb +26 -0
  499. data/lib/datadog/tracing/contrib/rake/instrumentation.rb +98 -0
  500. data/lib/datadog/tracing/contrib/rake/integration.rb +43 -0
  501. data/lib/datadog/tracing/contrib/rake/patcher.rb +34 -0
  502. data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +49 -0
  503. data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +40 -0
  504. data/lib/datadog/tracing/contrib/redis/ext.rb +26 -0
  505. data/lib/datadog/tracing/contrib/redis/instrumentation.rb +78 -0
  506. data/lib/datadog/tracing/contrib/redis/integration.rb +47 -0
  507. data/lib/datadog/tracing/contrib/redis/patcher.rb +35 -0
  508. data/lib/datadog/tracing/contrib/redis/quantize.rb +79 -0
  509. data/lib/datadog/tracing/contrib/redis/tags.rb +54 -0
  510. data/lib/datadog/tracing/contrib/redis/vendor/resolver.rb +162 -0
  511. data/lib/datadog/tracing/contrib/registerable.rb +50 -0
  512. data/lib/datadog/tracing/contrib/registry.rb +52 -0
  513. data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +37 -0
  514. data/lib/datadog/tracing/contrib/resque/ext.rb +21 -0
  515. data/lib/datadog/tracing/contrib/resque/integration.rb +48 -0
  516. data/lib/datadog/tracing/contrib/resque/patcher.rb +29 -0
  517. data/lib/datadog/tracing/contrib/resque/resque_job.rb +103 -0
  518. data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +37 -0
  519. data/lib/datadog/tracing/contrib/rest_client/ext.rb +21 -0
  520. data/lib/datadog/tracing/contrib/rest_client/integration.rb +43 -0
  521. data/lib/datadog/tracing/contrib/rest_client/patcher.rb +29 -0
  522. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +105 -0
  523. data/lib/datadog/tracing/contrib/semantic_logger/configuration/settings.rb +23 -0
  524. data/lib/datadog/tracing/contrib/semantic_logger/ext.rb +15 -0
  525. data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +51 -0
  526. data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +52 -0
  527. data/lib/datadog/tracing/contrib/semantic_logger/patcher.rb +29 -0
  528. data/lib/datadog/tracing/contrib/sequel/configuration/settings.rb +33 -0
  529. data/lib/datadog/tracing/contrib/sequel/database.rb +60 -0
  530. data/lib/datadog/tracing/contrib/sequel/dataset.rb +65 -0
  531. data/lib/datadog/tracing/contrib/sequel/ext.rb +22 -0
  532. data/lib/datadog/tracing/contrib/sequel/integration.rb +43 -0
  533. data/lib/datadog/tracing/contrib/sequel/patcher.rb +37 -0
  534. data/lib/datadog/tracing/contrib/sequel/utils.rb +87 -0
  535. data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +38 -0
  536. data/lib/datadog/tracing/contrib/shoryuken/ext.rb +25 -0
  537. data/lib/datadog/tracing/contrib/shoryuken/integration.rb +44 -0
  538. data/lib/datadog/tracing/contrib/shoryuken/patcher.rb +28 -0
  539. data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +61 -0
  540. data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +53 -0
  541. data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +44 -0
  542. data/lib/datadog/tracing/contrib/sidekiq/ext.rb +38 -0
  543. data/lib/datadog/tracing/contrib/sidekiq/integration.rb +53 -0
  544. data/lib/datadog/tracing/contrib/sidekiq/patcher.rb +71 -0
  545. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/heartbeat.rb +34 -0
  546. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/job_fetch.rb +34 -0
  547. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/scheduled_push.rb +33 -0
  548. data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +98 -0
  549. data/lib/datadog/tracing/contrib/sidekiq/tracing.rb +44 -0
  550. data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +43 -0
  551. data/lib/datadog/tracing/contrib/sinatra/env.rb +66 -0
  552. data/lib/datadog/tracing/contrib/sinatra/ext.rb +32 -0
  553. data/lib/datadog/tracing/contrib/sinatra/framework.rb +118 -0
  554. data/lib/datadog/tracing/contrib/sinatra/headers.rb +35 -0
  555. data/lib/datadog/tracing/contrib/sinatra/integration.rb +43 -0
  556. data/lib/datadog/tracing/contrib/sinatra/patcher.rb +76 -0
  557. data/lib/datadog/tracing/contrib/sinatra/tracer.rb +159 -0
  558. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +123 -0
  559. data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +38 -0
  560. data/lib/datadog/tracing/contrib/sneakers/ext.rb +26 -0
  561. data/lib/datadog/tracing/contrib/sneakers/integration.rb +46 -0
  562. data/lib/datadog/tracing/contrib/sneakers/patcher.rb +29 -0
  563. data/lib/datadog/tracing/contrib/sneakers/tracer.rb +58 -0
  564. data/lib/datadog/tracing/contrib/status_code_matcher.rb +75 -0
  565. data/lib/datadog/tracing/contrib/sucker_punch/configuration/settings.rb +35 -0
  566. data/lib/datadog/tracing/contrib/sucker_punch/exception_handler.rb +28 -0
  567. data/lib/datadog/tracing/contrib/sucker_punch/ext.rb +27 -0
  568. data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +105 -0
  569. data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +43 -0
  570. data/lib/datadog/tracing/contrib/sucker_punch/patcher.rb +37 -0
  571. data/lib/datadog/tracing/contrib/utils/database.rb +31 -0
  572. data/lib/datadog/tracing/contrib/utils/quantization/hash.rb +111 -0
  573. data/lib/datadog/tracing/contrib/utils/quantization/http.rb +99 -0
  574. data/lib/datadog/tracing/contrib.rb +77 -0
  575. data/lib/datadog/tracing/correlation.rb +100 -0
  576. data/lib/datadog/tracing/distributed/headers/b3.rb +55 -0
  577. data/lib/datadog/tracing/distributed/headers/b3_single.rb +67 -0
  578. data/lib/datadog/tracing/distributed/headers/datadog.rb +52 -0
  579. data/lib/datadog/tracing/distributed/headers/ext.rb +31 -0
  580. data/lib/datadog/tracing/distributed/headers/parser.rb +37 -0
  581. data/lib/datadog/tracing/distributed/helpers.rb +78 -0
  582. data/lib/datadog/tracing/distributed/metadata/b3.rb +55 -0
  583. data/lib/datadog/tracing/distributed/metadata/b3_single.rb +66 -0
  584. data/lib/datadog/tracing/distributed/metadata/datadog.rb +73 -0
  585. data/lib/datadog/tracing/distributed/metadata/parser.rb +34 -0
  586. data/lib/datadog/tracing/event.rb +78 -0
  587. data/lib/datadog/tracing/flush.rb +74 -0
  588. data/lib/datadog/tracing/metadata/analytics.rb +26 -0
  589. data/lib/datadog/tracing/metadata/errors.rb +24 -0
  590. data/lib/datadog/tracing/metadata/ext.rb +176 -0
  591. data/lib/datadog/tracing/metadata/tagging.rb +116 -0
  592. data/lib/datadog/tracing/metadata.rb +20 -0
  593. data/lib/datadog/tracing/pipeline/span_filter.rb +42 -0
  594. data/lib/datadog/tracing/pipeline/span_processor.rb +39 -0
  595. data/lib/datadog/tracing/pipeline.rb +65 -0
  596. data/lib/datadog/tracing/propagation/grpc.rb +98 -0
  597. data/lib/datadog/tracing/propagation/http.rb +109 -0
  598. data/lib/datadog/tracing/runtime/metrics.rb +19 -0
  599. data/lib/datadog/tracing/sampling/all_sampler.rb +25 -0
  600. data/lib/datadog/tracing/sampling/ext.rb +27 -0
  601. data/lib/datadog/tracing/sampling/matcher.rb +68 -0
  602. data/lib/datadog/tracing/sampling/priority_sampler.rb +112 -0
  603. data/lib/datadog/tracing/sampling/rate_by_key_sampler.rb +97 -0
  604. data/lib/datadog/tracing/sampling/rate_by_service_sampler.rb +41 -0
  605. data/lib/datadog/tracing/sampling/rate_limiter.rb +185 -0
  606. data/lib/datadog/tracing/sampling/rate_sampler.rb +55 -0
  607. data/lib/datadog/tracing/sampling/rule.rb +76 -0
  608. data/lib/datadog/tracing/sampling/rule_sampler.rb +131 -0
  609. data/lib/datadog/tracing/sampling/sampler.rb +44 -0
  610. data/lib/datadog/tracing/sampling/span/matcher.rb +80 -0
  611. data/lib/datadog/tracing/span.rb +232 -0
  612. data/lib/datadog/tracing/span_operation.rb +521 -0
  613. data/lib/datadog/tracing/sync_writer.rb +69 -0
  614. data/lib/datadog/tracing/trace_digest.rb +60 -0
  615. data/lib/datadog/tracing/trace_operation.rb +431 -0
  616. data/lib/datadog/tracing/trace_segment.rb +207 -0
  617. data/lib/datadog/tracing/tracer.rb +505 -0
  618. data/lib/datadog/tracing/workers/trace_writer.rb +195 -0
  619. data/lib/datadog/tracing/workers.rb +125 -0
  620. data/lib/datadog/tracing/writer.rb +180 -0
  621. data/lib/datadog/tracing.rb +142 -0
  622. data/lib/ddtrace/auto_instrument.rb +6 -2
  623. data/lib/ddtrace/auto_instrument_base.rb +1 -0
  624. data/lib/ddtrace/profiling/preload.rb +2 -2
  625. data/lib/ddtrace/transport/ext.rb +35 -0
  626. data/lib/ddtrace/transport/http/adapters/net.rb +3 -2
  627. data/lib/ddtrace/transport/http/adapters/registry.rb +1 -0
  628. data/lib/ddtrace/transport/http/adapters/test.rb +1 -0
  629. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +3 -2
  630. data/lib/ddtrace/transport/http/api/endpoint.rb +1 -0
  631. data/lib/ddtrace/transport/http/api/fallbacks.rb +1 -0
  632. data/lib/ddtrace/transport/http/api/instance.rb +1 -0
  633. data/lib/ddtrace/transport/http/api/map.rb +1 -0
  634. data/lib/ddtrace/transport/http/api/spec.rb +1 -0
  635. data/lib/ddtrace/transport/http/api.rb +5 -11
  636. data/lib/ddtrace/transport/http/builder.rb +3 -2
  637. data/lib/ddtrace/transport/http/client.rb +3 -1
  638. data/lib/ddtrace/transport/http/env.rb +1 -0
  639. data/lib/ddtrace/transport/http/response.rb +35 -4
  640. data/lib/ddtrace/transport/http/statistics.rb +1 -0
  641. data/lib/ddtrace/transport/http/traces.rb +3 -0
  642. data/lib/ddtrace/transport/http.rb +33 -28
  643. data/lib/ddtrace/transport/io/client.rb +4 -1
  644. data/lib/ddtrace/transport/io/response.rb +1 -0
  645. data/lib/ddtrace/transport/io/traces.rb +2 -1
  646. data/lib/ddtrace/transport/io.rb +3 -2
  647. data/lib/ddtrace/transport/parcel.rb +2 -0
  648. data/lib/ddtrace/transport/request.rb +1 -0
  649. data/lib/ddtrace/transport/response.rb +1 -0
  650. data/lib/ddtrace/transport/serializable_trace.rb +118 -0
  651. data/lib/ddtrace/transport/statistics.rb +6 -4
  652. data/lib/ddtrace/transport/trace_formatter.rb +187 -0
  653. data/lib/ddtrace/transport/traces.rb +15 -5
  654. data/lib/ddtrace/version.rb +15 -13
  655. data/lib/ddtrace.rb +9 -48
  656. metadata +615 -490
  657. data/.yardopts +0 -5
  658. data/lib/datadog/ci/context_flush.rb +0 -29
  659. data/lib/datadog/contrib.rb +0 -71
  660. data/lib/ddtrace/analytics.rb +0 -39
  661. data/lib/ddtrace/buffer.rb +0 -340
  662. data/lib/ddtrace/chunker.rb +0 -35
  663. data/lib/ddtrace/configuration/agent_settings_resolver.rb +0 -309
  664. data/lib/ddtrace/configuration/base.rb +0 -82
  665. data/lib/ddtrace/configuration/components.rb +0 -292
  666. data/lib/ddtrace/configuration/dependency_resolver.rb +0 -25
  667. data/lib/ddtrace/configuration/option.rb +0 -65
  668. data/lib/ddtrace/configuration/option_definition.rb +0 -122
  669. data/lib/ddtrace/configuration/option_definition_set.rb +0 -19
  670. data/lib/ddtrace/configuration/option_set.rb +0 -7
  671. data/lib/ddtrace/configuration/options.rb +0 -112
  672. data/lib/ddtrace/configuration/pin_setup.rb +0 -32
  673. data/lib/ddtrace/configuration/settings.rb +0 -413
  674. data/lib/ddtrace/configuration.rb +0 -195
  675. data/lib/ddtrace/context.rb +0 -334
  676. data/lib/ddtrace/context_flush.rb +0 -82
  677. data/lib/ddtrace/context_provider.rb +0 -62
  678. data/lib/ddtrace/contrib/action_cable/configuration/settings.rb +0 -31
  679. data/lib/ddtrace/contrib/action_cable/event.rb +0 -67
  680. data/lib/ddtrace/contrib/action_cable/events/broadcast.rb +0 -50
  681. data/lib/ddtrace/contrib/action_cable/events/perform_action.rb +0 -56
  682. data/lib/ddtrace/contrib/action_cable/events/transmit.rb +0 -51
  683. data/lib/ddtrace/contrib/action_cable/events.rb +0 -34
  684. data/lib/ddtrace/contrib/action_cable/ext.rb +0 -27
  685. data/lib/ddtrace/contrib/action_cable/instrumentation.rb +0 -78
  686. data/lib/ddtrace/contrib/action_cable/integration.rb +0 -46
  687. data/lib/ddtrace/contrib/action_cable/patcher.rb +0 -29
  688. data/lib/ddtrace/contrib/action_mailer/configuration/settings.rb +0 -32
  689. data/lib/ddtrace/contrib/action_mailer/event.rb +0 -50
  690. data/lib/ddtrace/contrib/action_mailer/events/deliver.rb +0 -54
  691. data/lib/ddtrace/contrib/action_mailer/events/process.rb +0 -41
  692. data/lib/ddtrace/contrib/action_mailer/events.rb +0 -31
  693. data/lib/ddtrace/contrib/action_mailer/ext.rb +0 -32
  694. data/lib/ddtrace/contrib/action_mailer/integration.rb +0 -45
  695. data/lib/ddtrace/contrib/action_mailer/patcher.rb +0 -27
  696. data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +0 -157
  697. data/lib/ddtrace/contrib/action_pack/action_controller/patcher.rb +0 -26
  698. data/lib/ddtrace/contrib/action_pack/configuration/settings.rb +0 -33
  699. data/lib/ddtrace/contrib/action_pack/ext.rb +0 -20
  700. data/lib/ddtrace/contrib/action_pack/integration.rb +0 -46
  701. data/lib/ddtrace/contrib/action_pack/patcher.rb +0 -24
  702. data/lib/ddtrace/contrib/action_pack/utils.rb +0 -37
  703. data/lib/ddtrace/contrib/action_view/configuration/settings.rb +0 -32
  704. data/lib/ddtrace/contrib/action_view/event.rb +0 -36
  705. data/lib/ddtrace/contrib/action_view/events/render_partial.rb +0 -47
  706. data/lib/ddtrace/contrib/action_view/events/render_template.rb +0 -50
  707. data/lib/ddtrace/contrib/action_view/events.rb +0 -31
  708. data/lib/ddtrace/contrib/action_view/ext.rb +0 -21
  709. data/lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb +0 -75
  710. data/lib/ddtrace/contrib/action_view/instrumentation/template_renderer.rb +0 -168
  711. data/lib/ddtrace/contrib/action_view/integration.rb +0 -53
  712. data/lib/ddtrace/contrib/action_view/patcher.rb +0 -48
  713. data/lib/ddtrace/contrib/action_view/utils.rb +0 -33
  714. data/lib/ddtrace/contrib/active_job/configuration/settings.rb +0 -33
  715. data/lib/ddtrace/contrib/active_job/event.rb +0 -54
  716. data/lib/ddtrace/contrib/active_job/events/discard.rb +0 -46
  717. data/lib/ddtrace/contrib/active_job/events/enqueue.rb +0 -45
  718. data/lib/ddtrace/contrib/active_job/events/enqueue_at.rb +0 -45
  719. data/lib/ddtrace/contrib/active_job/events/enqueue_retry.rb +0 -47
  720. data/lib/ddtrace/contrib/active_job/events/perform.rb +0 -45
  721. data/lib/ddtrace/contrib/active_job/events/retry_stopped.rb +0 -46
  722. data/lib/ddtrace/contrib/active_job/events.rb +0 -39
  723. data/lib/ddtrace/contrib/active_job/ext.rb +0 -32
  724. data/lib/ddtrace/contrib/active_job/integration.rb +0 -46
  725. data/lib/ddtrace/contrib/active_job/log_injection.rb +0 -21
  726. data/lib/ddtrace/contrib/active_job/patcher.rb +0 -33
  727. data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +0 -31
  728. data/lib/ddtrace/contrib/active_model_serializers/event.rb +0 -69
  729. data/lib/ddtrace/contrib/active_model_serializers/events/render.rb +0 -33
  730. data/lib/ddtrace/contrib/active_model_serializers/events/serialize.rb +0 -36
  731. data/lib/ddtrace/contrib/active_model_serializers/events.rb +0 -31
  732. data/lib/ddtrace/contrib/active_model_serializers/ext.rb +0 -21
  733. data/lib/ddtrace/contrib/active_model_serializers/integration.rb +0 -41
  734. data/lib/ddtrace/contrib/active_model_serializers/patcher.rb +0 -30
  735. data/lib/ddtrace/contrib/active_record/configuration/makara_resolver.rb +0 -31
  736. data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +0 -135
  737. data/lib/ddtrace/contrib/active_record/configuration/settings.rb +0 -36
  738. data/lib/ddtrace/contrib/active_record/event.rb +0 -31
  739. data/lib/ddtrace/contrib/active_record/events/instantiation.rb +0 -61
  740. data/lib/ddtrace/contrib/active_record/events/sql.rb +0 -69
  741. data/lib/ddtrace/contrib/active_record/events.rb +0 -31
  742. data/lib/ddtrace/contrib/active_record/ext.rb +0 -25
  743. data/lib/ddtrace/contrib/active_record/integration.rb +0 -54
  744. data/lib/ddtrace/contrib/active_record/patcher.rb +0 -24
  745. data/lib/ddtrace/contrib/active_record/utils.rb +0 -124
  746. data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +0 -259
  747. data/lib/ddtrace/contrib/active_support/cache/patcher.rb +0 -70
  748. data/lib/ddtrace/contrib/active_support/cache/redis.rb +0 -44
  749. data/lib/ddtrace/contrib/active_support/configuration/settings.rb +0 -31
  750. data/lib/ddtrace/contrib/active_support/ext.rb +0 -28
  751. data/lib/ddtrace/contrib/active_support/integration.rb +0 -47
  752. data/lib/ddtrace/contrib/active_support/notifications/event.rb +0 -76
  753. data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +0 -68
  754. data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +0 -164
  755. data/lib/ddtrace/contrib/active_support/patcher.rb +0 -24
  756. data/lib/ddtrace/contrib/analytics.rb +0 -25
  757. data/lib/ddtrace/contrib/auto_instrument.rb +0 -48
  758. data/lib/ddtrace/contrib/aws/configuration/settings.rb +0 -31
  759. data/lib/ddtrace/contrib/aws/ext.rb +0 -24
  760. data/lib/ddtrace/contrib/aws/instrumentation.rb +0 -91
  761. data/lib/ddtrace/contrib/aws/integration.rb +0 -43
  762. data/lib/ddtrace/contrib/aws/parsed_context.rb +0 -57
  763. data/lib/ddtrace/contrib/aws/patcher.rb +0 -54
  764. data/lib/ddtrace/contrib/aws/services.rb +0 -119
  765. data/lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb +0 -21
  766. data/lib/ddtrace/contrib/concurrent_ruby/context_composite_executor_service.rb +0 -42
  767. data/lib/ddtrace/contrib/concurrent_ruby/ext.rb +0 -13
  768. data/lib/ddtrace/contrib/concurrent_ruby/future_patch.rb +0 -24
  769. data/lib/ddtrace/contrib/concurrent_ruby/integration.rb +0 -39
  770. data/lib/ddtrace/contrib/concurrent_ruby/patcher.rb +0 -30
  771. data/lib/ddtrace/contrib/configurable.rb +0 -103
  772. data/lib/ddtrace/contrib/configuration/resolver.rb +0 -82
  773. data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +0 -40
  774. data/lib/ddtrace/contrib/configuration/settings.rb +0 -56
  775. data/lib/ddtrace/contrib/dalli/configuration/settings.rb +0 -31
  776. data/lib/ddtrace/contrib/dalli/ext.rb +0 -21
  777. data/lib/ddtrace/contrib/dalli/instrumentation.rb +0 -55
  778. data/lib/ddtrace/contrib/dalli/integration.rb +0 -39
  779. data/lib/ddtrace/contrib/dalli/patcher.rb +0 -26
  780. data/lib/ddtrace/contrib/dalli/quantize.rb +0 -23
  781. data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +0 -33
  782. data/lib/ddtrace/contrib/delayed_job/ext.rb +0 -24
  783. data/lib/ddtrace/contrib/delayed_job/integration.rb +0 -39
  784. data/lib/ddtrace/contrib/delayed_job/patcher.rb +0 -29
  785. data/lib/ddtrace/contrib/delayed_job/plugin.rb +0 -85
  786. data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +0 -32
  787. data/lib/ddtrace/contrib/elasticsearch/ext.rb +0 -23
  788. data/lib/ddtrace/contrib/elasticsearch/integration.rb +0 -40
  789. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +0 -123
  790. data/lib/ddtrace/contrib/elasticsearch/quantize.rb +0 -84
  791. data/lib/ddtrace/contrib/ethon/configuration/settings.rb +0 -33
  792. data/lib/ddtrace/contrib/ethon/easy_patch.rb +0 -152
  793. data/lib/ddtrace/contrib/ethon/ext.rb +0 -20
  794. data/lib/ddtrace/contrib/ethon/integration.rb +0 -44
  795. data/lib/ddtrace/contrib/ethon/multi_patch.rb +0 -85
  796. data/lib/ddtrace/contrib/ethon/patcher.rb +0 -27
  797. data/lib/ddtrace/contrib/excon/configuration/settings.rb +0 -34
  798. data/lib/ddtrace/contrib/excon/ext.rb +0 -18
  799. data/lib/ddtrace/contrib/excon/integration.rb +0 -44
  800. data/lib/ddtrace/contrib/excon/middleware.rb +0 -164
  801. data/lib/ddtrace/contrib/excon/patcher.rb +0 -28
  802. data/lib/ddtrace/contrib/extensions.rb +0 -169
  803. data/lib/ddtrace/contrib/faraday/configuration/settings.rb +0 -39
  804. data/lib/ddtrace/contrib/faraday/connection.rb +0 -19
  805. data/lib/ddtrace/contrib/faraday/ext.rb +0 -18
  806. data/lib/ddtrace/contrib/faraday/integration.rb +0 -44
  807. data/lib/ddtrace/contrib/faraday/middleware.rb +0 -86
  808. data/lib/ddtrace/contrib/faraday/patcher.rb +0 -54
  809. data/lib/ddtrace/contrib/faraday/rack_builder.rb +0 -19
  810. data/lib/ddtrace/contrib/grape/configuration/settings.rb +0 -39
  811. data/lib/ddtrace/contrib/grape/endpoint.rb +0 -246
  812. data/lib/ddtrace/contrib/grape/ext.rb +0 -24
  813. data/lib/ddtrace/contrib/grape/instrumentation.rb +0 -34
  814. data/lib/ddtrace/contrib/grape/integration.rb +0 -40
  815. data/lib/ddtrace/contrib/grape/patcher.rb +0 -32
  816. data/lib/ddtrace/contrib/graphql/configuration/settings.rb +0 -33
  817. data/lib/ddtrace/contrib/graphql/ext.rb +0 -17
  818. data/lib/ddtrace/contrib/graphql/integration.rb +0 -40
  819. data/lib/ddtrace/contrib/graphql/patcher.rb +0 -61
  820. data/lib/ddtrace/contrib/grpc/configuration/settings.rb +0 -32
  821. data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +0 -59
  822. data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +0 -80
  823. data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +0 -79
  824. data/lib/ddtrace/contrib/grpc/ext.rb +0 -19
  825. data/lib/ddtrace/contrib/grpc/integration.rb +0 -39
  826. data/lib/ddtrace/contrib/grpc/intercept_with_datadog.rb +0 -50
  827. data/lib/ddtrace/contrib/grpc/patcher.rb +0 -34
  828. data/lib/ddtrace/contrib/http/circuit_breaker.rb +0 -38
  829. data/lib/ddtrace/contrib/http/configuration/settings.rb +0 -33
  830. data/lib/ddtrace/contrib/http/ext.rb +0 -18
  831. data/lib/ddtrace/contrib/http/instrumentation.rb +0 -180
  832. data/lib/ddtrace/contrib/http/integration.rb +0 -46
  833. data/lib/ddtrace/contrib/http/patcher.rb +0 -27
  834. data/lib/ddtrace/contrib/http_annotation_helper.rb +0 -11
  835. data/lib/ddtrace/contrib/httpclient/configuration/settings.rb +0 -33
  836. data/lib/ddtrace/contrib/httpclient/ext.rb +0 -18
  837. data/lib/ddtrace/contrib/httpclient/instrumentation.rb +0 -148
  838. data/lib/ddtrace/contrib/httpclient/integration.rb +0 -44
  839. data/lib/ddtrace/contrib/httpclient/patcher.rb +0 -39
  840. data/lib/ddtrace/contrib/httprb/configuration/settings.rb +0 -33
  841. data/lib/ddtrace/contrib/httprb/ext.rb +0 -18
  842. data/lib/ddtrace/contrib/httprb/instrumentation.rb +0 -158
  843. data/lib/ddtrace/contrib/httprb/integration.rb +0 -44
  844. data/lib/ddtrace/contrib/httprb/patcher.rb +0 -39
  845. data/lib/ddtrace/contrib/integration.rb +0 -17
  846. data/lib/ddtrace/contrib/kafka/configuration/settings.rb +0 -31
  847. data/lib/ddtrace/contrib/kafka/consumer_event.rb +0 -15
  848. data/lib/ddtrace/contrib/kafka/consumer_group_event.rb +0 -15
  849. data/lib/ddtrace/contrib/kafka/event.rb +0 -52
  850. data/lib/ddtrace/contrib/kafka/events/connection/request.rb +0 -35
  851. data/lib/ddtrace/contrib/kafka/events/consumer/process_batch.rb +0 -42
  852. data/lib/ddtrace/contrib/kafka/events/consumer/process_message.rb +0 -40
  853. data/lib/ddtrace/contrib/kafka/events/consumer_group/heartbeat.rb +0 -40
  854. data/lib/ddtrace/contrib/kafka/events/consumer_group/join_group.rb +0 -30
  855. data/lib/ddtrace/contrib/kafka/events/consumer_group/leave_group.rb +0 -30
  856. data/lib/ddtrace/contrib/kafka/events/consumer_group/sync_group.rb +0 -30
  857. data/lib/ddtrace/contrib/kafka/events/produce_operation/send_messages.rb +0 -33
  858. data/lib/ddtrace/contrib/kafka/events/producer/deliver_messages.rb +0 -36
  859. data/lib/ddtrace/contrib/kafka/events.rb +0 -45
  860. data/lib/ddtrace/contrib/kafka/ext.rb +0 -42
  861. data/lib/ddtrace/contrib/kafka/integration.rb +0 -40
  862. data/lib/ddtrace/contrib/kafka/patcher.rb +0 -27
  863. data/lib/ddtrace/contrib/lograge/configuration/settings.rb +0 -19
  864. data/lib/ddtrace/contrib/lograge/ext.rb +0 -11
  865. data/lib/ddtrace/contrib/lograge/instrumentation.rb +0 -39
  866. data/lib/ddtrace/contrib/lograge/integration.rb +0 -46
  867. data/lib/ddtrace/contrib/lograge/patcher.rb +0 -26
  868. data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +0 -34
  869. data/lib/ddtrace/contrib/mongodb/ext.rb +0 -24
  870. data/lib/ddtrace/contrib/mongodb/instrumentation.rb +0 -70
  871. data/lib/ddtrace/contrib/mongodb/integration.rb +0 -44
  872. data/lib/ddtrace/contrib/mongodb/parsers.rb +0 -69
  873. data/lib/ddtrace/contrib/mongodb/patcher.rb +0 -32
  874. data/lib/ddtrace/contrib/mongodb/subscribers.rb +0 -112
  875. data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +0 -31
  876. data/lib/ddtrace/contrib/mysql2/ext.rb +0 -19
  877. data/lib/ddtrace/contrib/mysql2/instrumentation.rb +0 -65
  878. data/lib/ddtrace/contrib/mysql2/integration.rb +0 -39
  879. data/lib/ddtrace/contrib/mysql2/patcher.rb +0 -28
  880. data/lib/ddtrace/contrib/patchable.rb +0 -71
  881. data/lib/ddtrace/contrib/patcher.rb +0 -66
  882. data/lib/ddtrace/contrib/presto/configuration/settings.rb +0 -31
  883. data/lib/ddtrace/contrib/presto/ext.rb +0 -29
  884. data/lib/ddtrace/contrib/presto/instrumentation.rb +0 -111
  885. data/lib/ddtrace/contrib/presto/integration.rb +0 -39
  886. data/lib/ddtrace/contrib/presto/patcher.rb +0 -34
  887. data/lib/ddtrace/contrib/qless/configuration/settings.rb +0 -36
  888. data/lib/ddtrace/contrib/qless/ext.rb +0 -21
  889. data/lib/ddtrace/contrib/qless/integration.rb +0 -39
  890. data/lib/ddtrace/contrib/qless/patcher.rb +0 -35
  891. data/lib/ddtrace/contrib/qless/qless_job.rb +0 -74
  892. data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +0 -34
  893. data/lib/ddtrace/contrib/que/configuration/settings.rb +0 -44
  894. data/lib/ddtrace/contrib/que/ext.rb +0 -31
  895. data/lib/ddtrace/contrib/que/integration.rb +0 -43
  896. data/lib/ddtrace/contrib/que/patcher.rb +0 -25
  897. data/lib/ddtrace/contrib/que/tracer.rb +0 -58
  898. data/lib/ddtrace/contrib/racecar/configuration/settings.rb +0 -31
  899. data/lib/ddtrace/contrib/racecar/event.rb +0 -77
  900. data/lib/ddtrace/contrib/racecar/events/batch.rb +0 -28
  901. data/lib/ddtrace/contrib/racecar/events/consume.rb +0 -28
  902. data/lib/ddtrace/contrib/racecar/events/message.rb +0 -28
  903. data/lib/ddtrace/contrib/racecar/events.rb +0 -33
  904. data/lib/ddtrace/contrib/racecar/ext.rb +0 -26
  905. data/lib/ddtrace/contrib/racecar/integration.rb +0 -40
  906. data/lib/ddtrace/contrib/racecar/patcher.rb +0 -27
  907. data/lib/ddtrace/contrib/rack/configuration/settings.rb +0 -47
  908. data/lib/ddtrace/contrib/rack/ext.rb +0 -22
  909. data/lib/ddtrace/contrib/rack/integration.rb +0 -46
  910. data/lib/ddtrace/contrib/rack/middlewares.rb +0 -288
  911. data/lib/ddtrace/contrib/rack/patcher.rb +0 -106
  912. data/lib/ddtrace/contrib/rack/request_queue.rb +0 -45
  913. data/lib/ddtrace/contrib/rails/auto_instrument_railtie.rb +0 -10
  914. data/lib/ddtrace/contrib/rails/configuration/settings.rb +0 -101
  915. data/lib/ddtrace/contrib/rails/ext.rb +0 -18
  916. data/lib/ddtrace/contrib/rails/framework.rb +0 -172
  917. data/lib/ddtrace/contrib/rails/integration.rb +0 -45
  918. data/lib/ddtrace/contrib/rails/log_injection.rb +0 -42
  919. data/lib/ddtrace/contrib/rails/middlewares.rb +0 -44
  920. data/lib/ddtrace/contrib/rails/patcher.rb +0 -119
  921. data/lib/ddtrace/contrib/rails/railtie.rb +0 -18
  922. data/lib/ddtrace/contrib/rails/utils.rb +0 -25
  923. data/lib/ddtrace/contrib/rake/configuration/settings.rb +0 -32
  924. data/lib/ddtrace/contrib/rake/ext.rb +0 -22
  925. data/lib/ddtrace/contrib/rake/instrumentation.rb +0 -91
  926. data/lib/ddtrace/contrib/rake/integration.rb +0 -39
  927. data/lib/ddtrace/contrib/rake/patcher.rb +0 -31
  928. data/lib/ddtrace/contrib/redis/configuration/resolver.rb +0 -46
  929. data/lib/ddtrace/contrib/redis/configuration/settings.rb +0 -36
  930. data/lib/ddtrace/contrib/redis/ext.rb +0 -23
  931. data/lib/ddtrace/contrib/redis/instrumentation.rb +0 -90
  932. data/lib/ddtrace/contrib/redis/integration.rb +0 -43
  933. data/lib/ddtrace/contrib/redis/patcher.rb +0 -33
  934. data/lib/ddtrace/contrib/redis/quantize.rb +0 -76
  935. data/lib/ddtrace/contrib/redis/tags.rb +0 -47
  936. data/lib/ddtrace/contrib/redis/vendor/resolver.rb +0 -159
  937. data/lib/ddtrace/contrib/registerable.rb +0 -33
  938. data/lib/ddtrace/contrib/registry.rb +0 -43
  939. data/lib/ddtrace/contrib/resque/configuration/settings.rb +0 -49
  940. data/lib/ddtrace/contrib/resque/ext.rb +0 -18
  941. data/lib/ddtrace/contrib/resque/integration.rb +0 -44
  942. data/lib/ddtrace/contrib/resque/patcher.rb +0 -30
  943. data/lib/ddtrace/contrib/resque/resque_job.rb +0 -104
  944. data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +0 -32
  945. data/lib/ddtrace/contrib/rest_client/ext.rb +0 -18
  946. data/lib/ddtrace/contrib/rest_client/integration.rb +0 -39
  947. data/lib/ddtrace/contrib/rest_client/patcher.rb +0 -25
  948. data/lib/ddtrace/contrib/rest_client/request_patch.rb +0 -92
  949. data/lib/ddtrace/contrib/semantic_logger/configuration/settings.rb +0 -19
  950. data/lib/ddtrace/contrib/semantic_logger/ext.rb +0 -11
  951. data/lib/ddtrace/contrib/semantic_logger/instrumentation.rb +0 -43
  952. data/lib/ddtrace/contrib/semantic_logger/integration.rb +0 -48
  953. data/lib/ddtrace/contrib/semantic_logger/patcher.rb +0 -26
  954. data/lib/ddtrace/contrib/sequel/configuration/settings.rb +0 -29
  955. data/lib/ddtrace/contrib/sequel/database.rb +0 -64
  956. data/lib/ddtrace/contrib/sequel/dataset.rb +0 -64
  957. data/lib/ddtrace/contrib/sequel/ext.rb +0 -20
  958. data/lib/ddtrace/contrib/sequel/integration.rb +0 -39
  959. data/lib/ddtrace/contrib/sequel/patcher.rb +0 -34
  960. data/lib/ddtrace/contrib/sequel/utils.rb +0 -75
  961. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +0 -32
  962. data/lib/ddtrace/contrib/shoryuken/ext.rb +0 -22
  963. data/lib/ddtrace/contrib/shoryuken/integration.rb +0 -40
  964. data/lib/ddtrace/contrib/shoryuken/patcher.rb +0 -25
  965. data/lib/ddtrace/contrib/shoryuken/tracer.rb +0 -56
  966. data/lib/ddtrace/contrib/sidekiq/client_tracer.rb +0 -44
  967. data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +0 -38
  968. data/lib/ddtrace/contrib/sidekiq/ext.rb +0 -31
  969. data/lib/ddtrace/contrib/sidekiq/integration.rb +0 -49
  970. data/lib/ddtrace/contrib/sidekiq/patcher.rb +0 -68
  971. data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/heartbeat.rb +0 -30
  972. data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/job_fetch.rb +0 -30
  973. data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/scheduled_push.rb +0 -29
  974. data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +0 -66
  975. data/lib/ddtrace/contrib/sidekiq/tracing.rb +0 -45
  976. data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +0 -40
  977. data/lib/ddtrace/contrib/sinatra/env.rb +0 -59
  978. data/lib/ddtrace/contrib/sinatra/ext.rb +0 -28
  979. data/lib/ddtrace/contrib/sinatra/headers.rb +0 -30
  980. data/lib/ddtrace/contrib/sinatra/integration.rb +0 -39
  981. data/lib/ddtrace/contrib/sinatra/patcher.rb +0 -30
  982. data/lib/ddtrace/contrib/sinatra/tracer.rb +0 -150
  983. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +0 -112
  984. data/lib/ddtrace/contrib/sneakers/configuration/settings.rb +0 -34
  985. data/lib/ddtrace/contrib/sneakers/ext.rb +0 -23
  986. data/lib/ddtrace/contrib/sneakers/integration.rb +0 -42
  987. data/lib/ddtrace/contrib/sneakers/patcher.rb +0 -25
  988. data/lib/ddtrace/contrib/sneakers/tracer.rb +0 -54
  989. data/lib/ddtrace/contrib/status_code_matcher.rb +0 -70
  990. data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +0 -31
  991. data/lib/ddtrace/contrib/sucker_punch/exception_handler.rb +0 -25
  992. data/lib/ddtrace/contrib/sucker_punch/ext.rb +0 -22
  993. data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +0 -89
  994. data/lib/ddtrace/contrib/sucker_punch/integration.rb +0 -39
  995. data/lib/ddtrace/contrib/sucker_punch/patcher.rb +0 -44
  996. data/lib/ddtrace/correlation.rb +0 -40
  997. data/lib/ddtrace/diagnostics/environment_logger.rb +0 -280
  998. data/lib/ddtrace/diagnostics/health.rb +0 -34
  999. data/lib/ddtrace/distributed_tracing/headers/b3.rb +0 -45
  1000. data/lib/ddtrace/distributed_tracing/headers/b3_single.rb +0 -57
  1001. data/lib/ddtrace/distributed_tracing/headers/datadog.rb +0 -43
  1002. data/lib/ddtrace/distributed_tracing/headers/headers.rb +0 -72
  1003. data/lib/ddtrace/distributed_tracing/headers/helpers.rb +0 -44
  1004. data/lib/ddtrace/encoding.rb +0 -72
  1005. data/lib/ddtrace/error.rb +0 -97
  1006. data/lib/ddtrace/event.rb +0 -53
  1007. data/lib/ddtrace/ext/analytics.rb +0 -13
  1008. data/lib/ddtrace/ext/app_types.rb +0 -12
  1009. data/lib/ddtrace/ext/correlation.rb +0 -12
  1010. data/lib/ddtrace/ext/diagnostics.rb +0 -37
  1011. data/lib/ddtrace/ext/distributed.rb +0 -40
  1012. data/lib/ddtrace/ext/environment.rb +0 -24
  1013. data/lib/ddtrace/ext/errors.rb +0 -11
  1014. data/lib/ddtrace/ext/forced_tracing.rb +0 -26
  1015. data/lib/ddtrace/ext/git.rb +0 -32
  1016. data/lib/ddtrace/ext/http.rb +0 -47
  1017. data/lib/ddtrace/ext/integration.rb +0 -9
  1018. data/lib/ddtrace/ext/manual_tracing.rb +0 -10
  1019. data/lib/ddtrace/ext/metrics.rb +0 -16
  1020. data/lib/ddtrace/ext/net.rb +0 -11
  1021. data/lib/ddtrace/ext/priority.rb +0 -19
  1022. data/lib/ddtrace/ext/profiling.rb +0 -53
  1023. data/lib/ddtrace/ext/runtime.rb +0 -25
  1024. data/lib/ddtrace/ext/sampling.rb +0 -17
  1025. data/lib/ddtrace/ext/sql.rb +0 -9
  1026. data/lib/ddtrace/ext/test.rb +0 -9
  1027. data/lib/ddtrace/ext/transport.rb +0 -32
  1028. data/lib/ddtrace/forced_tracing.rb +0 -39
  1029. data/lib/ddtrace/logger.rb +0 -41
  1030. data/lib/ddtrace/metrics.rb +0 -282
  1031. data/lib/ddtrace/opentelemetry/extensions.rb +0 -14
  1032. data/lib/ddtrace/opentelemetry/span.rb +0 -34
  1033. data/lib/ddtrace/opentracer/binary_propagator.rb +0 -25
  1034. data/lib/ddtrace/opentracer/carrier.rb +0 -7
  1035. data/lib/ddtrace/opentracer/distributed_headers.rb +0 -56
  1036. data/lib/ddtrace/opentracer/global_tracer.rb +0 -16
  1037. data/lib/ddtrace/opentracer/propagator.rb +0 -23
  1038. data/lib/ddtrace/opentracer/rack_propagator.rb +0 -61
  1039. data/lib/ddtrace/opentracer/scope.rb +0 -16
  1040. data/lib/ddtrace/opentracer/scope_manager.rb +0 -7
  1041. data/lib/ddtrace/opentracer/span.rb +0 -95
  1042. data/lib/ddtrace/opentracer/span_context.rb +0 -15
  1043. data/lib/ddtrace/opentracer/span_context_factory.rb +0 -24
  1044. data/lib/ddtrace/opentracer/text_map_propagator.rb +0 -76
  1045. data/lib/ddtrace/opentracer/thread_local_scope.rb +0 -32
  1046. data/lib/ddtrace/opentracer/thread_local_scope_manager.rb +0 -41
  1047. data/lib/ddtrace/opentracer/tracer.rb +0 -209
  1048. data/lib/ddtrace/opentracer.rb +0 -22
  1049. data/lib/ddtrace/patcher.rb +0 -69
  1050. data/lib/ddtrace/pin.rb +0 -86
  1051. data/lib/ddtrace/pipeline/span_filter.rb +0 -39
  1052. data/lib/ddtrace/pipeline/span_processor.rb +0 -21
  1053. data/lib/ddtrace/pipeline.rb +0 -47
  1054. data/lib/ddtrace/profiling/backtrace_location.rb +0 -33
  1055. data/lib/ddtrace/profiling/buffer.rb +0 -42
  1056. data/lib/ddtrace/profiling/collectors/stack.rb +0 -297
  1057. data/lib/ddtrace/profiling/encoding/profile.rb +0 -46
  1058. data/lib/ddtrace/profiling/event.rb +0 -14
  1059. data/lib/ddtrace/profiling/events/stack.rb +0 -81
  1060. data/lib/ddtrace/profiling/exporter.rb +0 -24
  1061. data/lib/ddtrace/profiling/ext/forking.rb +0 -98
  1062. data/lib/ddtrace/profiling/flush.rb +0 -44
  1063. data/lib/ddtrace/profiling/native_extension.rb +0 -40
  1064. data/lib/ddtrace/profiling/pprof/builder.rb +0 -126
  1065. data/lib/ddtrace/profiling/pprof/converter.rb +0 -103
  1066. data/lib/ddtrace/profiling/pprof/message_set.rb +0 -15
  1067. data/lib/ddtrace/profiling/pprof/payload.rb +0 -19
  1068. data/lib/ddtrace/profiling/pprof/pprof_pb.rb +0 -82
  1069. data/lib/ddtrace/profiling/pprof/stack_sample.rb +0 -140
  1070. data/lib/ddtrace/profiling/pprof/string_table.rb +0 -11
  1071. data/lib/ddtrace/profiling/pprof/template.rb +0 -119
  1072. data/lib/ddtrace/profiling/profiler.rb +0 -31
  1073. data/lib/ddtrace/profiling/recorder.rb +0 -96
  1074. data/lib/ddtrace/profiling/scheduler.rb +0 -150
  1075. data/lib/ddtrace/profiling/tasks/setup.rb +0 -90
  1076. data/lib/ddtrace/profiling/trace_identifiers/ddtrace.rb +0 -42
  1077. data/lib/ddtrace/profiling/trace_identifiers/helper.rb +0 -46
  1078. data/lib/ddtrace/profiling/transport/client.rb +0 -15
  1079. data/lib/ddtrace/profiling/transport/http/api/endpoint.rb +0 -94
  1080. data/lib/ddtrace/profiling/transport/http/api/instance.rb +0 -37
  1081. data/lib/ddtrace/profiling/transport/http/api/spec.rb +0 -41
  1082. data/lib/ddtrace/profiling/transport/http/api.rb +0 -44
  1083. data/lib/ddtrace/profiling/transport/http/builder.rb +0 -29
  1084. data/lib/ddtrace/profiling/transport/http/client.rb +0 -34
  1085. data/lib/ddtrace/profiling/transport/http/response.rb +0 -22
  1086. data/lib/ddtrace/profiling/transport/http.rb +0 -111
  1087. data/lib/ddtrace/profiling/transport/io/client.rb +0 -28
  1088. data/lib/ddtrace/profiling/transport/io/response.rb +0 -17
  1089. data/lib/ddtrace/profiling/transport/io.rb +0 -31
  1090. data/lib/ddtrace/profiling/transport/parcel.rb +0 -18
  1091. data/lib/ddtrace/profiling/transport/request.rb +0 -16
  1092. data/lib/ddtrace/profiling/transport/response.rb +0 -9
  1093. data/lib/ddtrace/profiling.rb +0 -149
  1094. data/lib/ddtrace/propagation/grpc_propagator.rb +0 -75
  1095. data/lib/ddtrace/propagation/http_propagator.rb +0 -91
  1096. data/lib/ddtrace/quantization/hash.rb +0 -104
  1097. data/lib/ddtrace/quantization/http.rb +0 -90
  1098. data/lib/ddtrace/runtime/metrics.rb +0 -135
  1099. data/lib/ddtrace/sampler.rb +0 -303
  1100. data/lib/ddtrace/sampling/matcher.rb +0 -58
  1101. data/lib/ddtrace/sampling/rate_limiter.rb +0 -177
  1102. data/lib/ddtrace/sampling/rule.rb +0 -62
  1103. data/lib/ddtrace/sampling/rule_sampler.rb +0 -133
  1104. data/lib/ddtrace/sampling.rb +0 -3
  1105. data/lib/ddtrace/span.rb +0 -445
  1106. data/lib/ddtrace/sync_writer.rb +0 -69
  1107. data/lib/ddtrace/tasks/exec.rb +0 -47
  1108. data/lib/ddtrace/tasks/help.rb +0 -15
  1109. data/lib/ddtrace/tracer.rb +0 -449
  1110. data/lib/ddtrace/utils/compression.rb +0 -28
  1111. data/lib/ddtrace/utils/database.rb +0 -26
  1112. data/lib/ddtrace/utils/forking.rb +0 -53
  1113. data/lib/ddtrace/utils/object_set.rb +0 -40
  1114. data/lib/ddtrace/utils/only_once.rb +0 -41
  1115. data/lib/ddtrace/utils/sequence.rb +0 -18
  1116. data/lib/ddtrace/utils/string_table.rb +0 -46
  1117. data/lib/ddtrace/utils/time.rb +0 -51
  1118. data/lib/ddtrace/utils.rb +0 -80
  1119. data/lib/ddtrace/vendor/active_record/connection_specification.rb +0 -302
  1120. data/lib/ddtrace/vendor/multipart-post/multipart/post/composite_read_io.rb +0 -117
  1121. data/lib/ddtrace/vendor/multipart-post/multipart/post/multipartable.rb +0 -58
  1122. data/lib/ddtrace/vendor/multipart-post/multipart/post/parts.rb +0 -136
  1123. data/lib/ddtrace/vendor/multipart-post/multipart/post/version.rb +0 -10
  1124. data/lib/ddtrace/vendor/multipart-post/multipart/post.rb +0 -9
  1125. data/lib/ddtrace/vendor/multipart-post/multipart.rb +0 -13
  1126. data/lib/ddtrace/vendor/multipart-post/net/http/post/multipart.rb +0 -33
  1127. data/lib/ddtrace/worker.rb +0 -21
  1128. data/lib/ddtrace/workers/async.rb +0 -175
  1129. data/lib/ddtrace/workers/interval_loop.rb +0 -116
  1130. data/lib/ddtrace/workers/polling.rb +0 -56
  1131. data/lib/ddtrace/workers/queue.rb +0 -41
  1132. data/lib/ddtrace/workers/runtime_metrics.rb +0 -65
  1133. data/lib/ddtrace/workers/trace_writer.rb +0 -200
  1134. data/lib/ddtrace/workers.rb +0 -123
  1135. data/lib/ddtrace/writer.rb +0 -200
  1136. /data/lib/{ddtrace → datadog/core}/vendor/multipart-post/LICENSE +0 -0
  1137. /data/lib/{ddtrace → datadog}/profiling/pprof/pprof.proto +0 -0
  1138. /data/lib/{ddtrace/vendor/active_record → datadog/tracing/contrib/active_record/vendor}/MIT-LICENSE +0 -0
  1139. /data/lib/{ddtrace → datadog/tracing}/contrib/redis/vendor/LICENSE +0 -0
@@ -1,334 +0,0 @@
1
- # typed: true
2
- require 'ddtrace/diagnostics/health'
3
-
4
- require 'ddtrace/context_flush'
5
- require 'ddtrace/context_provider'
6
- require 'ddtrace/utils/forking'
7
-
8
- module Datadog
9
- # \Context is used to keep track of a hierarchy of spans for the current
10
- # execution flow. During each logical execution, the same \Context is
11
- # used to represent a single logical trace, even if the trace is built
12
- # asynchronously.
13
- #
14
- # A single code execution may use multiple \Context if part of the execution
15
- # must not be related to the current tracing. As example, a delayed job may
16
- # compose a standalone trace instead of being related to the same trace that
17
- # generates the job itself. On the other hand, if it's part of the same
18
- # \Context, it will be related to the original trace.
19
- #
20
- # This data structure is thread-safe.
21
- # rubocop:disable Metrics/ClassLength
22
- class Context
23
- include Datadog::Utils::Forking
24
-
25
- # 100k spans is about a 100Mb footprint
26
- DEFAULT_MAX_LENGTH = 100_000
27
-
28
- attr_reader :max_length
29
-
30
- # Initialize a new thread-safe \Context.
31
- def initialize(options = {})
32
- @mutex = Mutex.new
33
- # max_length is the amount of spans above which, for a given trace,
34
- # the context will simply drop and ignore spans, avoiding high memory usage.
35
- @max_length = options.fetch(:max_length, DEFAULT_MAX_LENGTH)
36
- reset(options)
37
- end
38
-
39
- def trace_id
40
- @mutex.synchronize do
41
- @parent_trace_id
42
- end
43
- end
44
-
45
- def span_id
46
- @mutex.synchronize do
47
- @parent_span_id
48
- end
49
- end
50
-
51
- def sampling_priority
52
- @mutex.synchronize do
53
- @sampling_priority
54
- end
55
- end
56
-
57
- def sampling_priority=(priority)
58
- @mutex.synchronize do
59
- @sampling_priority = priority
60
- end
61
- end
62
-
63
- def origin
64
- @mutex.synchronize do
65
- @origin
66
- end
67
- end
68
-
69
- def origin=(origin)
70
- @mutex.synchronize do
71
- @origin = origin
72
- end
73
- end
74
-
75
- # Return the last active span that corresponds to the last inserted
76
- # item in the trace list. This cannot be considered as the current active
77
- # span in asynchronous environments, because some spans can be closed
78
- # earlier while child spans still need to finish their traced execution.
79
- def current_span
80
- @mutex.synchronize do
81
- @current_span
82
- end
83
- end
84
-
85
- def current_root_span
86
- @mutex.synchronize do
87
- @current_root_span
88
- end
89
- end
90
-
91
- # Same as calling #current_span and #current_root_span, but works atomically thus preventing races when we need to
92
- # retrieve both
93
- def current_span_and_root_span
94
- @mutex.synchronize do
95
- [@current_span, @current_root_span]
96
- end
97
- end
98
-
99
- # Add a span to the context trace list, keeping it as the last active span.
100
- def add_span(span)
101
- @mutex.synchronize do
102
- # If hitting the hard limit, just drop spans. This is really a rare case
103
- # as it means despite the soft limit, the hard limit is reached, so the trace
104
- # by default has 10000 spans, all of which belong to unfinished parts of a
105
- # larger trace. This is a catch-all to reduce global memory usage.
106
- if @max_length > 0 && @trace.length >= @max_length
107
- # Detach the span from any context, it's being dropped and ignored.
108
- span.context = nil
109
- Datadog.logger.debug("context full, ignoring span #{span.name}")
110
-
111
- # If overflow has already occurred, don't send this metric.
112
- # Prevents metrics spam if buffer repeatedly overflows for the same trace.
113
- unless @overflow
114
- Datadog.health_metrics.error_context_overflow(1, tags: ["max_length:#{@max_length}"])
115
- @overflow = true
116
- end
117
-
118
- return
119
- end
120
- set_current_span(span)
121
- @current_root_span = span if @trace.empty?
122
- @trace << span
123
- span.context = self
124
- end
125
- end
126
-
127
- # Mark a span as a finished, increasing the internal counter to prevent
128
- # cycles inside _trace list.
129
- def close_span(span)
130
- @mutex.synchronize do
131
- @finished_spans += 1
132
- # Current span is only meaningful for linear tree-like traces,
133
- # in other cases, this is just broken and one should rely
134
- # on per-instrumentation code to retrieve handle parent/child relations.
135
- set_current_span(span.parent)
136
- return if span.tracer.nil?
137
-
138
- if span.parent.nil? && !all_spans_finished?
139
- if Datadog.configuration.diagnostics.debug
140
- opened_spans = @trace.length - @finished_spans
141
- Datadog.logger.debug("root span #{span.name} closed but has #{opened_spans} unfinished spans:")
142
- end
143
-
144
- @trace.reject(&:finished?).group_by(&:name).each do |unfinished_span_name, unfinished_spans|
145
- Datadog.logger.debug("unfinished span: #{unfinished_spans.first}") if Datadog.configuration.diagnostics.debug
146
- Datadog.health_metrics.error_unfinished_spans(
147
- unfinished_spans.length,
148
- tags: ["name:#{unfinished_span_name}"]
149
- )
150
- end
151
- end
152
- end
153
- end
154
-
155
- # Returns if the trace for the current Context is finished or not. A \Context
156
- # is considered finished if all spans in this context are finished.
157
- def finished?
158
- @mutex.synchronize do
159
- return all_spans_finished?
160
- end
161
- end
162
-
163
- # @@return [Numeric] numbers of finished spans
164
- def finished_span_count
165
- @mutex.synchronize do
166
- @finished_spans
167
- end
168
- end
169
-
170
- # Returns true if the context is sampled, that is, if it should be kept
171
- # and sent to the trace agent.
172
- def sampled?
173
- @mutex.synchronize do
174
- return @sampled
175
- end
176
- end
177
-
178
- # Returns both the trace list generated in the current context and
179
- # if the context is sampled or not.
180
- #
181
- # It returns +[nil,@sampled]+ if the \Context is
182
- # not finished.
183
- #
184
- # If a trace is returned, the \Context will be reset so that it
185
- # can be re-used immediately.
186
- #
187
- # This operation is thread-safe.
188
- #
189
- # @return [Array<Array<Span>, Boolean>] finished trace and sampled flag
190
- def get
191
- @mutex.synchronize do
192
- trace = @trace
193
- sampled = @sampled
194
-
195
- # still return sampled attribute, even if context is not finished
196
- return nil, sampled unless all_spans_finished?
197
-
198
- # Root span is finished at this point, we can configure it
199
- annotate_for_flush!(@current_root_span)
200
-
201
- # Allow caller to modify trace before context is reset
202
- yield(trace) if block_given?
203
-
204
- reset
205
- [trace, sampled]
206
- end
207
- end
208
-
209
- # Delete any span matching the condition. This is thread safe.
210
- #
211
- # @return [Array<Span>] deleted spans
212
- def delete_span_if
213
- @mutex.synchronize do
214
- [].tap do |deleted_spans|
215
- @trace.delete_if do |span|
216
- finished = span.finished?
217
-
218
- next unless yield span
219
-
220
- deleted_spans << span
221
-
222
- # We need to detach the span from the context, else, some code
223
- # finishing it afterwards would mess up with the number of
224
- # finished_spans and possibly cause other side effects.
225
- span.context = nil
226
- # Acknowledge there's one span less to finish, if needed.
227
- # It's very important to keep this balanced.
228
- @finished_spans -= 1 if finished
229
-
230
- true
231
- end
232
- end
233
- end
234
- end
235
-
236
- # Set tags to root span required for flush
237
- def annotate_for_flush!(span)
238
- attach_sampling_priority(span) if @sampled && @sampling_priority
239
- attach_origin(span) if @origin
240
- end
241
-
242
- def attach_sampling_priority(span)
243
- span.set_metric(
244
- Ext::DistributedTracing::SAMPLING_PRIORITY_KEY,
245
- @sampling_priority
246
- )
247
- end
248
-
249
- def attach_origin(span)
250
- span.set_tag(
251
- Ext::DistributedTracing::ORIGIN_KEY,
252
- @origin
253
- )
254
- end
255
-
256
- # Return a string representation of the context.
257
- def to_s
258
- @mutex.synchronize do
259
- # rubocop:disable Layout/LineLength
260
- "Context(trace.length:#{@trace.length},sampled:#{@sampled},finished_spans:#{@finished_spans},current_span:#{@current_span})"
261
- end
262
- end
263
-
264
- # Generates equivalent context for forked processes.
265
- #
266
- # When Context from parent process is forked, child process
267
- # should have a Context belonging to the same trace but not
268
- # have the parent process spans.
269
- def fork_clone
270
- self.class.new(
271
- trace_id: trace_id,
272
- span_id: span_id,
273
- sampled: sampled?,
274
- sampling_priority: sampling_priority,
275
- origin: origin
276
- )
277
- end
278
-
279
- private
280
-
281
- def reset(options = {})
282
- @trace = []
283
- @parent_trace_id = options.fetch(:trace_id, nil)
284
- @parent_span_id = options.fetch(:span_id, nil)
285
- @sampled = options.fetch(:sampled, false)
286
- @sampling_priority = options.fetch(:sampling_priority, nil)
287
- @origin = options.fetch(:origin, nil)
288
- @finished_spans = 0
289
- @current_span = nil
290
- @current_root_span = nil
291
- @overflow = false
292
- end
293
-
294
- def set_current_span(span)
295
- @current_span = span
296
- if span
297
- @parent_trace_id = span.trace_id
298
- @parent_span_id = span.span_id
299
- @sampled = span.sampled
300
- else
301
- @parent_span_id = nil
302
- end
303
- end
304
-
305
- # Returns if the trace for the current Context is finished or not.
306
- # Low-level internal function, not thread-safe.
307
- def all_spans_finished?
308
- @finished_spans > 0 && @trace.length == @finished_spans
309
- end
310
-
311
- # Return the start time of the root span, or nil if there are no spans or this is undefined.
312
- def start_time
313
- @mutex.synchronize do
314
- return nil if @trace.empty?
315
-
316
- @trace[0].start_time
317
- end
318
- end
319
-
320
- # Return the length of the current trace held by this context.
321
- def length
322
- @mutex.synchronize do
323
- @trace.length
324
- end
325
- end
326
-
327
- # Iterate on each span within the trace. This is thread safe.
328
- def each_span(&block)
329
- @mutex.synchronize do
330
- @trace.each(&block)
331
- end
332
- end
333
- end
334
- end
@@ -1,82 +0,0 @@
1
- # typed: true
2
- module Datadog
3
- module ContextFlush
4
- # Consumes only completed traces (where all spans have finished)
5
- class Finished
6
- # Consumes and returns completed traces (where all spans have finished)
7
- # from the provided +context+, if any.
8
- #
9
- # Any traces consumed are removed from +context+ as a side effect.
10
- #
11
- # @return [Array<Span>] trace to be flushed, or +nil+ if the trace is not finished
12
- def consume!(context)
13
- trace, sampled = get_trace(context)
14
- trace if sampled
15
- end
16
-
17
- protected
18
-
19
- def get_trace(context)
20
- context.get
21
- end
22
- end
23
-
24
- # Performs partial trace flushing to avoid large traces residing in memory for too long
25
- class Partial
26
- # Start flushing partial trace after this many active spans in one trace
27
- DEFAULT_MIN_SPANS_FOR_PARTIAL_FLUSH = 500
28
-
29
- def initialize(options = {})
30
- @min_spans_for_partial = options.fetch(:min_spans_before_partial_flush, DEFAULT_MIN_SPANS_FOR_PARTIAL_FLUSH)
31
- end
32
-
33
- # Consumes and returns completed or partially completed
34
- # traces from the provided +context+, if any.
35
- #
36
- # Partially completed traces, where not all spans have finished,
37
- # will only be returned if there are at least
38
- # +@min_spans_for_partial+ finished spans.
39
- #
40
- # Any spans consumed are removed from +context+ as a side effect.
41
- #
42
- # @return [Array<Span>] partial or complete trace to be flushed, or +nil+ if no spans are finished
43
- def consume!(context)
44
- trace, sampled = get_trace(context)
45
-
46
- return nil unless sampled
47
- return trace if trace && !trace.empty?
48
-
49
- partial_trace(context)
50
- end
51
-
52
- protected
53
-
54
- def get_trace(context)
55
- context.get
56
- end
57
-
58
- private
59
-
60
- def partial_trace(context)
61
- return nil if context.finished_span_count < @min_spans_for_partial
62
-
63
- finished_spans(context)
64
- end
65
-
66
- def finished_spans(context)
67
- trace = context.delete_span_if(&:finished?)
68
-
69
- # Ensure that the first span in a partial trace has
70
- # sampling and origin information.
71
- if trace[0]
72
- context.annotate_for_flush!(trace[0])
73
- else
74
- Datadog.logger.debug('Tried to retrieve trace from context, but got nothing. ' \
75
- "Is there another consumer for this context? #{context.trace_id}")
76
- end
77
-
78
- trace unless trace.empty?
79
- end
80
- end
81
- end
82
- end
@@ -1,62 +0,0 @@
1
- # typed: true
2
- module Datadog
3
- # DefaultContextProvider is a default context provider that retrieves
4
- # all contexts from the current thread-local storage. It is suitable for
5
- # synchronous programming.
6
- class DefaultContextProvider
7
- # Initializes the default context provider with a thread-bound context.
8
- def initialize
9
- @context = ThreadLocalContext.new
10
- end
11
-
12
- # Sets the current context.
13
- def context=(ctx)
14
- @context.local = ctx
15
- end
16
-
17
- # Return the local context.
18
- def context(key = nil)
19
- current_context = key.nil? ? @context.local : @context.local(key)
20
-
21
- # Rebuild/reset context after a fork
22
- #
23
- # We don't want forked processes to copy and retransmit spans
24
- # that were generated from the parent process. Reset it such
25
- # that it acts like a distributed trace.
26
- current_context.after_fork! do
27
- current_context = self.context = current_context.fork_clone
28
- end
29
-
30
- current_context
31
- end
32
- end
33
-
34
- # ThreadLocalContext can be used as a tracer global reference to create
35
- # a different \Context for each thread. In synchronous tracer, this
36
- # is required to prevent multiple threads sharing the same \Context
37
- # in different executions.
38
- class ThreadLocalContext
39
- # ThreadLocalContext can be used as a tracer global reference to create
40
- # a different \Context for each thread. In synchronous tracer, this
41
- # is required to prevent multiple threads sharing the same \Context
42
- # in different executions.
43
- #
44
- # To support multiple tracers simultaneously, each \ThreadLocalContext
45
- # instance has its own thread-local variable.
46
- def initialize
47
- @key = "datadog_context_#{object_id}".to_sym
48
-
49
- self.local = Datadog::Context.new
50
- end
51
-
52
- # Override the thread-local context with a new context.
53
- def local=(ctx)
54
- Thread.current[@key] = ctx
55
- end
56
-
57
- # Return the thread-local context.
58
- def local(thread = Thread.current)
59
- thread[@key] ||= Datadog::Context.new
60
- end
61
- end
62
- end
@@ -1,31 +0,0 @@
1
- # typed: false
2
- require 'ddtrace/contrib/configuration/settings'
3
- require 'ddtrace/contrib/action_cable/ext'
4
-
5
- module Datadog
6
- module Contrib
7
- module ActionCable
8
- module Configuration
9
- # Custom settings for the ActionCable integration
10
- class Settings < Contrib::Configuration::Settings
11
- option :enabled do |o|
12
- o.default { env_to_bool(Ext::ENV_ENABLED, true) }
13
- o.lazy
14
- end
15
-
16
- option :analytics_enabled do |o|
17
- o.default { env_to_bool([Ext::ENV_ANALYTICS_ENABLED, Ext::ENV_ANALYTICS_ENABLED_OLD], false) }
18
- o.lazy
19
- end
20
-
21
- option :analytics_sample_rate do |o|
22
- o.default { env_to_float([Ext::ENV_ANALYTICS_SAMPLE_RATE, Ext::ENV_ANALYTICS_SAMPLE_RATE_OLD], 1.0) }
23
- o.lazy
24
- end
25
-
26
- option :service_name, default: Ext::SERVICE_NAME
27
- end
28
- end
29
- end
30
- end
31
- end
@@ -1,67 +0,0 @@
1
- # typed: true
2
- require 'ddtrace/contrib/analytics'
3
- require 'ddtrace/contrib/active_support/notifications/event'
4
- require 'ddtrace/contrib/action_cable/ext'
5
-
6
- module Datadog
7
- module Contrib
8
- module ActionCable
9
- # Defines basic behaviors for an event.
10
- module Event
11
- def self.included(base)
12
- base.include(ActiveSupport::Notifications::Event)
13
- base.extend(ClassMethods)
14
- end
15
-
16
- # Class methods for events.
17
- module ClassMethods
18
- def span_options
19
- { service: configuration[:service_name] }
20
- end
21
-
22
- def tracer
23
- -> { configuration[:tracer] }
24
- end
25
-
26
- def configuration
27
- Datadog.configuration[:action_cable]
28
- end
29
- end
30
- end
31
-
32
- # Defines behavior for the first event of a thread execution.
33
- #
34
- # This event is not expected to be nested with other event,
35
- # but to start a fresh tracing context.
36
- module RootContextEvent
37
- def self.included(base)
38
- base.include(ActiveSupport::Notifications::Event)
39
- base.extend(ClassMethods)
40
- end
41
-
42
- # Class methods for events.
43
- module ClassMethods
44
- include Contrib::ActionCable::Event::ClassMethods
45
-
46
- def subscription(*args)
47
- super.tap do |subscription|
48
- subscription.before_trace { ensure_clean_context! }
49
- end
50
- end
51
-
52
- private
53
-
54
- # Context objects are thread-bound.
55
- # If an integration re-uses threads, context from a previous trace
56
- # could leak into the new trace. This "cleans" current context,
57
- # preventing such a leak.
58
- def ensure_clean_context!
59
- return unless configuration[:tracer].call_context.current_span
60
-
61
- configuration[:tracer].provider.context = Context.new
62
- end
63
- end
64
- end
65
- end
66
- end
67
- end
@@ -1,50 +0,0 @@
1
- # typed: false
2
- require 'ddtrace/contrib/analytics'
3
- require 'ddtrace/contrib/action_cable/event'
4
-
5
- module Datadog
6
- module Contrib
7
- module ActionCable
8
- module Events
9
- # Defines instrumentation for 'broadcast.action_cable' event.
10
- #
11
- # A single 'broadcast' event will trigger as many 'transmit' events
12
- # as there are clients subscribed to a channel.
13
- module Broadcast
14
- include ActionCable::Event
15
-
16
- EVENT_NAME = 'broadcast.action_cable'.freeze
17
-
18
- module_function
19
-
20
- def event_name
21
- self::EVENT_NAME
22
- end
23
-
24
- def span_name
25
- Ext::SPAN_BROADCAST
26
- end
27
-
28
- def span_type
29
- # Starts a broadcast of messages over WebSockets
30
- Datadog::Ext::AppTypes::WEB
31
- end
32
-
33
- def process(span, _event, _id, payload)
34
- channel = payload[:broadcasting] # Channel has high cardinality
35
- span.service = configuration[:service_name]
36
- span.span_type = span_type
37
-
38
- # Set analytics sample rate
39
- if Contrib::Analytics.enabled?(configuration[:analytics_enabled])
40
- Contrib::Analytics.set_sample_rate(span, configuration[:analytics_sample_rate])
41
- end
42
-
43
- span.set_tag(Ext::TAG_CHANNEL, channel)
44
- span.set_tag(Ext::TAG_BROADCAST_CODER, payload[:coder])
45
- end
46
- end
47
- end
48
- end
49
- end
50
- end
@@ -1,56 +0,0 @@
1
- # typed: false
2
- require 'ddtrace/contrib/analytics'
3
- require 'ddtrace/contrib/action_cable/event'
4
-
5
- module Datadog
6
- module Contrib
7
- module ActionCable
8
- module Events
9
- # Defines instrumentation for 'perform_action.action_cable' event.
10
- #
11
- # An action, triggered by a WebSockets client, invokes a method
12
- # in the server's channel instance.
13
- module PerformAction
14
- include ActionCable::RootContextEvent
15
-
16
- EVENT_NAME = 'perform_action.action_cable'.freeze
17
-
18
- module_function
19
-
20
- def event_name
21
- self::EVENT_NAME
22
- end
23
-
24
- def span_name
25
- Ext::SPAN_ACTION
26
- end
27
-
28
- def span_type
29
- # A request to perform_action comes from a WebSocket connection
30
- Datadog::Ext::AppTypes::WEB
31
- end
32
-
33
- def process(span, _event, _id, payload)
34
- channel_class = payload[:channel_class]
35
- action = payload[:action]
36
-
37
- span.service = configuration[:service_name]
38
- span.resource = "#{channel_class}##{action}"
39
- span.span_type = span_type
40
-
41
- # Set analytics sample rate
42
- if Contrib::Analytics.enabled?(configuration[:analytics_enabled])
43
- Contrib::Analytics.set_sample_rate(span, configuration[:analytics_sample_rate])
44
- end
45
-
46
- # Measure service stats
47
- Contrib::Analytics.set_measured(span)
48
-
49
- span.set_tag(Ext::TAG_CHANNEL_CLASS, channel_class)
50
- span.set_tag(Ext::TAG_ACTION, action)
51
- end
52
- end
53
- end
54
- end
55
- end
56
- end