ddtrace 0.54.2 → 1.0.0.beta1

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 (1062) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -0
  3. data/LICENSE-3rdparty.csv +2 -1
  4. data/README.md +4 -0
  5. data/bin/ddtracerb +5 -5
  6. data/ddtrace.gemspec +7 -4
  7. data/docs/0.x-trace.png +0 -0
  8. data/docs/1.0-trace.png +0 -0
  9. data/docs/AutoInstrumentation.md +36 -0
  10. data/docs/Deprecation.md +8 -0
  11. data/docs/DevelopmentGuide.md +1 -1
  12. data/docs/GettingStarted.md +408 -431
  13. data/docs/ProfilingDevelopment.md +12 -9
  14. data/docs/PublicApi.md +14 -0
  15. data/docs/UpgradeGuide.md +557 -0
  16. data/lib/datadog/appsec/assets/blocked.html +4 -0
  17. data/lib/datadog/appsec/assets/waf_rules/README.md +7 -0
  18. data/lib/datadog/appsec/assets/waf_rules/recommended.json +5708 -0
  19. data/lib/datadog/appsec/assets/waf_rules/risky.json +1439 -0
  20. data/lib/datadog/appsec/assets/waf_rules/strict.json +1361 -0
  21. data/lib/datadog/appsec/assets.rb +36 -0
  22. data/lib/datadog/appsec/autoload.rb +16 -0
  23. data/lib/datadog/appsec/configuration/settings.rb +173 -0
  24. data/lib/datadog/appsec/configuration.rb +70 -0
  25. data/lib/datadog/appsec/contrib/auto_instrument.rb +27 -0
  26. data/lib/datadog/appsec/contrib/configuration/settings.rb +18 -0
  27. data/lib/datadog/appsec/contrib/integration.rb +35 -0
  28. data/lib/datadog/appsec/contrib/patcher.rb +10 -0
  29. data/lib/datadog/appsec/contrib/rack/configuration/settings.rb +20 -0
  30. data/lib/datadog/appsec/contrib/rack/ext.rb +13 -0
  31. data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +128 -0
  32. data/lib/datadog/appsec/contrib/rack/integration.rb +48 -0
  33. data/lib/datadog/appsec/contrib/rack/patcher.rb +33 -0
  34. data/lib/datadog/appsec/contrib/rack/reactive/request.rb +85 -0
  35. data/lib/datadog/appsec/contrib/rack/reactive/response.rb +62 -0
  36. data/lib/datadog/appsec/contrib/rack/request.rb +43 -0
  37. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +98 -0
  38. data/lib/datadog/appsec/contrib/rack/response.rb +22 -0
  39. data/lib/datadog/appsec/contrib/rails/configuration/settings.rb +20 -0
  40. data/lib/datadog/appsec/contrib/rails/ext.rb +13 -0
  41. data/lib/datadog/appsec/contrib/rails/framework.rb +28 -0
  42. data/lib/datadog/appsec/contrib/rails/integration.rb +48 -0
  43. data/lib/datadog/appsec/contrib/rails/patcher.rb +125 -0
  44. data/lib/datadog/appsec/contrib/rails/request_middleware.rb +18 -0
  45. data/lib/datadog/appsec/contrib/sinatra/configuration/settings.rb +20 -0
  46. data/lib/datadog/appsec/contrib/sinatra/ext.rb +13 -0
  47. data/lib/datadog/appsec/contrib/sinatra/framework.rb +32 -0
  48. data/lib/datadog/appsec/contrib/sinatra/integration.rb +48 -0
  49. data/lib/datadog/appsec/contrib/sinatra/patcher.rb +77 -0
  50. data/lib/datadog/appsec/contrib/sinatra/request_middleware.rb +18 -0
  51. data/lib/datadog/appsec/event.rb +111 -0
  52. data/lib/datadog/appsec/extensions.rb +120 -0
  53. data/lib/datadog/appsec/instrumentation/gateway.rb +42 -0
  54. data/lib/datadog/appsec/rate_limiter.rb +53 -0
  55. data/lib/datadog/appsec/reactive/address_hash.rb +16 -0
  56. data/lib/datadog/appsec/reactive/engine.rb +42 -0
  57. data/lib/datadog/appsec/reactive/operation.rb +50 -0
  58. data/lib/datadog/appsec/reactive/subscriber.rb +16 -0
  59. data/lib/datadog/appsec.rb +21 -0
  60. data/lib/datadog/ci/configuration/components.rb +8 -8
  61. data/lib/datadog/ci/configuration/settings.rb +12 -3
  62. data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +3 -2
  63. data/lib/datadog/ci/contrib/cucumber/ext.rb +1 -0
  64. data/lib/datadog/ci/contrib/cucumber/formatter.rb +2 -8
  65. data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +1 -1
  66. data/lib/datadog/ci/contrib/cucumber/integration.rb +2 -2
  67. data/lib/datadog/ci/contrib/cucumber/patcher.rb +2 -2
  68. data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +3 -2
  69. data/lib/datadog/ci/contrib/rspec/example.rb +1 -7
  70. data/lib/datadog/ci/contrib/rspec/ext.rb +1 -0
  71. data/lib/datadog/ci/contrib/rspec/integration.rb +2 -2
  72. data/lib/datadog/ci/contrib/rspec/patcher.rb +2 -2
  73. data/lib/datadog/ci/ext/app_types.rb +1 -1
  74. data/lib/datadog/ci/ext/environment.rb +105 -102
  75. data/lib/datadog/ci/ext/settings.rb +1 -1
  76. data/lib/datadog/ci/extensions.rb +4 -4
  77. data/lib/datadog/ci/flush.rb +37 -0
  78. data/lib/datadog/ci/test.rb +14 -13
  79. data/lib/datadog/ci.rb +3 -2
  80. data/lib/datadog/core/buffer/cruby.rb +54 -0
  81. data/lib/datadog/core/buffer/random.rb +134 -0
  82. data/lib/datadog/core/buffer/thread_safe.rb +57 -0
  83. data/lib/datadog/core/chunker.rb +35 -0
  84. data/lib/datadog/core/configuration/agent_settings_resolver.rb +296 -0
  85. data/lib/datadog/core/configuration/base.rb +88 -0
  86. data/lib/datadog/core/configuration/components.rb +392 -0
  87. data/lib/datadog/core/configuration/dependency_resolver.rb +27 -0
  88. data/lib/datadog/core/configuration/option.rb +68 -0
  89. data/lib/datadog/core/configuration/option_definition.rb +125 -0
  90. data/lib/datadog/core/configuration/option_definition_set.rb +21 -0
  91. data/lib/datadog/core/configuration/option_set.rb +9 -0
  92. data/lib/datadog/core/configuration/options.rb +117 -0
  93. data/lib/datadog/core/configuration/settings.rb +626 -0
  94. data/lib/datadog/core/configuration.rb +283 -0
  95. data/lib/datadog/core/diagnostics/environment_logger.rb +282 -0
  96. data/lib/datadog/core/diagnostics/ext.rb +40 -0
  97. data/lib/datadog/core/diagnostics/health.rb +36 -0
  98. data/lib/datadog/core/encoding.rb +75 -0
  99. data/lib/datadog/core/environment/ext.rb +27 -9
  100. data/lib/datadog/core/environment/identity.rb +10 -4
  101. data/lib/datadog/core/environment/socket.rb +8 -2
  102. data/lib/datadog/core/environment/variable_helpers.rb +1 -0
  103. data/lib/datadog/core/error.rb +100 -0
  104. data/lib/datadog/core/extensions.rb +15 -0
  105. data/lib/datadog/core/git/ext.rb +34 -0
  106. data/lib/datadog/core/logger.rb +45 -0
  107. data/lib/datadog/core/metrics/client.rb +187 -0
  108. data/lib/datadog/core/metrics/ext.rb +19 -0
  109. data/lib/datadog/core/metrics/helpers.rb +23 -0
  110. data/lib/datadog/core/metrics/logging.rb +42 -0
  111. data/lib/datadog/core/metrics/metric.rb +12 -0
  112. data/lib/datadog/core/metrics/options.rb +48 -0
  113. data/lib/datadog/core/pin.rb +75 -0
  114. data/lib/datadog/core/runtime/ext.rb +28 -0
  115. data/lib/datadog/core/runtime/metrics.rb +125 -0
  116. data/lib/datadog/core/utils/compression.rb +31 -0
  117. data/lib/datadog/core/utils/forking.rb +62 -0
  118. data/lib/datadog/core/utils/object_set.rb +42 -0
  119. data/lib/datadog/core/utils/only_once.rb +43 -0
  120. data/lib/datadog/core/utils/sequence.rb +20 -0
  121. data/lib/datadog/core/utils/string_table.rb +48 -0
  122. data/lib/datadog/core/utils/time.rb +53 -0
  123. data/lib/datadog/core/utils.rb +114 -0
  124. data/lib/{ddtrace → datadog/core}/vendor/multipart-post/LICENSE +0 -0
  125. data/lib/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rb +119 -0
  126. data/lib/datadog/core/vendor/multipart-post/multipart/post/multipartable.rb +60 -0
  127. data/lib/datadog/core/vendor/multipart-post/multipart/post/parts.rb +138 -0
  128. data/lib/datadog/core/vendor/multipart-post/multipart/post/version.rb +12 -0
  129. data/lib/datadog/core/vendor/multipart-post/multipart/post.rb +11 -0
  130. data/lib/datadog/core/vendor/multipart-post/multipart.rb +15 -0
  131. data/lib/datadog/core/vendor/multipart-post/net/http/post/multipart.rb +35 -0
  132. data/lib/datadog/core/worker.rb +23 -0
  133. data/lib/datadog/core/workers/async.rb +179 -0
  134. data/lib/datadog/core/workers/interval_loop.rb +118 -0
  135. data/lib/datadog/core/workers/polling.rb +58 -0
  136. data/lib/datadog/core/workers/queue.rb +43 -0
  137. data/lib/datadog/core/workers/runtime_metrics.rb +64 -0
  138. data/lib/datadog/core.rb +73 -0
  139. data/lib/datadog/opentelemetry/extensions.rb +14 -0
  140. data/lib/datadog/opentelemetry/span.rb +34 -0
  141. data/lib/{ddtrace → datadog}/opentracer/binary_propagator.rb +0 -0
  142. data/lib/datadog/opentracer/carrier.rb +8 -0
  143. data/lib/datadog/opentracer/distributed_headers.rb +57 -0
  144. data/lib/datadog/opentracer/global_tracer.rb +16 -0
  145. data/lib/datadog/opentracer/propagator.rb +25 -0
  146. data/lib/datadog/opentracer/rack_propagator.rb +71 -0
  147. data/lib/datadog/opentracer/scope.rb +17 -0
  148. data/lib/datadog/opentracer/scope_manager.rb +8 -0
  149. data/lib/datadog/opentracer/span.rb +100 -0
  150. data/lib/datadog/opentracer/span_context.rb +18 -0
  151. data/lib/datadog/opentracer/span_context_factory.rb +26 -0
  152. data/lib/datadog/opentracer/text_map_propagator.rb +86 -0
  153. data/lib/datadog/opentracer/thread_local_scope.rb +33 -0
  154. data/lib/datadog/opentracer/thread_local_scope_manager.rb +42 -0
  155. data/lib/datadog/opentracer/tracer.rb +213 -0
  156. data/lib/datadog/opentracer.rb +23 -0
  157. data/lib/{ddtrace → datadog}/profiling/backtrace_location.rb +0 -0
  158. data/lib/datadog/profiling/buffer.rb +42 -0
  159. data/lib/datadog/profiling/collectors/code_provenance.rb +113 -0
  160. data/lib/datadog/profiling/collectors/stack.rb +297 -0
  161. data/lib/datadog/profiling/encoding/profile.rb +47 -0
  162. data/lib/{ddtrace → datadog}/profiling/event.rb +0 -0
  163. data/lib/datadog/profiling/events/stack.rb +81 -0
  164. data/lib/datadog/profiling/exporter.rb +24 -0
  165. data/lib/{ddtrace → datadog}/profiling/ext/forking.rb +0 -0
  166. data/lib/datadog/profiling/ext.rb +56 -0
  167. data/lib/datadog/profiling/flush.rb +68 -0
  168. data/lib/{ddtrace → datadog}/profiling/native_extension.rb +0 -0
  169. data/lib/datadog/profiling/pprof/builder.rb +126 -0
  170. data/lib/datadog/profiling/pprof/converter.rb +103 -0
  171. data/lib/datadog/profiling/pprof/message_set.rb +15 -0
  172. data/lib/{ddtrace → datadog}/profiling/pprof/payload.rb +0 -0
  173. data/lib/{ddtrace → datadog}/profiling/pprof/pprof.proto +0 -0
  174. data/lib/datadog/profiling/pprof/pprof_pb.rb +82 -0
  175. data/lib/datadog/profiling/pprof/stack_sample.rb +140 -0
  176. data/lib/datadog/profiling/pprof/string_table.rb +11 -0
  177. data/lib/datadog/profiling/pprof/template.rb +119 -0
  178. data/lib/datadog/profiling/preload.rb +4 -0
  179. data/lib/datadog/profiling/profiler.rb +33 -0
  180. data/lib/datadog/profiling/recorder.rb +116 -0
  181. data/lib/datadog/profiling/scheduler.rb +150 -0
  182. data/lib/datadog/profiling/tasks/exec.rb +49 -0
  183. data/lib/datadog/profiling/tasks/help.rb +17 -0
  184. data/lib/datadog/profiling/tasks/setup.rb +90 -0
  185. data/lib/datadog/profiling/trace_identifiers/ddtrace.rb +44 -0
  186. data/lib/datadog/profiling/trace_identifiers/helper.rb +46 -0
  187. data/lib/{ddtrace → datadog}/profiling/transport/client.rb +0 -0
  188. data/lib/datadog/profiling/transport/http/api/endpoint.rb +106 -0
  189. data/lib/datadog/profiling/transport/http/api/instance.rb +37 -0
  190. data/lib/{ddtrace → datadog}/profiling/transport/http/api/spec.rb +0 -0
  191. data/lib/datadog/profiling/transport/http/api.rb +44 -0
  192. data/lib/datadog/profiling/transport/http/builder.rb +29 -0
  193. data/lib/datadog/profiling/transport/http/client.rb +34 -0
  194. data/lib/datadog/profiling/transport/http/response.rb +22 -0
  195. data/lib/datadog/profiling/transport/http.rb +111 -0
  196. data/lib/datadog/profiling/transport/io/client.rb +28 -0
  197. data/lib/datadog/profiling/transport/io/response.rb +17 -0
  198. data/lib/datadog/profiling/transport/io.rb +31 -0
  199. data/lib/{ddtrace → datadog}/profiling/transport/parcel.rb +0 -0
  200. data/lib/datadog/profiling/transport/request.rb +16 -0
  201. data/lib/{ddtrace → datadog}/profiling/transport/response.rb +0 -0
  202. data/lib/datadog/profiling.rb +167 -0
  203. data/lib/datadog/tracing/analytics.rb +24 -0
  204. data/lib/datadog/tracing/buffer.rb +125 -0
  205. data/lib/datadog/tracing/configuration/ext.rb +50 -0
  206. data/lib/datadog/tracing/context.rb +67 -0
  207. data/lib/datadog/tracing/context_provider.rb +67 -0
  208. data/lib/datadog/tracing/contrib/action_cable/configuration/settings.rb +34 -0
  209. data/lib/datadog/tracing/contrib/action_cable/event.rb +71 -0
  210. data/lib/datadog/tracing/contrib/action_cable/events/broadcast.rb +57 -0
  211. data/lib/datadog/tracing/contrib/action_cable/events/perform_action.rb +62 -0
  212. data/lib/datadog/tracing/contrib/action_cable/events/transmit.rb +58 -0
  213. data/lib/datadog/tracing/contrib/action_cable/events.rb +36 -0
  214. data/lib/datadog/tracing/contrib/action_cable/ext.rb +31 -0
  215. data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +91 -0
  216. data/lib/datadog/tracing/contrib/action_cable/integration.rb +49 -0
  217. data/lib/datadog/tracing/contrib/action_cable/patcher.rb +30 -0
  218. data/lib/datadog/tracing/contrib/action_mailer/configuration/settings.rb +35 -0
  219. data/lib/datadog/tracing/contrib/action_mailer/event.rb +51 -0
  220. data/lib/datadog/tracing/contrib/action_mailer/events/deliver.rb +59 -0
  221. data/lib/datadog/tracing/contrib/action_mailer/events/process.rb +46 -0
  222. data/lib/datadog/tracing/contrib/action_mailer/events.rb +33 -0
  223. data/lib/datadog/tracing/contrib/action_mailer/ext.rb +32 -0
  224. data/lib/datadog/tracing/contrib/action_mailer/integration.rb +49 -0
  225. data/lib/datadog/tracing/contrib/action_mailer/patcher.rb +28 -0
  226. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +155 -0
  227. data/lib/datadog/tracing/contrib/action_pack/action_controller/patcher.rb +28 -0
  228. data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +35 -0
  229. data/lib/datadog/tracing/contrib/action_pack/ext.rb +21 -0
  230. data/lib/datadog/tracing/contrib/action_pack/integration.rb +49 -0
  231. data/lib/datadog/tracing/contrib/action_pack/patcher.rb +26 -0
  232. data/lib/datadog/tracing/contrib/action_pack/utils.rb +39 -0
  233. data/lib/datadog/tracing/contrib/action_view/configuration/settings.rb +35 -0
  234. data/lib/datadog/tracing/contrib/action_view/event.rb +34 -0
  235. data/lib/datadog/tracing/contrib/action_view/events/render_partial.rb +53 -0
  236. data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +56 -0
  237. data/lib/datadog/tracing/contrib/action_view/events.rb +33 -0
  238. data/lib/datadog/tracing/contrib/action_view/ext.rb +23 -0
  239. data/lib/datadog/tracing/contrib/action_view/instrumentation/partial_renderer.rb +77 -0
  240. data/lib/datadog/tracing/contrib/action_view/instrumentation/template_renderer.rb +90 -0
  241. data/lib/datadog/tracing/contrib/action_view/integration.rb +56 -0
  242. data/lib/datadog/tracing/contrib/action_view/patcher.rb +47 -0
  243. data/lib/datadog/tracing/contrib/action_view/utils.rb +35 -0
  244. data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +36 -0
  245. data/lib/datadog/tracing/contrib/active_job/event.rb +57 -0
  246. data/lib/datadog/tracing/contrib/active_job/events/discard.rb +49 -0
  247. data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +48 -0
  248. data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +48 -0
  249. data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +50 -0
  250. data/lib/datadog/tracing/contrib/active_job/events/perform.rb +48 -0
  251. data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +49 -0
  252. data/lib/datadog/tracing/contrib/active_job/events.rb +41 -0
  253. data/lib/datadog/tracing/contrib/active_job/ext.rb +38 -0
  254. data/lib/datadog/tracing/contrib/active_job/integration.rb +49 -0
  255. data/lib/datadog/tracing/contrib/active_job/log_injection.rb +25 -0
  256. data/lib/datadog/tracing/contrib/active_job/patcher.rb +35 -0
  257. data/lib/datadog/tracing/contrib/active_model_serializers/configuration/settings.rb +32 -0
  258. data/lib/datadog/tracing/contrib/active_model_serializers/event.rb +68 -0
  259. data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +44 -0
  260. data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +46 -0
  261. data/lib/datadog/tracing/contrib/active_model_serializers/events.rb +33 -0
  262. data/lib/datadog/tracing/contrib/active_model_serializers/ext.rb +23 -0
  263. data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +44 -0
  264. data/lib/datadog/tracing/contrib/active_model_serializers/patcher.rb +32 -0
  265. data/lib/datadog/tracing/contrib/active_record/configuration/makara_resolver.rb +35 -0
  266. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +137 -0
  267. data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +38 -0
  268. data/lib/datadog/tracing/contrib/active_record/event.rb +29 -0
  269. data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +57 -0
  270. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +77 -0
  271. data/lib/datadog/tracing/contrib/active_record/events.rb +33 -0
  272. data/lib/datadog/tracing/contrib/active_record/ext.rb +28 -0
  273. data/lib/datadog/tracing/contrib/active_record/integration.rb +55 -0
  274. data/lib/datadog/tracing/contrib/active_record/patcher.rb +26 -0
  275. data/lib/datadog/tracing/contrib/active_record/utils.rb +127 -0
  276. data/lib/{ddtrace/vendor/active_record → datadog/tracing/contrib/active_record/vendor}/MIT-LICENSE +0 -0
  277. data/lib/datadog/tracing/contrib/active_record/vendor/connection_specification.rb +306 -0
  278. data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +269 -0
  279. data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +72 -0
  280. data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +46 -0
  281. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +34 -0
  282. data/lib/datadog/tracing/contrib/active_support/ext.rb +30 -0
  283. data/lib/datadog/tracing/contrib/active_support/integration.rb +50 -0
  284. data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +70 -0
  285. data/lib/datadog/tracing/contrib/active_support/notifications/subscriber.rb +70 -0
  286. data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +161 -0
  287. data/lib/datadog/tracing/contrib/active_support/patcher.rb +26 -0
  288. data/lib/datadog/tracing/contrib/analytics.rb +28 -0
  289. data/lib/datadog/tracing/contrib/auto_instrument.rb +50 -0
  290. data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +34 -0
  291. data/lib/datadog/tracing/contrib/aws/ext.rb +26 -0
  292. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +93 -0
  293. data/lib/datadog/tracing/contrib/aws/integration.rb +46 -0
  294. data/lib/datadog/tracing/contrib/aws/parsed_context.rb +59 -0
  295. data/lib/datadog/tracing/contrib/aws/patcher.rb +56 -0
  296. data/lib/datadog/tracing/contrib/aws/services.rb +122 -0
  297. data/lib/datadog/tracing/contrib/concurrent_ruby/configuration/settings.rb +22 -0
  298. data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +45 -0
  299. data/lib/datadog/tracing/contrib/concurrent_ruby/ext.rb +15 -0
  300. data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +26 -0
  301. data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +42 -0
  302. data/lib/datadog/tracing/contrib/concurrent_ruby/patcher.rb +32 -0
  303. data/lib/datadog/tracing/contrib/configurable.rb +101 -0
  304. data/lib/datadog/tracing/contrib/configuration/resolver.rb +84 -0
  305. data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +42 -0
  306. data/lib/datadog/tracing/contrib/configuration/settings.rb +42 -0
  307. data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +34 -0
  308. data/lib/datadog/tracing/contrib/dalli/ext.rb +23 -0
  309. data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +57 -0
  310. data/lib/datadog/tracing/contrib/dalli/integration.rb +51 -0
  311. data/lib/datadog/tracing/contrib/dalli/patcher.rb +28 -0
  312. data/lib/datadog/tracing/contrib/dalli/quantize.rb +25 -0
  313. data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +37 -0
  314. data/lib/datadog/tracing/contrib/delayed_job/ext.rb +25 -0
  315. data/lib/datadog/tracing/contrib/delayed_job/integration.rb +42 -0
  316. data/lib/datadog/tracing/contrib/delayed_job/patcher.rb +31 -0
  317. data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +100 -0
  318. data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +35 -0
  319. data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +25 -0
  320. data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +43 -0
  321. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +114 -0
  322. data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +88 -0
  323. data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +36 -0
  324. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +176 -0
  325. data/lib/datadog/tracing/contrib/ethon/ext.rb +23 -0
  326. data/lib/datadog/tracing/contrib/ethon/integration.rb +47 -0
  327. data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +95 -0
  328. data/lib/datadog/tracing/contrib/ethon/patcher.rb +31 -0
  329. data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +37 -0
  330. data/lib/datadog/tracing/contrib/excon/ext.rb +20 -0
  331. data/lib/datadog/tracing/contrib/excon/integration.rb +47 -0
  332. data/lib/datadog/tracing/contrib/excon/middleware.rb +169 -0
  333. data/lib/datadog/tracing/contrib/excon/patcher.rb +30 -0
  334. data/lib/datadog/tracing/contrib/extensions.rb +184 -0
  335. data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +41 -0
  336. data/lib/datadog/tracing/contrib/faraday/connection.rb +21 -0
  337. data/lib/datadog/tracing/contrib/faraday/ext.rb +20 -0
  338. data/lib/datadog/tracing/contrib/faraday/integration.rb +47 -0
  339. data/lib/datadog/tracing/contrib/faraday/middleware.rb +92 -0
  340. data/lib/datadog/tracing/contrib/faraday/patcher.rb +56 -0
  341. data/lib/datadog/tracing/contrib/faraday/rack_builder.rb +21 -0
  342. data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +41 -0
  343. data/lib/datadog/tracing/contrib/grape/endpoint.rb +251 -0
  344. data/lib/datadog/tracing/contrib/grape/ext.rb +27 -0
  345. data/lib/datadog/tracing/contrib/grape/instrumentation.rb +36 -0
  346. data/lib/datadog/tracing/contrib/grape/integration.rb +43 -0
  347. data/lib/datadog/tracing/contrib/grape/patcher.rb +33 -0
  348. data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +35 -0
  349. data/lib/datadog/tracing/contrib/graphql/ext.rb +18 -0
  350. data/lib/datadog/tracing/contrib/graphql/integration.rb +43 -0
  351. data/lib/datadog/tracing/contrib/graphql/patcher.rb +64 -0
  352. data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +36 -0
  353. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +83 -0
  354. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +89 -0
  355. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb +103 -0
  356. data/lib/datadog/tracing/contrib/grpc/ext.rb +22 -0
  357. data/lib/datadog/tracing/contrib/grpc/integration.rb +42 -0
  358. data/lib/datadog/tracing/contrib/grpc/intercept_with_datadog.rb +52 -0
  359. data/lib/datadog/tracing/contrib/grpc/patcher.rb +37 -0
  360. data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +43 -0
  361. data/lib/datadog/tracing/contrib/http/configuration/settings.rb +36 -0
  362. data/lib/datadog/tracing/contrib/http/ext.rb +20 -0
  363. data/lib/datadog/tracing/contrib/http/instrumentation.rb +138 -0
  364. data/lib/datadog/tracing/contrib/http/integration.rb +48 -0
  365. data/lib/datadog/tracing/contrib/http/patcher.rb +29 -0
  366. data/lib/datadog/tracing/contrib/http_annotation_helper.rb +16 -0
  367. data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +36 -0
  368. data/lib/datadog/tracing/contrib/httpclient/ext.rb +20 -0
  369. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +116 -0
  370. data/lib/datadog/tracing/contrib/httpclient/integration.rb +47 -0
  371. data/lib/datadog/tracing/contrib/httpclient/patcher.rb +41 -0
  372. data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +36 -0
  373. data/lib/datadog/tracing/contrib/httprb/ext.rb +20 -0
  374. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +127 -0
  375. data/lib/datadog/tracing/contrib/httprb/integration.rb +47 -0
  376. data/lib/datadog/tracing/contrib/httprb/patcher.rb +41 -0
  377. data/lib/datadog/tracing/contrib/integration.rb +77 -0
  378. data/lib/datadog/tracing/contrib/kafka/configuration/settings.rb +34 -0
  379. data/lib/datadog/tracing/contrib/kafka/consumer_event.rb +17 -0
  380. data/lib/datadog/tracing/contrib/kafka/consumer_group_event.rb +17 -0
  381. data/lib/datadog/tracing/contrib/kafka/event.rb +51 -0
  382. data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +41 -0
  383. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +48 -0
  384. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +46 -0
  385. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +46 -0
  386. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +36 -0
  387. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +36 -0
  388. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +36 -0
  389. data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +39 -0
  390. data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +42 -0
  391. data/lib/datadog/tracing/contrib/kafka/events.rb +47 -0
  392. data/lib/datadog/tracing/contrib/kafka/ext.rb +51 -0
  393. data/lib/datadog/tracing/contrib/kafka/integration.rb +43 -0
  394. data/lib/datadog/tracing/contrib/kafka/patcher.rb +29 -0
  395. data/lib/datadog/tracing/contrib/lograge/configuration/settings.rb +22 -0
  396. data/lib/datadog/tracing/contrib/lograge/ext.rb +14 -0
  397. data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +45 -0
  398. data/lib/datadog/tracing/contrib/lograge/integration.rb +49 -0
  399. data/lib/datadog/tracing/contrib/lograge/patcher.rb +28 -0
  400. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +37 -0
  401. data/lib/datadog/tracing/contrib/mongodb/ext.rb +26 -0
  402. data/lib/datadog/tracing/contrib/mongodb/instrumentation.rb +46 -0
  403. data/lib/datadog/tracing/contrib/mongodb/integration.rb +47 -0
  404. data/lib/datadog/tracing/contrib/mongodb/parsers.rb +48 -0
  405. data/lib/datadog/tracing/contrib/mongodb/patcher.rb +33 -0
  406. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +120 -0
  407. data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +34 -0
  408. data/lib/datadog/tracing/contrib/mysql2/ext.rb +21 -0
  409. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +61 -0
  410. data/lib/datadog/tracing/contrib/mysql2/integration.rb +42 -0
  411. data/lib/datadog/tracing/contrib/mysql2/patcher.rb +30 -0
  412. data/lib/datadog/tracing/contrib/patchable.rb +108 -0
  413. data/lib/datadog/tracing/contrib/patcher.rb +73 -0
  414. data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +34 -0
  415. data/lib/datadog/tracing/contrib/presto/ext.rb +31 -0
  416. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +124 -0
  417. data/lib/datadog/tracing/contrib/presto/integration.rb +42 -0
  418. data/lib/datadog/tracing/contrib/presto/patcher.rb +36 -0
  419. data/lib/datadog/tracing/contrib/qless/configuration/settings.rb +39 -0
  420. data/lib/datadog/tracing/contrib/qless/ext.rb +25 -0
  421. data/lib/datadog/tracing/contrib/qless/integration.rb +42 -0
  422. data/lib/datadog/tracing/contrib/qless/patcher.rb +38 -0
  423. data/lib/datadog/tracing/contrib/qless/qless_job.rb +74 -0
  424. data/lib/datadog/tracing/contrib/qless/tracer_cleaner.rb +31 -0
  425. data/lib/datadog/tracing/contrib/que/configuration/settings.rb +48 -0
  426. data/lib/datadog/tracing/contrib/que/ext.rb +33 -0
  427. data/lib/datadog/tracing/contrib/que/integration.rb +45 -0
  428. data/lib/datadog/tracing/contrib/que/patcher.rb +28 -0
  429. data/lib/datadog/tracing/contrib/que/tracer.rb +60 -0
  430. data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +34 -0
  431. data/lib/datadog/tracing/contrib/racecar/event.rb +78 -0
  432. data/lib/datadog/tracing/contrib/racecar/events/batch.rb +34 -0
  433. data/lib/datadog/tracing/contrib/racecar/events/consume.rb +34 -0
  434. data/lib/datadog/tracing/contrib/racecar/events/message.rb +34 -0
  435. data/lib/datadog/tracing/contrib/racecar/events.rb +35 -0
  436. data/lib/datadog/tracing/contrib/racecar/ext.rb +30 -0
  437. data/lib/datadog/tracing/contrib/racecar/integration.rb +43 -0
  438. data/lib/datadog/tracing/contrib/racecar/patcher.rb +29 -0
  439. data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +50 -0
  440. data/lib/datadog/tracing/contrib/rack/ext.rb +24 -0
  441. data/lib/datadog/tracing/contrib/rack/integration.rb +49 -0
  442. data/lib/datadog/tracing/contrib/rack/middlewares.rb +254 -0
  443. data/lib/datadog/tracing/contrib/rack/patcher.rb +108 -0
  444. data/lib/datadog/tracing/contrib/rack/request_queue.rb +47 -0
  445. data/lib/datadog/tracing/contrib/rails/auto_instrument_railtie.rb +10 -0
  446. data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +70 -0
  447. data/lib/datadog/tracing/contrib/rails/ext.rb +18 -0
  448. data/lib/datadog/tracing/contrib/rails/framework.rb +151 -0
  449. data/lib/datadog/tracing/contrib/rails/integration.rb +48 -0
  450. data/lib/datadog/tracing/contrib/rails/log_injection.rb +46 -0
  451. data/lib/datadog/tracing/contrib/rails/middlewares.rb +46 -0
  452. data/lib/datadog/tracing/contrib/rails/patcher.rb +116 -0
  453. data/lib/datadog/tracing/contrib/rails/railtie.rb +18 -0
  454. data/lib/datadog/tracing/contrib/rails/utils.rb +27 -0
  455. data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +35 -0
  456. data/lib/datadog/tracing/contrib/rake/ext.rb +25 -0
  457. data/lib/datadog/tracing/contrib/rake/instrumentation.rb +96 -0
  458. data/lib/datadog/tracing/contrib/rake/integration.rb +42 -0
  459. data/lib/datadog/tracing/contrib/rake/patcher.rb +34 -0
  460. data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +48 -0
  461. data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +39 -0
  462. data/lib/datadog/tracing/contrib/redis/ext.rb +25 -0
  463. data/lib/datadog/tracing/contrib/redis/instrumentation.rb +77 -0
  464. data/lib/datadog/tracing/contrib/redis/integration.rb +46 -0
  465. data/lib/datadog/tracing/contrib/redis/patcher.rb +35 -0
  466. data/lib/datadog/tracing/contrib/redis/quantize.rb +78 -0
  467. data/lib/datadog/tracing/contrib/redis/tags.rb +53 -0
  468. data/lib/{ddtrace → datadog/tracing}/contrib/redis/vendor/LICENSE +0 -0
  469. data/lib/datadog/tracing/contrib/redis/vendor/resolver.rb +161 -0
  470. data/lib/datadog/tracing/contrib/registerable.rb +50 -0
  471. data/lib/datadog/tracing/contrib/registry.rb +51 -0
  472. data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +36 -0
  473. data/lib/datadog/tracing/contrib/resque/ext.rb +20 -0
  474. data/lib/datadog/tracing/contrib/resque/integration.rb +47 -0
  475. data/lib/datadog/tracing/contrib/resque/patcher.rb +29 -0
  476. data/lib/datadog/tracing/contrib/resque/resque_job.rb +102 -0
  477. data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +35 -0
  478. data/lib/datadog/tracing/contrib/rest_client/ext.rb +20 -0
  479. data/lib/datadog/tracing/contrib/rest_client/integration.rb +42 -0
  480. data/lib/datadog/tracing/contrib/rest_client/patcher.rb +29 -0
  481. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +104 -0
  482. data/lib/datadog/tracing/contrib/semantic_logger/configuration/settings.rb +22 -0
  483. data/lib/datadog/tracing/contrib/semantic_logger/ext.rb +14 -0
  484. data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +49 -0
  485. data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +51 -0
  486. data/lib/datadog/tracing/contrib/semantic_logger/patcher.rb +28 -0
  487. data/lib/datadog/tracing/contrib/sequel/configuration/settings.rb +32 -0
  488. data/lib/datadog/tracing/contrib/sequel/database.rb +59 -0
  489. data/lib/datadog/tracing/contrib/sequel/dataset.rb +64 -0
  490. data/lib/datadog/tracing/contrib/sequel/ext.rb +21 -0
  491. data/lib/datadog/tracing/contrib/sequel/integration.rb +42 -0
  492. data/lib/datadog/tracing/contrib/sequel/patcher.rb +36 -0
  493. data/lib/datadog/tracing/contrib/sequel/utils.rb +86 -0
  494. data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +37 -0
  495. data/lib/datadog/tracing/contrib/shoryuken/ext.rb +24 -0
  496. data/lib/datadog/tracing/contrib/shoryuken/integration.rb +43 -0
  497. data/lib/datadog/tracing/contrib/shoryuken/patcher.rb +27 -0
  498. data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +60 -0
  499. data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +52 -0
  500. data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +42 -0
  501. data/lib/datadog/tracing/contrib/sidekiq/ext.rb +37 -0
  502. data/lib/datadog/tracing/contrib/sidekiq/integration.rb +52 -0
  503. data/lib/datadog/tracing/contrib/sidekiq/patcher.rb +70 -0
  504. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/heartbeat.rb +34 -0
  505. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/job_fetch.rb +34 -0
  506. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/scheduled_push.rb +33 -0
  507. data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +78 -0
  508. data/lib/datadog/tracing/contrib/sidekiq/tracing.rb +43 -0
  509. data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +42 -0
  510. data/lib/datadog/tracing/contrib/sinatra/env.rb +65 -0
  511. data/lib/datadog/tracing/contrib/sinatra/ext.rb +31 -0
  512. data/lib/datadog/tracing/contrib/sinatra/framework.rb +105 -0
  513. data/lib/datadog/tracing/contrib/sinatra/headers.rb +34 -0
  514. data/lib/datadog/tracing/contrib/sinatra/integration.rb +42 -0
  515. data/lib/datadog/tracing/contrib/sinatra/patcher.rb +76 -0
  516. data/lib/datadog/tracing/contrib/sinatra/tracer.rb +158 -0
  517. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +122 -0
  518. data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +37 -0
  519. data/lib/datadog/tracing/contrib/sneakers/ext.rb +25 -0
  520. data/lib/datadog/tracing/contrib/sneakers/integration.rb +45 -0
  521. data/lib/datadog/tracing/contrib/sneakers/patcher.rb +29 -0
  522. data/lib/datadog/tracing/contrib/sneakers/tracer.rb +57 -0
  523. data/lib/datadog/tracing/contrib/status_code_matcher.rb +74 -0
  524. data/lib/datadog/tracing/contrib/sucker_punch/configuration/settings.rb +34 -0
  525. data/lib/datadog/tracing/contrib/sucker_punch/exception_handler.rb +27 -0
  526. data/lib/datadog/tracing/contrib/sucker_punch/ext.rb +26 -0
  527. data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +104 -0
  528. data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +42 -0
  529. data/lib/datadog/tracing/contrib/sucker_punch/patcher.rb +37 -0
  530. data/lib/datadog/tracing/contrib/utils/database.rb +30 -0
  531. data/lib/datadog/tracing/contrib/utils/quantization/hash.rb +110 -0
  532. data/lib/datadog/tracing/contrib/utils/quantization/http.rb +98 -0
  533. data/lib/datadog/tracing/contrib.rb +73 -0
  534. data/lib/datadog/tracing/correlation.rb +108 -0
  535. data/lib/datadog/tracing/distributed/headers/b3.rb +54 -0
  536. data/lib/datadog/tracing/distributed/headers/b3_single.rb +66 -0
  537. data/lib/datadog/tracing/distributed/headers/datadog.rb +51 -0
  538. data/lib/datadog/tracing/distributed/headers/ext.rb +30 -0
  539. data/lib/datadog/tracing/distributed/helpers.rb +43 -0
  540. data/lib/datadog/tracing/distributed/parser.rb +69 -0
  541. data/lib/datadog/tracing/event.rb +76 -0
  542. data/lib/datadog/tracing/flush.rb +73 -0
  543. data/lib/datadog/tracing/metadata/analytics.rb +24 -0
  544. data/lib/datadog/tracing/metadata/ext.rb +150 -0
  545. data/lib/datadog/tracing/metadata/tagging.rb +118 -0
  546. data/lib/datadog/tracing/metadata.rb +16 -0
  547. data/lib/datadog/tracing/pipeline/span_filter.rb +42 -0
  548. data/lib/datadog/tracing/pipeline/span_processor.rb +38 -0
  549. data/lib/datadog/tracing/pipeline.rb +65 -0
  550. data/lib/datadog/tracing/propagation/grpc.rb +87 -0
  551. data/lib/datadog/tracing/propagation/http.rb +108 -0
  552. data/lib/datadog/tracing/runtime/metrics.rb +18 -0
  553. data/lib/datadog/tracing/sampling/all_sampler.rb +24 -0
  554. data/lib/datadog/tracing/sampling/ext.rb +26 -0
  555. data/lib/datadog/tracing/sampling/matcher.rb +67 -0
  556. data/lib/datadog/tracing/sampling/priority_sampler.rb +112 -0
  557. data/lib/datadog/tracing/sampling/rate_by_key_sampler.rb +96 -0
  558. data/lib/datadog/tracing/sampling/rate_by_service_sampler.rb +40 -0
  559. data/lib/datadog/tracing/sampling/rate_limiter.rb +184 -0
  560. data/lib/datadog/tracing/sampling/rate_sampler.rb +54 -0
  561. data/lib/datadog/tracing/sampling/rule.rb +69 -0
  562. data/lib/datadog/tracing/sampling/rule_sampler.rb +132 -0
  563. data/lib/datadog/tracing/sampling/sampler.rb +43 -0
  564. data/lib/datadog/tracing/span.rb +210 -0
  565. data/lib/datadog/tracing/span_operation.rb +519 -0
  566. data/lib/datadog/tracing/sync_writer.rb +68 -0
  567. data/lib/datadog/tracing/trace_digest.rb +58 -0
  568. data/lib/datadog/tracing/trace_operation.rb +411 -0
  569. data/lib/datadog/tracing/trace_segment.rb +292 -0
  570. data/lib/datadog/tracing/tracer.rb +504 -0
  571. data/lib/datadog/tracing/workers/trace_writer.rb +194 -0
  572. data/lib/datadog/tracing/workers.rb +124 -0
  573. data/lib/datadog/tracing/writer.rb +179 -0
  574. data/lib/datadog/tracing.rb +140 -0
  575. data/lib/ddtrace/auto_instrument.rb +4 -1
  576. data/lib/ddtrace/profiling/preload.rb +2 -4
  577. data/lib/ddtrace/transport/ext.rb +34 -0
  578. data/lib/ddtrace/transport/http/adapters/net.rb +2 -2
  579. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +2 -2
  580. data/lib/ddtrace/transport/http/api.rb +4 -11
  581. data/lib/ddtrace/transport/http/builder.rb +2 -2
  582. data/lib/ddtrace/transport/http/traces.rb +2 -0
  583. data/lib/ddtrace/transport/http.rb +22 -28
  584. data/lib/ddtrace/transport/io/traces.rb +1 -1
  585. data/lib/ddtrace/transport/io.rb +2 -2
  586. data/lib/ddtrace/transport/parcel.rb +1 -0
  587. data/lib/ddtrace/transport/serializable_trace.rb +116 -0
  588. data/lib/ddtrace/transport/statistics.rb +5 -4
  589. data/lib/ddtrace/transport/trace_formatter.rb +164 -0
  590. data/lib/ddtrace/transport/traces.rb +14 -5
  591. data/lib/ddtrace/version.rb +5 -5
  592. data/lib/ddtrace.rb +18 -39
  593. metadata +561 -485
  594. data/.yardopts +0 -5
  595. data/lib/datadog/ci/context_flush.rb +0 -29
  596. data/lib/datadog/contrib.rb +0 -71
  597. data/lib/ddtrace/analytics.rb +0 -39
  598. data/lib/ddtrace/buffer.rb +0 -340
  599. data/lib/ddtrace/chunker.rb +0 -35
  600. data/lib/ddtrace/configuration/agent_settings_resolver.rb +0 -309
  601. data/lib/ddtrace/configuration/base.rb +0 -82
  602. data/lib/ddtrace/configuration/components.rb +0 -292
  603. data/lib/ddtrace/configuration/dependency_resolver.rb +0 -25
  604. data/lib/ddtrace/configuration/option.rb +0 -65
  605. data/lib/ddtrace/configuration/option_definition.rb +0 -122
  606. data/lib/ddtrace/configuration/option_definition_set.rb +0 -19
  607. data/lib/ddtrace/configuration/option_set.rb +0 -7
  608. data/lib/ddtrace/configuration/options.rb +0 -112
  609. data/lib/ddtrace/configuration/pin_setup.rb +0 -32
  610. data/lib/ddtrace/configuration/settings.rb +0 -413
  611. data/lib/ddtrace/configuration.rb +0 -195
  612. data/lib/ddtrace/context.rb +0 -334
  613. data/lib/ddtrace/context_flush.rb +0 -82
  614. data/lib/ddtrace/context_provider.rb +0 -62
  615. data/lib/ddtrace/contrib/action_cable/configuration/settings.rb +0 -31
  616. data/lib/ddtrace/contrib/action_cable/event.rb +0 -67
  617. data/lib/ddtrace/contrib/action_cable/events/broadcast.rb +0 -50
  618. data/lib/ddtrace/contrib/action_cable/events/perform_action.rb +0 -56
  619. data/lib/ddtrace/contrib/action_cable/events/transmit.rb +0 -51
  620. data/lib/ddtrace/contrib/action_cable/events.rb +0 -34
  621. data/lib/ddtrace/contrib/action_cable/ext.rb +0 -27
  622. data/lib/ddtrace/contrib/action_cable/instrumentation.rb +0 -78
  623. data/lib/ddtrace/contrib/action_cable/integration.rb +0 -46
  624. data/lib/ddtrace/contrib/action_cable/patcher.rb +0 -29
  625. data/lib/ddtrace/contrib/action_mailer/configuration/settings.rb +0 -32
  626. data/lib/ddtrace/contrib/action_mailer/event.rb +0 -50
  627. data/lib/ddtrace/contrib/action_mailer/events/deliver.rb +0 -54
  628. data/lib/ddtrace/contrib/action_mailer/events/process.rb +0 -41
  629. data/lib/ddtrace/contrib/action_mailer/events.rb +0 -31
  630. data/lib/ddtrace/contrib/action_mailer/ext.rb +0 -32
  631. data/lib/ddtrace/contrib/action_mailer/integration.rb +0 -45
  632. data/lib/ddtrace/contrib/action_mailer/patcher.rb +0 -27
  633. data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +0 -157
  634. data/lib/ddtrace/contrib/action_pack/action_controller/patcher.rb +0 -26
  635. data/lib/ddtrace/contrib/action_pack/configuration/settings.rb +0 -33
  636. data/lib/ddtrace/contrib/action_pack/ext.rb +0 -20
  637. data/lib/ddtrace/contrib/action_pack/integration.rb +0 -46
  638. data/lib/ddtrace/contrib/action_pack/patcher.rb +0 -24
  639. data/lib/ddtrace/contrib/action_pack/utils.rb +0 -37
  640. data/lib/ddtrace/contrib/action_view/configuration/settings.rb +0 -32
  641. data/lib/ddtrace/contrib/action_view/event.rb +0 -36
  642. data/lib/ddtrace/contrib/action_view/events/render_partial.rb +0 -47
  643. data/lib/ddtrace/contrib/action_view/events/render_template.rb +0 -50
  644. data/lib/ddtrace/contrib/action_view/events.rb +0 -31
  645. data/lib/ddtrace/contrib/action_view/ext.rb +0 -21
  646. data/lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb +0 -75
  647. data/lib/ddtrace/contrib/action_view/instrumentation/template_renderer.rb +0 -168
  648. data/lib/ddtrace/contrib/action_view/integration.rb +0 -53
  649. data/lib/ddtrace/contrib/action_view/patcher.rb +0 -48
  650. data/lib/ddtrace/contrib/action_view/utils.rb +0 -33
  651. data/lib/ddtrace/contrib/active_job/configuration/settings.rb +0 -33
  652. data/lib/ddtrace/contrib/active_job/event.rb +0 -54
  653. data/lib/ddtrace/contrib/active_job/events/discard.rb +0 -46
  654. data/lib/ddtrace/contrib/active_job/events/enqueue.rb +0 -45
  655. data/lib/ddtrace/contrib/active_job/events/enqueue_at.rb +0 -45
  656. data/lib/ddtrace/contrib/active_job/events/enqueue_retry.rb +0 -47
  657. data/lib/ddtrace/contrib/active_job/events/perform.rb +0 -45
  658. data/lib/ddtrace/contrib/active_job/events/retry_stopped.rb +0 -46
  659. data/lib/ddtrace/contrib/active_job/events.rb +0 -39
  660. data/lib/ddtrace/contrib/active_job/ext.rb +0 -32
  661. data/lib/ddtrace/contrib/active_job/integration.rb +0 -46
  662. data/lib/ddtrace/contrib/active_job/log_injection.rb +0 -21
  663. data/lib/ddtrace/contrib/active_job/patcher.rb +0 -33
  664. data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +0 -31
  665. data/lib/ddtrace/contrib/active_model_serializers/event.rb +0 -69
  666. data/lib/ddtrace/contrib/active_model_serializers/events/render.rb +0 -33
  667. data/lib/ddtrace/contrib/active_model_serializers/events/serialize.rb +0 -36
  668. data/lib/ddtrace/contrib/active_model_serializers/events.rb +0 -31
  669. data/lib/ddtrace/contrib/active_model_serializers/ext.rb +0 -21
  670. data/lib/ddtrace/contrib/active_model_serializers/integration.rb +0 -41
  671. data/lib/ddtrace/contrib/active_model_serializers/patcher.rb +0 -30
  672. data/lib/ddtrace/contrib/active_record/configuration/makara_resolver.rb +0 -31
  673. data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +0 -135
  674. data/lib/ddtrace/contrib/active_record/configuration/settings.rb +0 -36
  675. data/lib/ddtrace/contrib/active_record/event.rb +0 -31
  676. data/lib/ddtrace/contrib/active_record/events/instantiation.rb +0 -61
  677. data/lib/ddtrace/contrib/active_record/events/sql.rb +0 -69
  678. data/lib/ddtrace/contrib/active_record/events.rb +0 -31
  679. data/lib/ddtrace/contrib/active_record/ext.rb +0 -25
  680. data/lib/ddtrace/contrib/active_record/integration.rb +0 -54
  681. data/lib/ddtrace/contrib/active_record/patcher.rb +0 -24
  682. data/lib/ddtrace/contrib/active_record/utils.rb +0 -124
  683. data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +0 -259
  684. data/lib/ddtrace/contrib/active_support/cache/patcher.rb +0 -70
  685. data/lib/ddtrace/contrib/active_support/cache/redis.rb +0 -44
  686. data/lib/ddtrace/contrib/active_support/configuration/settings.rb +0 -31
  687. data/lib/ddtrace/contrib/active_support/ext.rb +0 -28
  688. data/lib/ddtrace/contrib/active_support/integration.rb +0 -47
  689. data/lib/ddtrace/contrib/active_support/notifications/event.rb +0 -76
  690. data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +0 -68
  691. data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +0 -164
  692. data/lib/ddtrace/contrib/active_support/patcher.rb +0 -24
  693. data/lib/ddtrace/contrib/analytics.rb +0 -25
  694. data/lib/ddtrace/contrib/auto_instrument.rb +0 -48
  695. data/lib/ddtrace/contrib/aws/configuration/settings.rb +0 -31
  696. data/lib/ddtrace/contrib/aws/ext.rb +0 -24
  697. data/lib/ddtrace/contrib/aws/instrumentation.rb +0 -91
  698. data/lib/ddtrace/contrib/aws/integration.rb +0 -43
  699. data/lib/ddtrace/contrib/aws/parsed_context.rb +0 -57
  700. data/lib/ddtrace/contrib/aws/patcher.rb +0 -54
  701. data/lib/ddtrace/contrib/aws/services.rb +0 -119
  702. data/lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb +0 -21
  703. data/lib/ddtrace/contrib/concurrent_ruby/context_composite_executor_service.rb +0 -42
  704. data/lib/ddtrace/contrib/concurrent_ruby/ext.rb +0 -13
  705. data/lib/ddtrace/contrib/concurrent_ruby/future_patch.rb +0 -24
  706. data/lib/ddtrace/contrib/concurrent_ruby/integration.rb +0 -39
  707. data/lib/ddtrace/contrib/concurrent_ruby/patcher.rb +0 -30
  708. data/lib/ddtrace/contrib/configurable.rb +0 -103
  709. data/lib/ddtrace/contrib/configuration/resolver.rb +0 -82
  710. data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +0 -40
  711. data/lib/ddtrace/contrib/configuration/settings.rb +0 -56
  712. data/lib/ddtrace/contrib/dalli/configuration/settings.rb +0 -31
  713. data/lib/ddtrace/contrib/dalli/ext.rb +0 -21
  714. data/lib/ddtrace/contrib/dalli/instrumentation.rb +0 -55
  715. data/lib/ddtrace/contrib/dalli/integration.rb +0 -39
  716. data/lib/ddtrace/contrib/dalli/patcher.rb +0 -26
  717. data/lib/ddtrace/contrib/dalli/quantize.rb +0 -23
  718. data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +0 -33
  719. data/lib/ddtrace/contrib/delayed_job/ext.rb +0 -24
  720. data/lib/ddtrace/contrib/delayed_job/integration.rb +0 -39
  721. data/lib/ddtrace/contrib/delayed_job/patcher.rb +0 -29
  722. data/lib/ddtrace/contrib/delayed_job/plugin.rb +0 -85
  723. data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +0 -32
  724. data/lib/ddtrace/contrib/elasticsearch/ext.rb +0 -23
  725. data/lib/ddtrace/contrib/elasticsearch/integration.rb +0 -40
  726. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +0 -123
  727. data/lib/ddtrace/contrib/elasticsearch/quantize.rb +0 -84
  728. data/lib/ddtrace/contrib/ethon/configuration/settings.rb +0 -33
  729. data/lib/ddtrace/contrib/ethon/easy_patch.rb +0 -152
  730. data/lib/ddtrace/contrib/ethon/ext.rb +0 -20
  731. data/lib/ddtrace/contrib/ethon/integration.rb +0 -44
  732. data/lib/ddtrace/contrib/ethon/multi_patch.rb +0 -85
  733. data/lib/ddtrace/contrib/ethon/patcher.rb +0 -27
  734. data/lib/ddtrace/contrib/excon/configuration/settings.rb +0 -34
  735. data/lib/ddtrace/contrib/excon/ext.rb +0 -18
  736. data/lib/ddtrace/contrib/excon/integration.rb +0 -44
  737. data/lib/ddtrace/contrib/excon/middleware.rb +0 -164
  738. data/lib/ddtrace/contrib/excon/patcher.rb +0 -28
  739. data/lib/ddtrace/contrib/extensions.rb +0 -169
  740. data/lib/ddtrace/contrib/faraday/configuration/settings.rb +0 -39
  741. data/lib/ddtrace/contrib/faraday/connection.rb +0 -19
  742. data/lib/ddtrace/contrib/faraday/ext.rb +0 -18
  743. data/lib/ddtrace/contrib/faraday/integration.rb +0 -44
  744. data/lib/ddtrace/contrib/faraday/middleware.rb +0 -86
  745. data/lib/ddtrace/contrib/faraday/patcher.rb +0 -54
  746. data/lib/ddtrace/contrib/faraday/rack_builder.rb +0 -19
  747. data/lib/ddtrace/contrib/grape/configuration/settings.rb +0 -39
  748. data/lib/ddtrace/contrib/grape/endpoint.rb +0 -246
  749. data/lib/ddtrace/contrib/grape/ext.rb +0 -24
  750. data/lib/ddtrace/contrib/grape/instrumentation.rb +0 -34
  751. data/lib/ddtrace/contrib/grape/integration.rb +0 -40
  752. data/lib/ddtrace/contrib/grape/patcher.rb +0 -32
  753. data/lib/ddtrace/contrib/graphql/configuration/settings.rb +0 -33
  754. data/lib/ddtrace/contrib/graphql/ext.rb +0 -17
  755. data/lib/ddtrace/contrib/graphql/integration.rb +0 -40
  756. data/lib/ddtrace/contrib/graphql/patcher.rb +0 -61
  757. data/lib/ddtrace/contrib/grpc/configuration/settings.rb +0 -32
  758. data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +0 -59
  759. data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +0 -80
  760. data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +0 -79
  761. data/lib/ddtrace/contrib/grpc/ext.rb +0 -19
  762. data/lib/ddtrace/contrib/grpc/integration.rb +0 -39
  763. data/lib/ddtrace/contrib/grpc/intercept_with_datadog.rb +0 -50
  764. data/lib/ddtrace/contrib/grpc/patcher.rb +0 -34
  765. data/lib/ddtrace/contrib/http/circuit_breaker.rb +0 -38
  766. data/lib/ddtrace/contrib/http/configuration/settings.rb +0 -33
  767. data/lib/ddtrace/contrib/http/ext.rb +0 -18
  768. data/lib/ddtrace/contrib/http/instrumentation.rb +0 -180
  769. data/lib/ddtrace/contrib/http/integration.rb +0 -46
  770. data/lib/ddtrace/contrib/http/patcher.rb +0 -27
  771. data/lib/ddtrace/contrib/http_annotation_helper.rb +0 -11
  772. data/lib/ddtrace/contrib/httpclient/configuration/settings.rb +0 -33
  773. data/lib/ddtrace/contrib/httpclient/ext.rb +0 -18
  774. data/lib/ddtrace/contrib/httpclient/instrumentation.rb +0 -148
  775. data/lib/ddtrace/contrib/httpclient/integration.rb +0 -44
  776. data/lib/ddtrace/contrib/httpclient/patcher.rb +0 -39
  777. data/lib/ddtrace/contrib/httprb/configuration/settings.rb +0 -33
  778. data/lib/ddtrace/contrib/httprb/ext.rb +0 -18
  779. data/lib/ddtrace/contrib/httprb/instrumentation.rb +0 -158
  780. data/lib/ddtrace/contrib/httprb/integration.rb +0 -44
  781. data/lib/ddtrace/contrib/httprb/patcher.rb +0 -39
  782. data/lib/ddtrace/contrib/integration.rb +0 -17
  783. data/lib/ddtrace/contrib/kafka/configuration/settings.rb +0 -31
  784. data/lib/ddtrace/contrib/kafka/consumer_event.rb +0 -15
  785. data/lib/ddtrace/contrib/kafka/consumer_group_event.rb +0 -15
  786. data/lib/ddtrace/contrib/kafka/event.rb +0 -52
  787. data/lib/ddtrace/contrib/kafka/events/connection/request.rb +0 -35
  788. data/lib/ddtrace/contrib/kafka/events/consumer/process_batch.rb +0 -42
  789. data/lib/ddtrace/contrib/kafka/events/consumer/process_message.rb +0 -40
  790. data/lib/ddtrace/contrib/kafka/events/consumer_group/heartbeat.rb +0 -40
  791. data/lib/ddtrace/contrib/kafka/events/consumer_group/join_group.rb +0 -30
  792. data/lib/ddtrace/contrib/kafka/events/consumer_group/leave_group.rb +0 -30
  793. data/lib/ddtrace/contrib/kafka/events/consumer_group/sync_group.rb +0 -30
  794. data/lib/ddtrace/contrib/kafka/events/produce_operation/send_messages.rb +0 -33
  795. data/lib/ddtrace/contrib/kafka/events/producer/deliver_messages.rb +0 -36
  796. data/lib/ddtrace/contrib/kafka/events.rb +0 -45
  797. data/lib/ddtrace/contrib/kafka/ext.rb +0 -42
  798. data/lib/ddtrace/contrib/kafka/integration.rb +0 -40
  799. data/lib/ddtrace/contrib/kafka/patcher.rb +0 -27
  800. data/lib/ddtrace/contrib/lograge/configuration/settings.rb +0 -19
  801. data/lib/ddtrace/contrib/lograge/ext.rb +0 -11
  802. data/lib/ddtrace/contrib/lograge/instrumentation.rb +0 -39
  803. data/lib/ddtrace/contrib/lograge/integration.rb +0 -46
  804. data/lib/ddtrace/contrib/lograge/patcher.rb +0 -26
  805. data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +0 -34
  806. data/lib/ddtrace/contrib/mongodb/ext.rb +0 -24
  807. data/lib/ddtrace/contrib/mongodb/instrumentation.rb +0 -70
  808. data/lib/ddtrace/contrib/mongodb/integration.rb +0 -44
  809. data/lib/ddtrace/contrib/mongodb/parsers.rb +0 -69
  810. data/lib/ddtrace/contrib/mongodb/patcher.rb +0 -32
  811. data/lib/ddtrace/contrib/mongodb/subscribers.rb +0 -112
  812. data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +0 -31
  813. data/lib/ddtrace/contrib/mysql2/ext.rb +0 -19
  814. data/lib/ddtrace/contrib/mysql2/instrumentation.rb +0 -65
  815. data/lib/ddtrace/contrib/mysql2/integration.rb +0 -39
  816. data/lib/ddtrace/contrib/mysql2/patcher.rb +0 -28
  817. data/lib/ddtrace/contrib/patchable.rb +0 -71
  818. data/lib/ddtrace/contrib/patcher.rb +0 -66
  819. data/lib/ddtrace/contrib/presto/configuration/settings.rb +0 -31
  820. data/lib/ddtrace/contrib/presto/ext.rb +0 -29
  821. data/lib/ddtrace/contrib/presto/instrumentation.rb +0 -111
  822. data/lib/ddtrace/contrib/presto/integration.rb +0 -39
  823. data/lib/ddtrace/contrib/presto/patcher.rb +0 -34
  824. data/lib/ddtrace/contrib/qless/configuration/settings.rb +0 -36
  825. data/lib/ddtrace/contrib/qless/ext.rb +0 -21
  826. data/lib/ddtrace/contrib/qless/integration.rb +0 -39
  827. data/lib/ddtrace/contrib/qless/patcher.rb +0 -35
  828. data/lib/ddtrace/contrib/qless/qless_job.rb +0 -74
  829. data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +0 -34
  830. data/lib/ddtrace/contrib/que/configuration/settings.rb +0 -44
  831. data/lib/ddtrace/contrib/que/ext.rb +0 -31
  832. data/lib/ddtrace/contrib/que/integration.rb +0 -43
  833. data/lib/ddtrace/contrib/que/patcher.rb +0 -25
  834. data/lib/ddtrace/contrib/que/tracer.rb +0 -58
  835. data/lib/ddtrace/contrib/racecar/configuration/settings.rb +0 -31
  836. data/lib/ddtrace/contrib/racecar/event.rb +0 -77
  837. data/lib/ddtrace/contrib/racecar/events/batch.rb +0 -28
  838. data/lib/ddtrace/contrib/racecar/events/consume.rb +0 -28
  839. data/lib/ddtrace/contrib/racecar/events/message.rb +0 -28
  840. data/lib/ddtrace/contrib/racecar/events.rb +0 -33
  841. data/lib/ddtrace/contrib/racecar/ext.rb +0 -26
  842. data/lib/ddtrace/contrib/racecar/integration.rb +0 -40
  843. data/lib/ddtrace/contrib/racecar/patcher.rb +0 -27
  844. data/lib/ddtrace/contrib/rack/configuration/settings.rb +0 -47
  845. data/lib/ddtrace/contrib/rack/ext.rb +0 -22
  846. data/lib/ddtrace/contrib/rack/integration.rb +0 -46
  847. data/lib/ddtrace/contrib/rack/middlewares.rb +0 -288
  848. data/lib/ddtrace/contrib/rack/patcher.rb +0 -106
  849. data/lib/ddtrace/contrib/rack/request_queue.rb +0 -45
  850. data/lib/ddtrace/contrib/rails/auto_instrument_railtie.rb +0 -10
  851. data/lib/ddtrace/contrib/rails/configuration/settings.rb +0 -101
  852. data/lib/ddtrace/contrib/rails/ext.rb +0 -18
  853. data/lib/ddtrace/contrib/rails/framework.rb +0 -172
  854. data/lib/ddtrace/contrib/rails/integration.rb +0 -45
  855. data/lib/ddtrace/contrib/rails/log_injection.rb +0 -42
  856. data/lib/ddtrace/contrib/rails/middlewares.rb +0 -44
  857. data/lib/ddtrace/contrib/rails/patcher.rb +0 -119
  858. data/lib/ddtrace/contrib/rails/railtie.rb +0 -18
  859. data/lib/ddtrace/contrib/rails/utils.rb +0 -25
  860. data/lib/ddtrace/contrib/rake/configuration/settings.rb +0 -32
  861. data/lib/ddtrace/contrib/rake/ext.rb +0 -22
  862. data/lib/ddtrace/contrib/rake/instrumentation.rb +0 -91
  863. data/lib/ddtrace/contrib/rake/integration.rb +0 -39
  864. data/lib/ddtrace/contrib/rake/patcher.rb +0 -31
  865. data/lib/ddtrace/contrib/redis/configuration/resolver.rb +0 -46
  866. data/lib/ddtrace/contrib/redis/configuration/settings.rb +0 -36
  867. data/lib/ddtrace/contrib/redis/ext.rb +0 -23
  868. data/lib/ddtrace/contrib/redis/instrumentation.rb +0 -90
  869. data/lib/ddtrace/contrib/redis/integration.rb +0 -43
  870. data/lib/ddtrace/contrib/redis/patcher.rb +0 -33
  871. data/lib/ddtrace/contrib/redis/quantize.rb +0 -76
  872. data/lib/ddtrace/contrib/redis/tags.rb +0 -47
  873. data/lib/ddtrace/contrib/redis/vendor/resolver.rb +0 -159
  874. data/lib/ddtrace/contrib/registerable.rb +0 -33
  875. data/lib/ddtrace/contrib/registry.rb +0 -43
  876. data/lib/ddtrace/contrib/resque/configuration/settings.rb +0 -49
  877. data/lib/ddtrace/contrib/resque/ext.rb +0 -18
  878. data/lib/ddtrace/contrib/resque/integration.rb +0 -44
  879. data/lib/ddtrace/contrib/resque/patcher.rb +0 -30
  880. data/lib/ddtrace/contrib/resque/resque_job.rb +0 -104
  881. data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +0 -32
  882. data/lib/ddtrace/contrib/rest_client/ext.rb +0 -18
  883. data/lib/ddtrace/contrib/rest_client/integration.rb +0 -39
  884. data/lib/ddtrace/contrib/rest_client/patcher.rb +0 -25
  885. data/lib/ddtrace/contrib/rest_client/request_patch.rb +0 -92
  886. data/lib/ddtrace/contrib/semantic_logger/configuration/settings.rb +0 -19
  887. data/lib/ddtrace/contrib/semantic_logger/ext.rb +0 -11
  888. data/lib/ddtrace/contrib/semantic_logger/instrumentation.rb +0 -43
  889. data/lib/ddtrace/contrib/semantic_logger/integration.rb +0 -48
  890. data/lib/ddtrace/contrib/semantic_logger/patcher.rb +0 -26
  891. data/lib/ddtrace/contrib/sequel/configuration/settings.rb +0 -29
  892. data/lib/ddtrace/contrib/sequel/database.rb +0 -64
  893. data/lib/ddtrace/contrib/sequel/dataset.rb +0 -64
  894. data/lib/ddtrace/contrib/sequel/ext.rb +0 -20
  895. data/lib/ddtrace/contrib/sequel/integration.rb +0 -39
  896. data/lib/ddtrace/contrib/sequel/patcher.rb +0 -34
  897. data/lib/ddtrace/contrib/sequel/utils.rb +0 -75
  898. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +0 -32
  899. data/lib/ddtrace/contrib/shoryuken/ext.rb +0 -22
  900. data/lib/ddtrace/contrib/shoryuken/integration.rb +0 -40
  901. data/lib/ddtrace/contrib/shoryuken/patcher.rb +0 -25
  902. data/lib/ddtrace/contrib/shoryuken/tracer.rb +0 -56
  903. data/lib/ddtrace/contrib/sidekiq/client_tracer.rb +0 -44
  904. data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +0 -38
  905. data/lib/ddtrace/contrib/sidekiq/ext.rb +0 -31
  906. data/lib/ddtrace/contrib/sidekiq/integration.rb +0 -49
  907. data/lib/ddtrace/contrib/sidekiq/patcher.rb +0 -68
  908. data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/heartbeat.rb +0 -30
  909. data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/job_fetch.rb +0 -30
  910. data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/scheduled_push.rb +0 -29
  911. data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +0 -66
  912. data/lib/ddtrace/contrib/sidekiq/tracing.rb +0 -45
  913. data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +0 -40
  914. data/lib/ddtrace/contrib/sinatra/env.rb +0 -59
  915. data/lib/ddtrace/contrib/sinatra/ext.rb +0 -28
  916. data/lib/ddtrace/contrib/sinatra/headers.rb +0 -30
  917. data/lib/ddtrace/contrib/sinatra/integration.rb +0 -39
  918. data/lib/ddtrace/contrib/sinatra/patcher.rb +0 -30
  919. data/lib/ddtrace/contrib/sinatra/tracer.rb +0 -150
  920. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +0 -112
  921. data/lib/ddtrace/contrib/sneakers/configuration/settings.rb +0 -34
  922. data/lib/ddtrace/contrib/sneakers/ext.rb +0 -23
  923. data/lib/ddtrace/contrib/sneakers/integration.rb +0 -42
  924. data/lib/ddtrace/contrib/sneakers/patcher.rb +0 -25
  925. data/lib/ddtrace/contrib/sneakers/tracer.rb +0 -54
  926. data/lib/ddtrace/contrib/status_code_matcher.rb +0 -70
  927. data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +0 -31
  928. data/lib/ddtrace/contrib/sucker_punch/exception_handler.rb +0 -25
  929. data/lib/ddtrace/contrib/sucker_punch/ext.rb +0 -22
  930. data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +0 -89
  931. data/lib/ddtrace/contrib/sucker_punch/integration.rb +0 -39
  932. data/lib/ddtrace/contrib/sucker_punch/patcher.rb +0 -44
  933. data/lib/ddtrace/correlation.rb +0 -40
  934. data/lib/ddtrace/diagnostics/environment_logger.rb +0 -280
  935. data/lib/ddtrace/diagnostics/health.rb +0 -34
  936. data/lib/ddtrace/distributed_tracing/headers/b3.rb +0 -45
  937. data/lib/ddtrace/distributed_tracing/headers/b3_single.rb +0 -57
  938. data/lib/ddtrace/distributed_tracing/headers/datadog.rb +0 -43
  939. data/lib/ddtrace/distributed_tracing/headers/headers.rb +0 -72
  940. data/lib/ddtrace/distributed_tracing/headers/helpers.rb +0 -44
  941. data/lib/ddtrace/encoding.rb +0 -72
  942. data/lib/ddtrace/error.rb +0 -97
  943. data/lib/ddtrace/event.rb +0 -53
  944. data/lib/ddtrace/ext/analytics.rb +0 -13
  945. data/lib/ddtrace/ext/app_types.rb +0 -12
  946. data/lib/ddtrace/ext/correlation.rb +0 -12
  947. data/lib/ddtrace/ext/diagnostics.rb +0 -37
  948. data/lib/ddtrace/ext/distributed.rb +0 -40
  949. data/lib/ddtrace/ext/environment.rb +0 -24
  950. data/lib/ddtrace/ext/errors.rb +0 -11
  951. data/lib/ddtrace/ext/forced_tracing.rb +0 -26
  952. data/lib/ddtrace/ext/git.rb +0 -32
  953. data/lib/ddtrace/ext/http.rb +0 -47
  954. data/lib/ddtrace/ext/integration.rb +0 -9
  955. data/lib/ddtrace/ext/manual_tracing.rb +0 -10
  956. data/lib/ddtrace/ext/metrics.rb +0 -16
  957. data/lib/ddtrace/ext/net.rb +0 -11
  958. data/lib/ddtrace/ext/priority.rb +0 -19
  959. data/lib/ddtrace/ext/profiling.rb +0 -53
  960. data/lib/ddtrace/ext/runtime.rb +0 -25
  961. data/lib/ddtrace/ext/sampling.rb +0 -17
  962. data/lib/ddtrace/ext/sql.rb +0 -9
  963. data/lib/ddtrace/ext/test.rb +0 -9
  964. data/lib/ddtrace/ext/transport.rb +0 -32
  965. data/lib/ddtrace/forced_tracing.rb +0 -39
  966. data/lib/ddtrace/logger.rb +0 -41
  967. data/lib/ddtrace/metrics.rb +0 -282
  968. data/lib/ddtrace/opentelemetry/extensions.rb +0 -14
  969. data/lib/ddtrace/opentelemetry/span.rb +0 -34
  970. data/lib/ddtrace/opentracer/carrier.rb +0 -7
  971. data/lib/ddtrace/opentracer/distributed_headers.rb +0 -56
  972. data/lib/ddtrace/opentracer/global_tracer.rb +0 -16
  973. data/lib/ddtrace/opentracer/propagator.rb +0 -23
  974. data/lib/ddtrace/opentracer/rack_propagator.rb +0 -61
  975. data/lib/ddtrace/opentracer/scope.rb +0 -16
  976. data/lib/ddtrace/opentracer/scope_manager.rb +0 -7
  977. data/lib/ddtrace/opentracer/span.rb +0 -95
  978. data/lib/ddtrace/opentracer/span_context.rb +0 -15
  979. data/lib/ddtrace/opentracer/span_context_factory.rb +0 -24
  980. data/lib/ddtrace/opentracer/text_map_propagator.rb +0 -76
  981. data/lib/ddtrace/opentracer/thread_local_scope.rb +0 -32
  982. data/lib/ddtrace/opentracer/thread_local_scope_manager.rb +0 -41
  983. data/lib/ddtrace/opentracer/tracer.rb +0 -209
  984. data/lib/ddtrace/opentracer.rb +0 -22
  985. data/lib/ddtrace/patcher.rb +0 -69
  986. data/lib/ddtrace/pin.rb +0 -86
  987. data/lib/ddtrace/pipeline/span_filter.rb +0 -39
  988. data/lib/ddtrace/pipeline/span_processor.rb +0 -21
  989. data/lib/ddtrace/pipeline.rb +0 -47
  990. data/lib/ddtrace/profiling/buffer.rb +0 -42
  991. data/lib/ddtrace/profiling/collectors/stack.rb +0 -297
  992. data/lib/ddtrace/profiling/encoding/profile.rb +0 -46
  993. data/lib/ddtrace/profiling/events/stack.rb +0 -81
  994. data/lib/ddtrace/profiling/exporter.rb +0 -24
  995. data/lib/ddtrace/profiling/flush.rb +0 -44
  996. data/lib/ddtrace/profiling/pprof/builder.rb +0 -126
  997. data/lib/ddtrace/profiling/pprof/converter.rb +0 -103
  998. data/lib/ddtrace/profiling/pprof/message_set.rb +0 -15
  999. data/lib/ddtrace/profiling/pprof/pprof_pb.rb +0 -82
  1000. data/lib/ddtrace/profiling/pprof/stack_sample.rb +0 -140
  1001. data/lib/ddtrace/profiling/pprof/string_table.rb +0 -11
  1002. data/lib/ddtrace/profiling/pprof/template.rb +0 -119
  1003. data/lib/ddtrace/profiling/profiler.rb +0 -31
  1004. data/lib/ddtrace/profiling/recorder.rb +0 -96
  1005. data/lib/ddtrace/profiling/scheduler.rb +0 -150
  1006. data/lib/ddtrace/profiling/tasks/setup.rb +0 -90
  1007. data/lib/ddtrace/profiling/trace_identifiers/ddtrace.rb +0 -42
  1008. data/lib/ddtrace/profiling/trace_identifiers/helper.rb +0 -46
  1009. data/lib/ddtrace/profiling/transport/http/api/endpoint.rb +0 -94
  1010. data/lib/ddtrace/profiling/transport/http/api/instance.rb +0 -37
  1011. data/lib/ddtrace/profiling/transport/http/api.rb +0 -44
  1012. data/lib/ddtrace/profiling/transport/http/builder.rb +0 -29
  1013. data/lib/ddtrace/profiling/transport/http/client.rb +0 -34
  1014. data/lib/ddtrace/profiling/transport/http/response.rb +0 -22
  1015. data/lib/ddtrace/profiling/transport/http.rb +0 -111
  1016. data/lib/ddtrace/profiling/transport/io/client.rb +0 -28
  1017. data/lib/ddtrace/profiling/transport/io/response.rb +0 -17
  1018. data/lib/ddtrace/profiling/transport/io.rb +0 -31
  1019. data/lib/ddtrace/profiling/transport/request.rb +0 -16
  1020. data/lib/ddtrace/profiling.rb +0 -149
  1021. data/lib/ddtrace/propagation/grpc_propagator.rb +0 -75
  1022. data/lib/ddtrace/propagation/http_propagator.rb +0 -91
  1023. data/lib/ddtrace/quantization/hash.rb +0 -104
  1024. data/lib/ddtrace/quantization/http.rb +0 -90
  1025. data/lib/ddtrace/runtime/metrics.rb +0 -135
  1026. data/lib/ddtrace/sampler.rb +0 -303
  1027. data/lib/ddtrace/sampling/matcher.rb +0 -58
  1028. data/lib/ddtrace/sampling/rate_limiter.rb +0 -177
  1029. data/lib/ddtrace/sampling/rule.rb +0 -62
  1030. data/lib/ddtrace/sampling/rule_sampler.rb +0 -133
  1031. data/lib/ddtrace/sampling.rb +0 -3
  1032. data/lib/ddtrace/span.rb +0 -445
  1033. data/lib/ddtrace/sync_writer.rb +0 -69
  1034. data/lib/ddtrace/tasks/exec.rb +0 -47
  1035. data/lib/ddtrace/tasks/help.rb +0 -15
  1036. data/lib/ddtrace/tracer.rb +0 -449
  1037. data/lib/ddtrace/utils/compression.rb +0 -28
  1038. data/lib/ddtrace/utils/database.rb +0 -26
  1039. data/lib/ddtrace/utils/forking.rb +0 -53
  1040. data/lib/ddtrace/utils/object_set.rb +0 -40
  1041. data/lib/ddtrace/utils/only_once.rb +0 -41
  1042. data/lib/ddtrace/utils/sequence.rb +0 -18
  1043. data/lib/ddtrace/utils/string_table.rb +0 -46
  1044. data/lib/ddtrace/utils/time.rb +0 -51
  1045. data/lib/ddtrace/utils.rb +0 -80
  1046. data/lib/ddtrace/vendor/active_record/connection_specification.rb +0 -302
  1047. data/lib/ddtrace/vendor/multipart-post/multipart/post/composite_read_io.rb +0 -117
  1048. data/lib/ddtrace/vendor/multipart-post/multipart/post/multipartable.rb +0 -58
  1049. data/lib/ddtrace/vendor/multipart-post/multipart/post/parts.rb +0 -136
  1050. data/lib/ddtrace/vendor/multipart-post/multipart/post/version.rb +0 -10
  1051. data/lib/ddtrace/vendor/multipart-post/multipart/post.rb +0 -9
  1052. data/lib/ddtrace/vendor/multipart-post/multipart.rb +0 -13
  1053. data/lib/ddtrace/vendor/multipart-post/net/http/post/multipart.rb +0 -33
  1054. data/lib/ddtrace/worker.rb +0 -21
  1055. data/lib/ddtrace/workers/async.rb +0 -175
  1056. data/lib/ddtrace/workers/interval_loop.rb +0 -116
  1057. data/lib/ddtrace/workers/polling.rb +0 -56
  1058. data/lib/ddtrace/workers/queue.rb +0 -41
  1059. data/lib/ddtrace/workers/runtime_metrics.rb +0 -65
  1060. data/lib/ddtrace/workers/trace_writer.rb +0 -200
  1061. data/lib/ddtrace/workers.rb +0 -123
  1062. data/lib/ddtrace/writer.rb +0 -200
@@ -0,0 +1,118 @@
1
+ require 'datadog/core/error'
2
+ require 'datadog/core/environment/ext'
3
+
4
+ require 'datadog/tracing/metadata/ext'
5
+
6
+ module Datadog
7
+ module Tracing
8
+ module Metadata
9
+ # Adds metadata & metric tag behavior
10
+ # @public_api
11
+ module Tagging
12
+ # This limit is for numeric tags because uint64 could end up rounded.
13
+ NUMERIC_TAG_SIZE_RANGE = (-1 << 53..1 << 53).freeze
14
+
15
+ # Some associated values should always be sent as Tags, never as Metrics, regardless
16
+ # if their value is numeric or not.
17
+ # The Datadog agent will look for these values only as Tags, not Metrics.
18
+ # @see https://github.com/DataDog/datadog-agent/blob/2ae2cdd315bcda53166dd8fa0dedcfc448087b9d/pkg/trace/stats/aggregation.go#L13-L17
19
+ ENSURE_AGENT_TAGS = {
20
+ Ext::Distributed::TAG_ORIGIN => true,
21
+ Core::Environment::Ext::TAG_VERSION => true,
22
+ Ext::HTTP::TAG_STATUS_CODE => true,
23
+ Ext::NET::TAG_HOSTNAME => true
24
+ }.freeze
25
+
26
+ # Return the tag with the given key, nil if it doesn't exist.
27
+ def get_tag(key)
28
+ meta[key] || metrics[key]
29
+ end
30
+
31
+ # Set the given key / value tag pair on the span. Keys and values
32
+ # must be strings. A valid example is:
33
+ #
34
+ # span.set_tag('http.method', request.method)
35
+ def set_tag(key, value = nil)
36
+ # Keys must be unique between tags and metrics
37
+ metrics.delete(key)
38
+
39
+ # DEV: This is necessary because the agent looks at `meta[key]`, not `metrics[key]`.
40
+ value = value.to_s if ENSURE_AGENT_TAGS[key]
41
+
42
+ # NOTE: Adding numeric tags as metrics is stop-gap support
43
+ # for numeric typed tags. Eventually they will become
44
+ # tags again.
45
+ # Any numeric that is not an integer greater than max size is logged as a metric.
46
+ # Everything else gets logged as a tag.
47
+ if value.is_a?(Numeric) && !(value.is_a?(Integer) && !NUMERIC_TAG_SIZE_RANGE.cover?(value))
48
+ set_metric(key, value)
49
+ else
50
+ # Encode strings in UTF-8 to facilitate downstream serialization
51
+ meta[Core::Utils.utf8_encode(key)] = Core::Utils.utf8_encode(value)
52
+ end
53
+ rescue StandardError => e
54
+ Datadog.logger.debug("Unable to set the tag #{key}, ignoring it. Caused by: #{e}")
55
+ end
56
+
57
+ # Sets tags from given hash, for each key in hash it sets the tag with that key
58
+ # and associated value from the hash. It is shortcut for `set_tag`. Keys and values
59
+ # of the hash must be strings. Note that nested hashes are not supported.
60
+ # A valid example is:
61
+ #
62
+ # span.set_tags({ "http.method" => "GET", "user.id" => "234" })
63
+ def set_tags(tags)
64
+ tags.each { |k, v| set_tag(k, v) }
65
+ end
66
+
67
+ # This method removes a tag for the given key.
68
+ def clear_tag(key)
69
+ meta.delete(key)
70
+ end
71
+
72
+ # Return the metric with the given key, nil if it doesn't exist.
73
+ def get_metric(key)
74
+ metrics[key] || meta[key]
75
+ end
76
+
77
+ # This method sets a tag with a floating point value for the given key. It acts
78
+ # like `set_tag()` and it simply add a tag without further processing.
79
+ def set_metric(key, value)
80
+ # Keys must be unique between tags and metrics
81
+ meta.delete(key)
82
+
83
+ # enforce that the value is a floating point number
84
+ value = Float(value)
85
+
86
+ # Encode strings in UTF-8 to facilitate downstream serialization
87
+ metrics[Core::Utils.utf8_encode(key)] = value
88
+ rescue StandardError => e
89
+ Datadog.logger.debug("Unable to set the metric #{key}, ignoring it. Caused by: #{e}")
90
+ end
91
+
92
+ # This method removes a metric for the given key. It acts like {#clear_tag}.
93
+ def clear_metric(key)
94
+ metrics.delete(key)
95
+ end
96
+
97
+ # Mark the span with the given error.
98
+ def set_error(e)
99
+ e = Core::Error.build_from(e)
100
+
101
+ set_tag(Ext::Errors::TAG_TYPE, e.type) unless e.type.empty?
102
+ set_tag(Ext::Errors::TAG_MSG, e.message) unless e.message.empty?
103
+ set_tag(Ext::Errors::TAG_STACK, e.backtrace) unless e.backtrace.empty?
104
+ end
105
+
106
+ protected
107
+
108
+ def meta
109
+ @meta ||= {}
110
+ end
111
+
112
+ def metrics
113
+ @metrics ||= {}
114
+ end
115
+ end
116
+ end
117
+ end
118
+ end
@@ -0,0 +1,16 @@
1
+ require 'datadog/tracing/metadata/analytics'
2
+ require 'datadog/tracing/metadata/tagging'
3
+
4
+ module Datadog
5
+ module Tracing
6
+ # Adds common tagging behavior
7
+ module Metadata
8
+ def self.included(base)
9
+ base.include(Metadata::Tagging)
10
+
11
+ # Additional extensions
12
+ base.prepend(Metadata::Analytics)
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,42 @@
1
+ # typed: true
2
+
3
+ require 'set'
4
+ require 'datadog/tracing/pipeline/span_processor'
5
+
6
+ module Datadog
7
+ module Tracing
8
+ module Pipeline
9
+ # SpanFilter implements a processor that filters entire span subtrees
10
+ # This processor executes the configured `operation` for each {Datadog::Tracing::Span}
11
+ # in a {Datadog::Tracing::TraceSegment}.
12
+ #
13
+ # If `operation` returns a truthy value for a span, that span is kept,
14
+ # otherwise the span is removed from the trace.
15
+ #
16
+ # @public_api
17
+ class SpanFilter < SpanProcessor
18
+ # NOTE: this SpanFilter implementation only handles traces in which child spans appear
19
+ # after parent spans in the trace array. If in the future child spans can be before
20
+ # parent spans, then the code below will need to be updated.
21
+ # @!visibility private
22
+ def call(trace)
23
+ deleted = Set.new
24
+
25
+ trace.spans.delete_if do |span|
26
+ should_delete = deleted.include?(span.parent_id) || drop_it?(span)
27
+ deleted << span.id if should_delete
28
+ should_delete
29
+ end
30
+
31
+ trace
32
+ end
33
+
34
+ private
35
+
36
+ def drop_it?(span)
37
+ @operation.call(span) rescue false
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,38 @@
1
+ # typed: true
2
+ module Datadog
3
+ module Tracing
4
+ module Pipeline
5
+ # This processor executes the configured `operation` for each {Datadog::Tracing::Span}
6
+ # in a {Datadog::Tracing::TraceSegment}.
7
+ #
8
+ # @public_api
9
+ class SpanProcessor
10
+ # You can either provide an `operation` object or a block to this method.
11
+ #
12
+ # Both have the same semantics as `operation`.
13
+ # `operation` is used if both `operation` and a block are present.
14
+ #
15
+ # @param [#call(Datadog::Tracing::Span)] operation a callable that can modify the span.
16
+ def initialize(operation = nil, &block)
17
+ callable = operation || block
18
+
19
+ raise(ArgumentError) unless callable.respond_to?(:call)
20
+
21
+ @operation = operation || block
22
+ end
23
+
24
+ # Invokes `operation#call` for each spans in the `trace` argument.
25
+ # @param [Datadog::Tracing::TraceSegment] trace a trace segment.
26
+ # @return [Datadog::Tracing::TraceSegment] the `trace` provided as an argument.
27
+ # @!visibility private
28
+ def call(trace)
29
+ trace.spans.each do |span|
30
+ @operation.call(span) rescue next
31
+ end
32
+
33
+ trace
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,65 @@
1
+ # typed: true
2
+
3
+ require 'datadog/core'
4
+
5
+ require 'datadog/tracing/pipeline/span_filter'
6
+ require 'datadog/tracing/pipeline/span_processor'
7
+
8
+ module Datadog
9
+ module Tracing
10
+ # Modifies traces through a set of filters and processors
11
+ module Pipeline
12
+ @mutex = Mutex.new
13
+ @processors = []
14
+
15
+ # @see file:docs/GettingStarted.md#configuring-the-transport-layer Configuring the transport layer
16
+ #
17
+ # @overload before_flush(*processors)
18
+ # @param [Array<Datadog::Tracing::Pipeline::SpanProcessor>] processors a list of processors that can modify
19
+ # or filter the trace.
20
+ # @param [Array<#call(Datadog::Tracing::TraceSegment)>] processors a list of callable objects that receive a
21
+ # {Datadog::Tracing::TraceSegment} and can modify or filter the trace.
22
+ # @overload before_flush(&processor_block)
23
+ # @yield Receive a {Datadog::Tracing::TraceSegment} and can modify or filter the trace.
24
+ # @yieldparam [Datadog::Tracing::TraceSegment] trace trace object that can be modified or filtered.
25
+ # @yieldreturn [Datadog::Tracing::TraceSegment] the trace object that will be passed to the next processor. Normally
26
+ # the same `trace` parameter object should be returned.
27
+ def self.before_flush(*processors, &processor_block)
28
+ processors << processor_block if processor_block
29
+
30
+ @mutex.synchronize do
31
+ @processors.concat(processors)
32
+ end
33
+ end
34
+
35
+ def self.process!(traces)
36
+ @mutex.synchronize do
37
+ traces
38
+ .map { |trace| apply_processors!(trace) }
39
+ .compact
40
+ end
41
+ end
42
+
43
+ def self.processors=(value)
44
+ @processors = value
45
+ end
46
+
47
+ def self.apply_processors!(trace)
48
+ @processors.inject(trace) do |current_trace, processor|
49
+ next nil if current_trace.nil? || current_trace.empty?
50
+
51
+ process_result = processor.call(current_trace)
52
+ process_result && process_result.empty? ? nil : process_result
53
+ end
54
+ rescue => e
55
+ Datadog.logger.debug(
56
+ "trace dropped entirely due to `Pipeline.before_flush` error: #{e}"
57
+ )
58
+
59
+ nil
60
+ end
61
+
62
+ private_class_method :apply_processors!
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,87 @@
1
+ # typed: true
2
+ require 'datadog/tracing/distributed/headers/ext'
3
+ require 'datadog/tracing/span'
4
+ require 'datadog/tracing/trace_digest'
5
+ require 'datadog/tracing/trace_operation'
6
+
7
+ module Datadog
8
+ module Tracing
9
+ module Propagation
10
+ # opentracing.io compliant methods for distributing trace headers
11
+ # between two or more distributed services. Note this is very close
12
+ # to the Propagation::HTTP; the key difference is the way gRPC handles
13
+ # header information (called "metadata") as it operates over HTTP2
14
+ module GRPC
15
+ include Distributed::Headers::Ext
16
+
17
+ def self.inject!(digest, metadata)
18
+ return if digest.nil?
19
+
20
+ digest = digest.to_digest if digest.is_a?(TraceOperation)
21
+
22
+ metadata[GRPC_METADATA_TRACE_ID] = digest.trace_id.to_s
23
+ metadata[GRPC_METADATA_PARENT_ID] = digest.span_id.to_s
24
+ metadata[GRPC_METADATA_SAMPLING_PRIORITY] = digest.trace_sampling_priority.to_s if digest.trace_sampling_priority
25
+ metadata[GRPC_METADATA_ORIGIN] = digest.trace_origin.to_s if digest.trace_origin
26
+ end
27
+
28
+ def self.extract(metadata)
29
+ metadata = Carrier.new(metadata)
30
+ return nil unless metadata.valid?
31
+
32
+ TraceDigest.new(
33
+ span_id: metadata.parent_id,
34
+ trace_id: metadata.trace_id,
35
+ trace_origin: metadata.origin,
36
+ trace_sampling_priority: metadata.sampling_priority
37
+ )
38
+ end
39
+
40
+ # opentracing.io compliant carrier object
41
+ class Carrier
42
+ include Distributed::Headers::Ext
43
+
44
+ def initialize(metadata = {})
45
+ @metadata = metadata || {}
46
+ end
47
+
48
+ def valid?
49
+ trace_id && parent_id
50
+ end
51
+
52
+ def trace_id
53
+ value = metadata_for_key(GRPC_METADATA_TRACE_ID).to_i
54
+ value if (1..Span::EXTERNAL_MAX_ID).cover? value
55
+ end
56
+
57
+ def parent_id
58
+ value = metadata_for_key(GRPC_METADATA_PARENT_ID).to_i
59
+ value if (1..Span::EXTERNAL_MAX_ID).cover? value
60
+ end
61
+
62
+ def sampling_priority
63
+ value = metadata_for_key(GRPC_METADATA_SAMPLING_PRIORITY)
64
+ value && value.to_i
65
+ end
66
+
67
+ def origin
68
+ value = metadata_for_key(GRPC_METADATA_ORIGIN)
69
+ value if value != ''
70
+ end
71
+
72
+ private
73
+
74
+ def metadata_for_key(key)
75
+ # metadata values can be arrays (multiple headers with the same key)
76
+ value = @metadata[key]
77
+ if value.is_a?(Array)
78
+ value.first
79
+ else
80
+ value
81
+ end
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,108 @@
1
+ # typed: false
2
+ require 'datadog/core'
3
+
4
+ require 'datadog/tracing/configuration/ext'
5
+ require 'datadog/tracing/sampling/ext'
6
+ require 'datadog/tracing/distributed/headers/b3'
7
+ require 'datadog/tracing/distributed/headers/b3_single'
8
+ require 'datadog/tracing/distributed/headers/datadog'
9
+
10
+ require 'datadog/tracing/trace_digest'
11
+ require 'datadog/tracing/trace_operation'
12
+
13
+ module Datadog
14
+ module Tracing
15
+ module Propagation
16
+ # Propagation::HTTP helps extracting and injecting HTTP headers.
17
+ # @public_api
18
+ module HTTP
19
+ PROPAGATION_STYLES = {
20
+ Configuration::Ext::Distributed::PROPAGATION_STYLE_B3 => Distributed::Headers::B3,
21
+ Configuration::Ext::Distributed::PROPAGATION_STYLE_B3_SINGLE_HEADER => Distributed::Headers::B3Single,
22
+ Configuration::Ext::Distributed::PROPAGATION_STYLE_DATADOG => Distributed::Headers::Datadog
23
+ }.freeze
24
+
25
+ # inject! popolates the env with span ID, trace ID and sampling priority
26
+ def self.inject!(digest, env)
27
+ # Prevent propagation from being attempted if trace headers provided are nil.
28
+ if digest.nil?
29
+ Datadog.logger.debug(
30
+ 'Cannot inject trace headers into env to propagate over HTTP: trace headers are nil.'.freeze
31
+ )
32
+ return
33
+ end
34
+
35
+ digest = digest.to_digest if digest.is_a?(TraceOperation)
36
+
37
+ # Inject all configured propagation styles
38
+ Datadog.configuration.tracing.distributed_tracing.propagation_inject_style.each do |style|
39
+ propagator = PROPAGATION_STYLES[style]
40
+ begin
41
+ propagator.inject!(digest, env) unless propagator.nil?
42
+ rescue => e
43
+ Datadog.logger.error(
44
+ 'Error injecting propagated trace headers into the environment. ' \
45
+ "Cause: #{e} Location: #{Array(e.backtrace).first}"
46
+ )
47
+ end
48
+ end
49
+ end
50
+
51
+ # extract returns trace headers containing the span ID, trace ID and
52
+ # sampling priority defined in env.
53
+ def self.extract(env)
54
+ trace_digest = nil
55
+ dd_trace_digest = nil
56
+
57
+ Datadog.configuration.tracing.distributed_tracing.propagation_extract_style.each do |style|
58
+ propagator = PROPAGATION_STYLES[style]
59
+ next if propagator.nil?
60
+
61
+ # Extract trace headers
62
+ # DEV: `propagator.extract` will return `nil`, where `Propagation::HTTP#extract` will not
63
+ begin
64
+ extracted_trace_digest = propagator.extract(env)
65
+ rescue => e
66
+ Datadog.logger.error(
67
+ 'Error extracting propagated trace headers from the environment. ' \
68
+ "Cause: #{e} Location: #{Array(e.backtrace).first}"
69
+ )
70
+ end
71
+
72
+ # Skip this style if no valid headers were found
73
+ next if extracted_trace_digest.nil?
74
+
75
+ # Keep track of the Datadog extract trace headers, we want to return
76
+ # this one if we have one
77
+ if extracted_trace_digest && style == Configuration::Ext::Distributed::PROPAGATION_STYLE_DATADOG
78
+ dd_trace_digest = extracted_trace_digest
79
+ end
80
+
81
+ # No previously extracted trace headers, use the one we just extracted
82
+ if trace_digest.nil?
83
+ trace_digest = extracted_trace_digest
84
+ else
85
+ unless trace_digest.trace_id == extracted_trace_digest.trace_id \
86
+ && trace_digest.span_id == extracted_trace_digest.span_id
87
+ # Return an empty/new trace headers if we have a mismatch in values extracted
88
+ msg = "#{trace_digest.trace_id} != #{extracted_trace_digest.trace_id} && " \
89
+ "#{trace_digest.span_id} != #{extracted_trace_digest.span_id}"
90
+ Datadog.logger.debug(
91
+ "Cannot extract trace headers from HTTP: extracted trace headers differ, #{msg}"
92
+ )
93
+ # DEV: This will return from `self.extract` not this `each` block
94
+ return TraceDigest.new
95
+ end
96
+ end
97
+ end
98
+
99
+ # Return the extracted trace headers if we found one or else a new empty trace headers
100
+ # Always return the Datadog trace headers if one exists since it has more
101
+ # information than the B3 headers e.g. origin, expanded priority
102
+ # sampling values, etc
103
+ dd_trace_digest || trace_digest || nil
104
+ end
105
+ end
106
+ end
107
+ end
108
+ end
@@ -0,0 +1,18 @@
1
+ # typed: true
2
+ require 'datadog/core'
3
+
4
+ module Datadog
5
+ module Tracing
6
+ module Runtime
7
+ # Decorates runtime metrics feature
8
+ module Metrics
9
+ def self.associate_trace(trace)
10
+ return unless trace && !trace.empty?
11
+
12
+ # Register service as associated with metrics
13
+ Datadog.send(:components).runtime_metrics.register_service(trace.service) unless trace.service.nil?
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,24 @@
1
+ # typed: true
2
+ require 'datadog/tracing/sampling/sampler'
3
+
4
+ module Datadog
5
+ module Tracing
6
+ module Sampling
7
+ # {Datadog::Tracing::Sampling::AllSampler} samples all the traces.
8
+ # @public_api
9
+ class AllSampler < Sampler
10
+ def sample?(_trace)
11
+ true
12
+ end
13
+
14
+ def sample!(trace)
15
+ trace.sampled = true
16
+ end
17
+
18
+ def sample_rate(*_)
19
+ 1.0
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,26 @@
1
+ # typed: strict
2
+ module Datadog
3
+ module Tracing
4
+ module Sampling
5
+ module Ext
6
+ # Priority is a hint given to the backend so that it knows which traces to reject or kept.
7
+ # In a distributed context, it should be set before any context propagation (fork, RPC calls) to be effective.
8
+ # @public_api
9
+ module Priority
10
+ # Use this to explicitly inform the backend that a trace MUST be rejected and not stored.
11
+ # This includes rules and rate limits configured by the user
12
+ # through the {Datadog::Tracing::Sampling::RuleSampler}.
13
+ USER_REJECT = -1
14
+ # Used by the {PrioritySampler} to inform the backend that a trace should be rejected and not stored.
15
+ AUTO_REJECT = 0
16
+ # Used by the {PrioritySampler} to inform the backend that a trace should be kept and stored.
17
+ AUTO_KEEP = 1
18
+ # Use this to explicitly inform the backend that a trace MUST be kept and stored.
19
+ # This includes rules and rate limits configured by the user
20
+ # through the {Datadog::Tracing::Sampling::RuleSampler}.
21
+ USER_KEEP = 2
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,67 @@
1
+ # typed: true
2
+ module Datadog
3
+ module Tracing
4
+ module Sampling
5
+ # Checks if a trace conforms to a matching criteria.
6
+ # @abstract
7
+ # @public_api
8
+ class Matcher
9
+ # Returns `true` if the trace should conforms to this rule, `false` otherwise
10
+ #
11
+ # @param [TraceOperation] trace
12
+ # @return [Boolean]
13
+ def match?(trace)
14
+ raise NotImplementedError
15
+ end
16
+ end
17
+
18
+ # A {Datadog::Sampling::Matcher} that supports matching a trace by
19
+ # trace name and/or service name.
20
+ # @public_api
21
+ class SimpleMatcher < Matcher
22
+ # Returns `true` for case equality (===) with any object
23
+ MATCH_ALL = Class.new do
24
+ # DEV: A class that implements `#===` is ~20% faster than
25
+ # DEV: a `Proc` that always returns `true`.
26
+ def ===(other)
27
+ true
28
+ end
29
+ end.new
30
+
31
+ attr_reader :name, :service
32
+
33
+ # @param name [String,Regexp,Proc] Matcher for case equality (===) with the trace name,
34
+ # defaults to always match
35
+ # @param service [String,Regexp,Proc] Matcher for case equality (===) with the service name,
36
+ # defaults to always match
37
+ def initialize(name: MATCH_ALL, service: MATCH_ALL)
38
+ super()
39
+ @name = name
40
+ @service = service
41
+ end
42
+
43
+ def match?(trace)
44
+ name === trace.name && service === trace.service
45
+ end
46
+ end
47
+
48
+ # A {Datadog::Tracing::Sampling::Matcher} that allows for arbitrary trace matching
49
+ # based on the return value of a provided block.
50
+ # @public_api
51
+ class ProcMatcher < Matcher
52
+ attr_reader :block
53
+
54
+ # @yield [name, service] Provides trace name and service to the block
55
+ # @yieldreturn [Boolean] Whether the trace conforms to this matcher
56
+ def initialize(&block)
57
+ super()
58
+ @block = block
59
+ end
60
+
61
+ def match?(trace)
62
+ block.call(trace.name, trace.service)
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end