ddtrace 0.54.0 → 1.0.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 (1099) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -0
  3. data/CHANGELOG.md +159 -1
  4. data/LICENSE-3rdparty.csv +2 -1
  5. data/README.md +4 -0
  6. data/bin/ddtracerb +5 -5
  7. data/ddtrace.gemspec +8 -5
  8. data/docs/0.x-trace.png +0 -0
  9. data/docs/1.0-trace.png +0 -0
  10. data/docs/AutoInstrumentation.md +36 -0
  11. data/docs/Deprecation.md +8 -0
  12. data/docs/DevelopmentGuide.md +1 -1
  13. data/docs/GettingStarted.md +556 -507
  14. data/docs/ProfilingDevelopment.md +12 -9
  15. data/docs/PublicApi.md +14 -0
  16. data/docs/UpgradeGuide.md +736 -0
  17. data/ext/ddtrace_profiling_native_extension/extconf.rb +87 -17
  18. data/ext/ddtrace_profiling_native_extension/profiling.c +3 -1
  19. data/lib/datadog/appsec/assets/blocked.html +4 -0
  20. data/lib/datadog/appsec/assets/waf_rules/README.md +7 -0
  21. data/lib/datadog/appsec/assets/waf_rules/recommended.json +5638 -0
  22. data/lib/datadog/appsec/assets/waf_rules/risky.json +1499 -0
  23. data/lib/datadog/appsec/assets/waf_rules/strict.json +1298 -0
  24. data/lib/datadog/appsec/assets.rb +38 -0
  25. data/lib/datadog/appsec/autoload.rb +16 -0
  26. data/lib/datadog/appsec/configuration/settings.rb +175 -0
  27. data/lib/datadog/appsec/configuration.rb +72 -0
  28. data/lib/datadog/appsec/contrib/auto_instrument.rb +29 -0
  29. data/lib/datadog/appsec/contrib/configuration/settings.rb +20 -0
  30. data/lib/datadog/appsec/contrib/integration.rb +37 -0
  31. data/lib/datadog/appsec/contrib/patcher.rb +12 -0
  32. data/lib/datadog/appsec/contrib/rack/configuration/settings.rb +22 -0
  33. data/lib/datadog/appsec/contrib/rack/ext.rb +15 -0
  34. data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +126 -0
  35. data/lib/datadog/appsec/contrib/rack/integration.rb +48 -0
  36. data/lib/datadog/appsec/contrib/rack/patcher.rb +33 -0
  37. data/lib/datadog/appsec/contrib/rack/reactive/request.rb +87 -0
  38. data/lib/datadog/appsec/contrib/rack/reactive/response.rb +64 -0
  39. data/lib/datadog/appsec/contrib/rack/request.rb +52 -0
  40. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +57 -0
  41. data/lib/datadog/appsec/contrib/rack/response.rb +24 -0
  42. data/lib/datadog/appsec/contrib/rails/configuration/settings.rb +22 -0
  43. data/lib/datadog/appsec/contrib/rails/ext.rb +15 -0
  44. data/lib/datadog/appsec/contrib/rails/framework.rb +30 -0
  45. data/lib/datadog/appsec/contrib/rails/integration.rb +48 -0
  46. data/lib/datadog/appsec/contrib/rails/patcher.rb +125 -0
  47. data/lib/datadog/appsec/contrib/rails/request_middleware.rb +20 -0
  48. data/lib/datadog/appsec/contrib/sinatra/configuration/settings.rb +22 -0
  49. data/lib/datadog/appsec/contrib/sinatra/ext.rb +15 -0
  50. data/lib/datadog/appsec/contrib/sinatra/framework.rb +34 -0
  51. data/lib/datadog/appsec/contrib/sinatra/integration.rb +48 -0
  52. data/lib/datadog/appsec/contrib/sinatra/patcher.rb +77 -0
  53. data/lib/datadog/appsec/contrib/sinatra/request_middleware.rb +20 -0
  54. data/lib/datadog/appsec/event.rb +106 -0
  55. data/lib/datadog/appsec/extensions.rb +121 -0
  56. data/lib/datadog/appsec/instrumentation/gateway.rb +44 -0
  57. data/lib/datadog/appsec/processor.rb +121 -0
  58. data/lib/datadog/appsec/rate_limiter.rb +55 -0
  59. data/lib/datadog/appsec/reactive/address_hash.rb +18 -0
  60. data/lib/datadog/appsec/reactive/engine.rb +44 -0
  61. data/lib/datadog/appsec/reactive/operation.rb +52 -0
  62. data/lib/datadog/appsec/reactive/subscriber.rb +18 -0
  63. data/lib/datadog/appsec.rb +23 -0
  64. data/lib/datadog/ci/configuration/components.rb +9 -8
  65. data/lib/datadog/ci/configuration/settings.rb +19 -3
  66. data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +4 -2
  67. data/lib/datadog/ci/contrib/cucumber/ext.rb +2 -0
  68. data/lib/datadog/ci/contrib/cucumber/formatter.rb +4 -9
  69. data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +2 -1
  70. data/lib/datadog/ci/contrib/cucumber/integration.rb +3 -2
  71. data/lib/datadog/ci/contrib/cucumber/patcher.rb +3 -2
  72. data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +4 -2
  73. data/lib/datadog/ci/contrib/rspec/example.rb +4 -9
  74. data/lib/datadog/ci/contrib/rspec/ext.rb +2 -0
  75. data/lib/datadog/ci/contrib/rspec/integration.rb +3 -2
  76. data/lib/datadog/ci/contrib/rspec/patcher.rb +3 -2
  77. data/lib/datadog/ci/ext/app_types.rb +2 -1
  78. data/lib/datadog/ci/ext/environment.rb +107 -103
  79. data/lib/datadog/ci/ext/settings.rb +2 -1
  80. data/lib/datadog/ci/ext/test.rb +1 -0
  81. data/lib/datadog/ci/extensions.rb +5 -4
  82. data/lib/datadog/ci/flush.rb +38 -0
  83. data/lib/datadog/ci/test.rb +15 -13
  84. data/lib/datadog/ci.rb +4 -1
  85. data/lib/datadog/core/buffer/cruby.rb +55 -0
  86. data/lib/datadog/core/buffer/random.rb +134 -0
  87. data/lib/datadog/core/buffer/thread_safe.rb +58 -0
  88. data/lib/datadog/core/chunker.rb +35 -0
  89. data/lib/datadog/core/configuration/agent_settings_resolver.rb +365 -0
  90. data/lib/datadog/core/configuration/base.rb +89 -0
  91. data/lib/datadog/core/configuration/components.rb +393 -0
  92. data/lib/datadog/core/configuration/dependency_resolver.rb +28 -0
  93. data/lib/datadog/core/configuration/option.rb +69 -0
  94. data/lib/datadog/core/configuration/option_definition.rb +126 -0
  95. data/lib/datadog/core/configuration/option_definition_set.rb +22 -0
  96. data/lib/datadog/core/configuration/option_set.rb +10 -0
  97. data/lib/datadog/core/configuration/options.rb +118 -0
  98. data/lib/datadog/core/configuration/settings.rb +618 -0
  99. data/lib/datadog/core/configuration.rb +284 -0
  100. data/lib/datadog/core/diagnostics/environment_logger.rb +283 -0
  101. data/lib/datadog/core/diagnostics/ext.rb +41 -0
  102. data/lib/datadog/core/diagnostics/health.rb +37 -0
  103. data/lib/datadog/core/encoding.rb +76 -0
  104. data/lib/datadog/core/environment/cgroup.rb +1 -0
  105. data/lib/datadog/core/environment/class_count.rb +1 -0
  106. data/lib/datadog/core/environment/container.rb +1 -0
  107. data/lib/datadog/core/environment/ext.rb +28 -9
  108. data/lib/datadog/core/environment/gc.rb +1 -0
  109. data/lib/datadog/core/environment/identity.rb +11 -4
  110. data/lib/datadog/core/environment/socket.rb +9 -2
  111. data/lib/datadog/core/environment/thread_count.rb +1 -0
  112. data/lib/datadog/core/environment/variable_helpers.rb +2 -0
  113. data/lib/datadog/core/environment/vm_cache.rb +1 -0
  114. data/lib/datadog/core/error.rb +101 -0
  115. data/lib/datadog/core/extensions.rb +16 -0
  116. data/lib/datadog/core/git/ext.rb +35 -0
  117. data/lib/datadog/core/logger.rb +46 -0
  118. data/lib/datadog/core/metrics/client.rb +188 -0
  119. data/lib/datadog/core/metrics/ext.rb +20 -0
  120. data/lib/datadog/core/metrics/helpers.rb +25 -0
  121. data/lib/datadog/core/metrics/logging.rb +44 -0
  122. data/lib/datadog/core/metrics/metric.rb +14 -0
  123. data/lib/datadog/core/metrics/options.rb +50 -0
  124. data/lib/datadog/core/pin.rb +75 -0
  125. data/lib/datadog/core/runtime/ext.rb +28 -0
  126. data/lib/datadog/core/runtime/metrics.rb +126 -0
  127. data/lib/datadog/core/utils/compression.rb +32 -0
  128. data/lib/datadog/core/utils/forking.rb +63 -0
  129. data/lib/datadog/core/utils/object_set.rb +43 -0
  130. data/lib/datadog/core/utils/only_once.rb +44 -0
  131. data/lib/datadog/core/utils/safe_dup.rb +27 -0
  132. data/lib/datadog/core/utils/sequence.rb +21 -0
  133. data/lib/datadog/core/utils/string_table.rb +49 -0
  134. data/lib/datadog/core/utils/time.rb +54 -0
  135. data/lib/datadog/core/utils.rb +115 -0
  136. data/lib/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rb +120 -0
  137. data/lib/datadog/core/vendor/multipart-post/multipart/post/multipartable.rb +61 -0
  138. data/lib/datadog/core/vendor/multipart-post/multipart/post/parts.rb +139 -0
  139. data/lib/datadog/core/vendor/multipart-post/multipart/post/version.rb +13 -0
  140. data/lib/datadog/core/vendor/multipart-post/multipart/post.rb +12 -0
  141. data/lib/datadog/core/vendor/multipart-post/multipart.rb +16 -0
  142. data/lib/datadog/core/vendor/multipart-post/net/http/post/multipart.rb +36 -0
  143. data/lib/datadog/core/worker.rb +24 -0
  144. data/lib/datadog/core/workers/async.rb +180 -0
  145. data/lib/datadog/core/workers/interval_loop.rb +119 -0
  146. data/lib/datadog/core/workers/polling.rb +59 -0
  147. data/lib/datadog/core/workers/queue.rb +44 -0
  148. data/lib/datadog/core/workers/runtime_metrics.rb +65 -0
  149. data/lib/datadog/core.rb +74 -0
  150. data/lib/datadog/opentracer/binary_propagator.rb +26 -0
  151. data/lib/datadog/opentracer/carrier.rb +9 -0
  152. data/lib/datadog/opentracer/distributed_headers.rb +58 -0
  153. data/lib/datadog/opentracer/global_tracer.rb +17 -0
  154. data/lib/datadog/opentracer/propagator.rb +26 -0
  155. data/lib/datadog/opentracer/rack_propagator.rb +72 -0
  156. data/lib/datadog/opentracer/scope.rb +18 -0
  157. data/lib/datadog/opentracer/scope_manager.rb +9 -0
  158. data/lib/datadog/opentracer/span.rb +101 -0
  159. data/lib/datadog/opentracer/span_context.rb +19 -0
  160. data/lib/datadog/opentracer/span_context_factory.rb +27 -0
  161. data/lib/datadog/opentracer/text_map_propagator.rb +87 -0
  162. data/lib/datadog/opentracer/thread_local_scope.rb +34 -0
  163. data/lib/datadog/opentracer/thread_local_scope_manager.rb +43 -0
  164. data/lib/datadog/opentracer/tracer.rb +214 -0
  165. data/lib/datadog/opentracer.rb +24 -0
  166. data/lib/datadog/profiling/backtrace_location.rb +34 -0
  167. data/lib/datadog/profiling/buffer.rb +43 -0
  168. data/lib/datadog/profiling/collectors/code_provenance.rb +114 -0
  169. data/lib/datadog/profiling/collectors/stack.rb +297 -0
  170. data/lib/datadog/profiling/encoding/profile.rb +48 -0
  171. data/lib/datadog/profiling/event.rb +15 -0
  172. data/lib/datadog/profiling/events/stack.rb +82 -0
  173. data/lib/datadog/profiling/exporter.rb +25 -0
  174. data/lib/datadog/profiling/ext/forking.rb +99 -0
  175. data/lib/datadog/profiling/ext.rb +57 -0
  176. data/lib/datadog/profiling/flush.rb +69 -0
  177. data/lib/datadog/profiling/native_extension.rb +41 -0
  178. data/lib/datadog/profiling/pprof/builder.rb +127 -0
  179. data/lib/datadog/profiling/pprof/converter.rb +104 -0
  180. data/lib/datadog/profiling/pprof/message_set.rb +16 -0
  181. data/lib/datadog/profiling/pprof/payload.rb +20 -0
  182. data/lib/datadog/profiling/pprof/pprof_pb.rb +83 -0
  183. data/lib/datadog/profiling/pprof/stack_sample.rb +141 -0
  184. data/lib/datadog/profiling/pprof/string_table.rb +12 -0
  185. data/lib/datadog/profiling/pprof/template.rb +120 -0
  186. data/lib/datadog/profiling/preload.rb +5 -0
  187. data/lib/datadog/profiling/profiler.rb +34 -0
  188. data/lib/datadog/profiling/recorder.rb +117 -0
  189. data/lib/datadog/profiling/scheduler.rb +151 -0
  190. data/lib/datadog/profiling/tasks/exec.rb +50 -0
  191. data/lib/datadog/profiling/tasks/help.rb +18 -0
  192. data/lib/datadog/profiling/tasks/setup.rb +91 -0
  193. data/lib/datadog/profiling/trace_identifiers/ddtrace.rb +45 -0
  194. data/lib/datadog/profiling/trace_identifiers/helper.rb +47 -0
  195. data/lib/datadog/profiling/transport/client.rb +16 -0
  196. data/lib/datadog/profiling/transport/http/api/endpoint.rb +107 -0
  197. data/lib/datadog/profiling/transport/http/api/instance.rb +38 -0
  198. data/lib/datadog/profiling/transport/http/api/spec.rb +42 -0
  199. data/lib/datadog/profiling/transport/http/api.rb +45 -0
  200. data/lib/datadog/profiling/transport/http/builder.rb +30 -0
  201. data/lib/datadog/profiling/transport/http/client.rb +35 -0
  202. data/lib/datadog/profiling/transport/http/response.rb +23 -0
  203. data/lib/datadog/profiling/transport/http.rb +112 -0
  204. data/lib/datadog/profiling/transport/io/client.rb +29 -0
  205. data/lib/datadog/profiling/transport/io/response.rb +18 -0
  206. data/lib/datadog/profiling/transport/io.rb +32 -0
  207. data/lib/datadog/profiling/transport/parcel.rb +19 -0
  208. data/lib/datadog/profiling/transport/request.rb +17 -0
  209. data/lib/datadog/profiling/transport/response.rb +10 -0
  210. data/lib/datadog/profiling.rb +168 -0
  211. data/lib/datadog/tracing/analytics.rb +25 -0
  212. data/lib/datadog/tracing/buffer.rb +126 -0
  213. data/lib/datadog/tracing/configuration/ext.rb +51 -0
  214. data/lib/datadog/tracing/context.rb +68 -0
  215. data/lib/datadog/tracing/context_provider.rb +66 -0
  216. data/lib/datadog/tracing/contrib/action_cable/configuration/settings.rb +35 -0
  217. data/lib/datadog/tracing/contrib/action_cable/event.rb +72 -0
  218. data/lib/datadog/tracing/contrib/action_cable/events/broadcast.rb +58 -0
  219. data/lib/datadog/tracing/contrib/action_cable/events/perform_action.rb +63 -0
  220. data/lib/datadog/tracing/contrib/action_cable/events/transmit.rb +59 -0
  221. data/lib/datadog/tracing/contrib/action_cable/events.rb +37 -0
  222. data/lib/datadog/tracing/contrib/action_cable/ext.rb +32 -0
  223. data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +91 -0
  224. data/lib/datadog/tracing/contrib/action_cable/integration.rb +50 -0
  225. data/lib/datadog/tracing/contrib/action_cable/patcher.rb +31 -0
  226. data/lib/datadog/tracing/contrib/action_mailer/configuration/settings.rb +36 -0
  227. data/lib/datadog/tracing/contrib/action_mailer/event.rb +52 -0
  228. data/lib/datadog/tracing/contrib/action_mailer/events/deliver.rb +60 -0
  229. data/lib/datadog/tracing/contrib/action_mailer/events/process.rb +47 -0
  230. data/lib/datadog/tracing/contrib/action_mailer/events.rb +34 -0
  231. data/lib/datadog/tracing/contrib/action_mailer/ext.rb +33 -0
  232. data/lib/datadog/tracing/contrib/action_mailer/integration.rb +50 -0
  233. data/lib/datadog/tracing/contrib/action_mailer/patcher.rb +29 -0
  234. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +156 -0
  235. data/lib/datadog/tracing/contrib/action_pack/action_controller/patcher.rb +29 -0
  236. data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +36 -0
  237. data/lib/datadog/tracing/contrib/action_pack/ext.rb +22 -0
  238. data/lib/datadog/tracing/contrib/action_pack/integration.rb +50 -0
  239. data/lib/datadog/tracing/contrib/action_pack/patcher.rb +27 -0
  240. data/lib/datadog/tracing/contrib/action_pack/utils.rb +40 -0
  241. data/lib/datadog/tracing/contrib/action_view/configuration/settings.rb +36 -0
  242. data/lib/datadog/tracing/contrib/action_view/event.rb +35 -0
  243. data/lib/datadog/tracing/contrib/action_view/events/render_partial.rb +54 -0
  244. data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +57 -0
  245. data/lib/datadog/tracing/contrib/action_view/events.rb +34 -0
  246. data/lib/datadog/tracing/contrib/action_view/ext.rb +24 -0
  247. data/lib/datadog/tracing/contrib/action_view/instrumentation/partial_renderer.rb +78 -0
  248. data/lib/datadog/tracing/contrib/action_view/instrumentation/template_renderer.rb +91 -0
  249. data/lib/datadog/tracing/contrib/action_view/integration.rb +57 -0
  250. data/lib/datadog/tracing/contrib/action_view/patcher.rb +48 -0
  251. data/lib/datadog/tracing/contrib/action_view/utils.rb +36 -0
  252. data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +37 -0
  253. data/lib/datadog/tracing/contrib/active_job/event.rb +58 -0
  254. data/lib/datadog/tracing/contrib/active_job/events/discard.rb +50 -0
  255. data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +49 -0
  256. data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +49 -0
  257. data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +51 -0
  258. data/lib/datadog/tracing/contrib/active_job/events/perform.rb +49 -0
  259. data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +50 -0
  260. data/lib/datadog/tracing/contrib/active_job/events.rb +42 -0
  261. data/lib/datadog/tracing/contrib/active_job/ext.rb +39 -0
  262. data/lib/datadog/tracing/contrib/active_job/integration.rb +50 -0
  263. data/lib/datadog/tracing/contrib/active_job/log_injection.rb +26 -0
  264. data/lib/datadog/tracing/contrib/active_job/patcher.rb +36 -0
  265. data/lib/datadog/tracing/contrib/active_model_serializers/configuration/settings.rb +33 -0
  266. data/lib/datadog/tracing/contrib/active_model_serializers/event.rb +69 -0
  267. data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +45 -0
  268. data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +47 -0
  269. data/lib/datadog/tracing/contrib/active_model_serializers/events.rb +34 -0
  270. data/lib/datadog/tracing/contrib/active_model_serializers/ext.rb +24 -0
  271. data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +45 -0
  272. data/lib/datadog/tracing/contrib/active_model_serializers/patcher.rb +33 -0
  273. data/lib/datadog/tracing/contrib/active_record/configuration/makara_resolver.rb +36 -0
  274. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +138 -0
  275. data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +39 -0
  276. data/lib/datadog/tracing/contrib/active_record/event.rb +30 -0
  277. data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +58 -0
  278. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +78 -0
  279. data/lib/datadog/tracing/contrib/active_record/events.rb +34 -0
  280. data/lib/datadog/tracing/contrib/active_record/ext.rb +29 -0
  281. data/lib/datadog/tracing/contrib/active_record/integration.rb +56 -0
  282. data/lib/datadog/tracing/contrib/active_record/patcher.rb +27 -0
  283. data/lib/datadog/tracing/contrib/active_record/utils.rb +128 -0
  284. data/lib/datadog/tracing/contrib/active_record/vendor/connection_specification.rb +307 -0
  285. data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +270 -0
  286. data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +73 -0
  287. data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +47 -0
  288. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +35 -0
  289. data/lib/datadog/tracing/contrib/active_support/ext.rb +31 -0
  290. data/lib/datadog/tracing/contrib/active_support/integration.rb +51 -0
  291. data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +71 -0
  292. data/lib/datadog/tracing/contrib/active_support/notifications/subscriber.rb +71 -0
  293. data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +162 -0
  294. data/lib/datadog/tracing/contrib/active_support/patcher.rb +27 -0
  295. data/lib/datadog/tracing/contrib/analytics.rb +29 -0
  296. data/lib/datadog/tracing/contrib/auto_instrument.rb +53 -0
  297. data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +35 -0
  298. data/lib/datadog/tracing/contrib/aws/ext.rb +27 -0
  299. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +95 -0
  300. data/lib/datadog/tracing/contrib/aws/integration.rb +47 -0
  301. data/lib/datadog/tracing/contrib/aws/parsed_context.rb +60 -0
  302. data/lib/datadog/tracing/contrib/aws/patcher.rb +57 -0
  303. data/lib/datadog/tracing/contrib/aws/services.rb +123 -0
  304. data/lib/datadog/tracing/contrib/concurrent_ruby/configuration/settings.rb +23 -0
  305. data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +46 -0
  306. data/lib/datadog/tracing/contrib/concurrent_ruby/ext.rb +16 -0
  307. data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +27 -0
  308. data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +43 -0
  309. data/lib/datadog/tracing/contrib/concurrent_ruby/patcher.rb +33 -0
  310. data/lib/datadog/tracing/contrib/configurable.rb +102 -0
  311. data/lib/datadog/tracing/contrib/configuration/resolver.rb +85 -0
  312. data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +43 -0
  313. data/lib/datadog/tracing/contrib/configuration/settings.rb +43 -0
  314. data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +35 -0
  315. data/lib/datadog/tracing/contrib/dalli/ext.rb +24 -0
  316. data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +58 -0
  317. data/lib/datadog/tracing/contrib/dalli/integration.rb +52 -0
  318. data/lib/datadog/tracing/contrib/dalli/patcher.rb +29 -0
  319. data/lib/datadog/tracing/contrib/dalli/quantize.rb +26 -0
  320. data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +38 -0
  321. data/lib/datadog/tracing/contrib/delayed_job/ext.rb +26 -0
  322. data/lib/datadog/tracing/contrib/delayed_job/integration.rb +43 -0
  323. data/lib/datadog/tracing/contrib/delayed_job/patcher.rb +32 -0
  324. data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +101 -0
  325. data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +36 -0
  326. data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +26 -0
  327. data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +44 -0
  328. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +115 -0
  329. data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +89 -0
  330. data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +37 -0
  331. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +177 -0
  332. data/lib/datadog/tracing/contrib/ethon/ext.rb +24 -0
  333. data/lib/datadog/tracing/contrib/ethon/integration.rb +48 -0
  334. data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +96 -0
  335. data/lib/datadog/tracing/contrib/ethon/patcher.rb +32 -0
  336. data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +38 -0
  337. data/lib/datadog/tracing/contrib/excon/ext.rb +21 -0
  338. data/lib/datadog/tracing/contrib/excon/integration.rb +48 -0
  339. data/lib/datadog/tracing/contrib/excon/middleware.rb +170 -0
  340. data/lib/datadog/tracing/contrib/excon/patcher.rb +31 -0
  341. data/lib/datadog/tracing/contrib/extensions.rb +199 -0
  342. data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +42 -0
  343. data/lib/datadog/tracing/contrib/faraday/connection.rb +22 -0
  344. data/lib/datadog/tracing/contrib/faraday/ext.rb +21 -0
  345. data/lib/datadog/tracing/contrib/faraday/integration.rb +48 -0
  346. data/lib/datadog/tracing/contrib/faraday/middleware.rb +93 -0
  347. data/lib/datadog/tracing/contrib/faraday/patcher.rb +57 -0
  348. data/lib/datadog/tracing/contrib/faraday/rack_builder.rb +22 -0
  349. data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +42 -0
  350. data/lib/datadog/tracing/contrib/grape/endpoint.rb +253 -0
  351. data/lib/datadog/tracing/contrib/grape/ext.rb +28 -0
  352. data/lib/datadog/tracing/contrib/grape/instrumentation.rb +37 -0
  353. data/lib/datadog/tracing/contrib/grape/integration.rb +44 -0
  354. data/lib/datadog/tracing/contrib/grape/patcher.rb +34 -0
  355. data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +36 -0
  356. data/lib/datadog/tracing/contrib/graphql/ext.rb +19 -0
  357. data/lib/datadog/tracing/contrib/graphql/integration.rb +44 -0
  358. data/lib/datadog/tracing/contrib/graphql/patcher.rb +92 -0
  359. data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +37 -0
  360. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +84 -0
  361. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +90 -0
  362. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb +104 -0
  363. data/lib/datadog/tracing/contrib/grpc/ext.rb +23 -0
  364. data/lib/datadog/tracing/contrib/grpc/integration.rb +43 -0
  365. data/lib/datadog/tracing/contrib/grpc/intercept_with_datadog.rb +53 -0
  366. data/lib/datadog/tracing/contrib/grpc/patcher.rb +38 -0
  367. data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +44 -0
  368. data/lib/datadog/tracing/contrib/http/configuration/settings.rb +37 -0
  369. data/lib/datadog/tracing/contrib/http/ext.rb +21 -0
  370. data/lib/datadog/tracing/contrib/http/instrumentation.rb +139 -0
  371. data/lib/datadog/tracing/contrib/http/integration.rb +49 -0
  372. data/lib/datadog/tracing/contrib/http/patcher.rb +30 -0
  373. data/lib/datadog/tracing/contrib/http_annotation_helper.rb +17 -0
  374. data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +37 -0
  375. data/lib/datadog/tracing/contrib/httpclient/ext.rb +21 -0
  376. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +117 -0
  377. data/lib/datadog/tracing/contrib/httpclient/integration.rb +48 -0
  378. data/lib/datadog/tracing/contrib/httpclient/patcher.rb +42 -0
  379. data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +37 -0
  380. data/lib/datadog/tracing/contrib/httprb/ext.rb +21 -0
  381. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +128 -0
  382. data/lib/datadog/tracing/contrib/httprb/integration.rb +48 -0
  383. data/lib/datadog/tracing/contrib/httprb/patcher.rb +42 -0
  384. data/lib/datadog/tracing/contrib/integration.rb +78 -0
  385. data/lib/datadog/tracing/contrib/kafka/configuration/settings.rb +35 -0
  386. data/lib/datadog/tracing/contrib/kafka/consumer_event.rb +18 -0
  387. data/lib/datadog/tracing/contrib/kafka/consumer_group_event.rb +18 -0
  388. data/lib/datadog/tracing/contrib/kafka/event.rb +52 -0
  389. data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +42 -0
  390. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +49 -0
  391. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +47 -0
  392. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +47 -0
  393. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +37 -0
  394. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +37 -0
  395. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +37 -0
  396. data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +40 -0
  397. data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +43 -0
  398. data/lib/datadog/tracing/contrib/kafka/events.rb +48 -0
  399. data/lib/datadog/tracing/contrib/kafka/ext.rb +52 -0
  400. data/lib/datadog/tracing/contrib/kafka/integration.rb +44 -0
  401. data/lib/datadog/tracing/contrib/kafka/patcher.rb +30 -0
  402. data/lib/datadog/tracing/contrib/lograge/configuration/settings.rb +23 -0
  403. data/lib/datadog/tracing/contrib/lograge/ext.rb +15 -0
  404. data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +46 -0
  405. data/lib/datadog/tracing/contrib/lograge/integration.rb +50 -0
  406. data/lib/datadog/tracing/contrib/lograge/patcher.rb +29 -0
  407. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +38 -0
  408. data/lib/datadog/tracing/contrib/mongodb/ext.rb +27 -0
  409. data/lib/datadog/tracing/contrib/mongodb/instrumentation.rb +47 -0
  410. data/lib/datadog/tracing/contrib/mongodb/integration.rb +48 -0
  411. data/lib/datadog/tracing/contrib/mongodb/parsers.rb +49 -0
  412. data/lib/datadog/tracing/contrib/mongodb/patcher.rb +34 -0
  413. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +121 -0
  414. data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +35 -0
  415. data/lib/datadog/tracing/contrib/mysql2/ext.rb +22 -0
  416. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +62 -0
  417. data/lib/datadog/tracing/contrib/mysql2/integration.rb +43 -0
  418. data/lib/datadog/tracing/contrib/mysql2/patcher.rb +31 -0
  419. data/lib/datadog/tracing/contrib/patchable.rb +109 -0
  420. data/lib/datadog/tracing/contrib/patcher.rb +74 -0
  421. data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +35 -0
  422. data/lib/datadog/tracing/contrib/presto/ext.rb +32 -0
  423. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +125 -0
  424. data/lib/datadog/tracing/contrib/presto/integration.rb +43 -0
  425. data/lib/datadog/tracing/contrib/presto/patcher.rb +37 -0
  426. data/lib/datadog/tracing/contrib/qless/configuration/settings.rb +40 -0
  427. data/lib/datadog/tracing/contrib/qless/ext.rb +26 -0
  428. data/lib/datadog/tracing/contrib/qless/integration.rb +43 -0
  429. data/lib/datadog/tracing/contrib/qless/patcher.rb +39 -0
  430. data/lib/datadog/tracing/contrib/qless/qless_job.rb +75 -0
  431. data/lib/datadog/tracing/contrib/qless/tracer_cleaner.rb +32 -0
  432. data/lib/datadog/tracing/contrib/que/configuration/settings.rb +49 -0
  433. data/lib/datadog/tracing/contrib/que/ext.rb +34 -0
  434. data/lib/datadog/tracing/contrib/que/integration.rb +46 -0
  435. data/lib/datadog/tracing/contrib/que/patcher.rb +29 -0
  436. data/lib/datadog/tracing/contrib/que/tracer.rb +61 -0
  437. data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +35 -0
  438. data/lib/datadog/tracing/contrib/racecar/event.rb +79 -0
  439. data/lib/datadog/tracing/contrib/racecar/events/batch.rb +35 -0
  440. data/lib/datadog/tracing/contrib/racecar/events/consume.rb +35 -0
  441. data/lib/datadog/tracing/contrib/racecar/events/message.rb +35 -0
  442. data/lib/datadog/tracing/contrib/racecar/events.rb +36 -0
  443. data/lib/datadog/tracing/contrib/racecar/ext.rb +31 -0
  444. data/lib/datadog/tracing/contrib/racecar/integration.rb +44 -0
  445. data/lib/datadog/tracing/contrib/racecar/patcher.rb +30 -0
  446. data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +51 -0
  447. data/lib/datadog/tracing/contrib/rack/ext.rb +25 -0
  448. data/lib/datadog/tracing/contrib/rack/integration.rb +50 -0
  449. data/lib/datadog/tracing/contrib/rack/middlewares.rb +255 -0
  450. data/lib/datadog/tracing/contrib/rack/patcher.rb +109 -0
  451. data/lib/datadog/tracing/contrib/rack/request_queue.rb +48 -0
  452. data/lib/datadog/tracing/contrib/rails/auto_instrument_railtie.rb +12 -0
  453. data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +71 -0
  454. data/lib/datadog/tracing/contrib/rails/ext.rb +19 -0
  455. data/lib/datadog/tracing/contrib/rails/framework.rb +152 -0
  456. data/lib/datadog/tracing/contrib/rails/integration.rb +49 -0
  457. data/lib/datadog/tracing/contrib/rails/log_injection.rb +47 -0
  458. data/lib/datadog/tracing/contrib/rails/middlewares.rb +47 -0
  459. data/lib/datadog/tracing/contrib/rails/patcher.rb +121 -0
  460. data/lib/datadog/tracing/contrib/rails/railtie.rb +19 -0
  461. data/lib/datadog/tracing/contrib/rails/utils.rb +28 -0
  462. data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +36 -0
  463. data/lib/datadog/tracing/contrib/rake/ext.rb +26 -0
  464. data/lib/datadog/tracing/contrib/rake/instrumentation.rb +98 -0
  465. data/lib/datadog/tracing/contrib/rake/integration.rb +43 -0
  466. data/lib/datadog/tracing/contrib/rake/patcher.rb +35 -0
  467. data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +49 -0
  468. data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +40 -0
  469. data/lib/datadog/tracing/contrib/redis/ext.rb +26 -0
  470. data/lib/datadog/tracing/contrib/redis/instrumentation.rb +78 -0
  471. data/lib/datadog/tracing/contrib/redis/integration.rb +47 -0
  472. data/lib/datadog/tracing/contrib/redis/patcher.rb +36 -0
  473. data/lib/datadog/tracing/contrib/redis/quantize.rb +79 -0
  474. data/lib/datadog/tracing/contrib/redis/tags.rb +54 -0
  475. data/lib/datadog/tracing/contrib/redis/vendor/resolver.rb +162 -0
  476. data/lib/datadog/tracing/contrib/registerable.rb +50 -0
  477. data/lib/datadog/tracing/contrib/registry.rb +52 -0
  478. data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +37 -0
  479. data/lib/datadog/tracing/contrib/resque/ext.rb +21 -0
  480. data/lib/datadog/tracing/contrib/resque/integration.rb +48 -0
  481. data/lib/datadog/tracing/contrib/resque/patcher.rb +30 -0
  482. data/lib/datadog/tracing/contrib/resque/resque_job.rb +103 -0
  483. data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +36 -0
  484. data/lib/datadog/tracing/contrib/rest_client/ext.rb +21 -0
  485. data/lib/datadog/tracing/contrib/rest_client/integration.rb +43 -0
  486. data/lib/datadog/tracing/contrib/rest_client/patcher.rb +30 -0
  487. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +105 -0
  488. data/lib/datadog/tracing/contrib/semantic_logger/configuration/settings.rb +23 -0
  489. data/lib/datadog/tracing/contrib/semantic_logger/ext.rb +15 -0
  490. data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +50 -0
  491. data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +52 -0
  492. data/lib/datadog/tracing/contrib/semantic_logger/patcher.rb +29 -0
  493. data/lib/datadog/tracing/contrib/sequel/configuration/settings.rb +33 -0
  494. data/lib/datadog/tracing/contrib/sequel/database.rb +60 -0
  495. data/lib/datadog/tracing/contrib/sequel/dataset.rb +65 -0
  496. data/lib/datadog/tracing/contrib/sequel/ext.rb +22 -0
  497. data/lib/datadog/tracing/contrib/sequel/integration.rb +43 -0
  498. data/lib/datadog/tracing/contrib/sequel/patcher.rb +37 -0
  499. data/lib/datadog/tracing/contrib/sequel/utils.rb +87 -0
  500. data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +38 -0
  501. data/lib/datadog/tracing/contrib/shoryuken/ext.rb +25 -0
  502. data/lib/datadog/tracing/contrib/shoryuken/integration.rb +44 -0
  503. data/lib/datadog/tracing/contrib/shoryuken/patcher.rb +28 -0
  504. data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +61 -0
  505. data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +53 -0
  506. data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +43 -0
  507. data/lib/datadog/tracing/contrib/sidekiq/ext.rb +38 -0
  508. data/lib/datadog/tracing/contrib/sidekiq/integration.rb +53 -0
  509. data/lib/datadog/tracing/contrib/sidekiq/patcher.rb +71 -0
  510. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/heartbeat.rb +34 -0
  511. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/job_fetch.rb +34 -0
  512. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/scheduled_push.rb +33 -0
  513. data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +79 -0
  514. data/lib/datadog/tracing/contrib/sidekiq/tracing.rb +44 -0
  515. data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +43 -0
  516. data/lib/datadog/tracing/contrib/sinatra/env.rb +66 -0
  517. data/lib/datadog/tracing/contrib/sinatra/ext.rb +32 -0
  518. data/lib/datadog/tracing/contrib/sinatra/framework.rb +107 -0
  519. data/lib/datadog/tracing/contrib/sinatra/headers.rb +35 -0
  520. data/lib/datadog/tracing/contrib/sinatra/integration.rb +43 -0
  521. data/lib/datadog/tracing/contrib/sinatra/patcher.rb +77 -0
  522. data/lib/datadog/tracing/contrib/sinatra/tracer.rb +159 -0
  523. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +123 -0
  524. data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +38 -0
  525. data/lib/datadog/tracing/contrib/sneakers/ext.rb +26 -0
  526. data/lib/datadog/tracing/contrib/sneakers/integration.rb +46 -0
  527. data/lib/datadog/tracing/contrib/sneakers/patcher.rb +30 -0
  528. data/lib/datadog/tracing/contrib/sneakers/tracer.rb +58 -0
  529. data/lib/datadog/tracing/contrib/status_code_matcher.rb +75 -0
  530. data/lib/datadog/tracing/contrib/sucker_punch/configuration/settings.rb +35 -0
  531. data/lib/datadog/tracing/contrib/sucker_punch/exception_handler.rb +28 -0
  532. data/lib/datadog/tracing/contrib/sucker_punch/ext.rb +27 -0
  533. data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +105 -0
  534. data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +43 -0
  535. data/lib/datadog/tracing/contrib/sucker_punch/patcher.rb +38 -0
  536. data/lib/datadog/tracing/contrib/utils/database.rb +31 -0
  537. data/lib/datadog/tracing/contrib/utils/quantization/hash.rb +111 -0
  538. data/lib/datadog/tracing/contrib/utils/quantization/http.rb +99 -0
  539. data/lib/datadog/tracing/contrib.rb +76 -0
  540. data/lib/datadog/tracing/correlation.rb +100 -0
  541. data/lib/datadog/tracing/distributed/headers/b3.rb +55 -0
  542. data/lib/datadog/tracing/distributed/headers/b3_single.rb +67 -0
  543. data/lib/datadog/tracing/distributed/headers/datadog.rb +52 -0
  544. data/lib/datadog/tracing/distributed/headers/ext.rb +31 -0
  545. data/lib/datadog/tracing/distributed/helpers.rb +44 -0
  546. data/lib/datadog/tracing/distributed/parser.rb +70 -0
  547. data/lib/datadog/tracing/event.rb +77 -0
  548. data/lib/datadog/tracing/flush.rb +74 -0
  549. data/lib/datadog/tracing/metadata/analytics.rb +26 -0
  550. data/lib/datadog/tracing/metadata/errors.rb +24 -0
  551. data/lib/datadog/tracing/metadata/ext.rb +151 -0
  552. data/lib/datadog/tracing/metadata/tagging.rb +110 -0
  553. data/lib/datadog/tracing/metadata.rb +20 -0
  554. data/lib/datadog/tracing/pipeline/span_filter.rb +42 -0
  555. data/lib/datadog/tracing/pipeline/span_processor.rb +39 -0
  556. data/lib/datadog/tracing/pipeline.rb +65 -0
  557. data/lib/datadog/tracing/propagation/grpc.rb +88 -0
  558. data/lib/datadog/tracing/propagation/http.rb +109 -0
  559. data/lib/datadog/tracing/runtime/metrics.rb +19 -0
  560. data/lib/datadog/tracing/sampling/all_sampler.rb +25 -0
  561. data/lib/datadog/tracing/sampling/ext.rb +27 -0
  562. data/lib/datadog/tracing/sampling/matcher.rb +68 -0
  563. data/lib/datadog/tracing/sampling/priority_sampler.rb +113 -0
  564. data/lib/datadog/tracing/sampling/rate_by_key_sampler.rb +97 -0
  565. data/lib/datadog/tracing/sampling/rate_by_service_sampler.rb +41 -0
  566. data/lib/datadog/tracing/sampling/rate_limiter.rb +185 -0
  567. data/lib/datadog/tracing/sampling/rate_sampler.rb +55 -0
  568. data/lib/datadog/tracing/sampling/rule.rb +70 -0
  569. data/lib/datadog/tracing/sampling/rule_sampler.rb +133 -0
  570. data/lib/datadog/tracing/sampling/sampler.rb +44 -0
  571. data/lib/datadog/tracing/span.rb +212 -0
  572. data/lib/datadog/tracing/span_operation.rb +521 -0
  573. data/lib/datadog/tracing/sync_writer.rb +69 -0
  574. data/lib/datadog/tracing/trace_digest.rb +60 -0
  575. data/lib/datadog/tracing/trace_operation.rb +432 -0
  576. data/lib/datadog/tracing/trace_segment.rb +207 -0
  577. data/lib/datadog/tracing/tracer.rb +505 -0
  578. data/lib/datadog/tracing/workers/trace_writer.rb +195 -0
  579. data/lib/datadog/tracing/workers.rb +125 -0
  580. data/lib/datadog/tracing/writer.rb +180 -0
  581. data/lib/datadog/tracing.rb +142 -0
  582. data/lib/ddtrace/auto_instrument.rb +6 -2
  583. data/lib/ddtrace/auto_instrument_base.rb +1 -0
  584. data/lib/ddtrace/profiling/preload.rb +2 -2
  585. data/lib/ddtrace/transport/ext.rb +35 -0
  586. data/lib/ddtrace/transport/http/adapters/net.rb +3 -2
  587. data/lib/ddtrace/transport/http/adapters/registry.rb +1 -0
  588. data/lib/ddtrace/transport/http/adapters/test.rb +1 -0
  589. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +3 -2
  590. data/lib/ddtrace/transport/http/api/endpoint.rb +1 -0
  591. data/lib/ddtrace/transport/http/api/fallbacks.rb +1 -0
  592. data/lib/ddtrace/transport/http/api/instance.rb +1 -0
  593. data/lib/ddtrace/transport/http/api/map.rb +1 -0
  594. data/lib/ddtrace/transport/http/api/spec.rb +1 -0
  595. data/lib/ddtrace/transport/http/api.rb +5 -11
  596. data/lib/ddtrace/transport/http/builder.rb +3 -2
  597. data/lib/ddtrace/transport/http/client.rb +1 -0
  598. data/lib/ddtrace/transport/http/env.rb +1 -0
  599. data/lib/ddtrace/transport/http/response.rb +1 -0
  600. data/lib/ddtrace/transport/http/statistics.rb +1 -0
  601. data/lib/ddtrace/transport/http/traces.rb +3 -0
  602. data/lib/ddtrace/transport/http.rb +33 -28
  603. data/lib/ddtrace/transport/io/client.rb +1 -0
  604. data/lib/ddtrace/transport/io/response.rb +1 -0
  605. data/lib/ddtrace/transport/io/traces.rb +2 -1
  606. data/lib/ddtrace/transport/io.rb +3 -2
  607. data/lib/ddtrace/transport/parcel.rb +2 -0
  608. data/lib/ddtrace/transport/request.rb +1 -0
  609. data/lib/ddtrace/transport/response.rb +1 -0
  610. data/lib/ddtrace/transport/serializable_trace.rb +118 -0
  611. data/lib/ddtrace/transport/statistics.rb +6 -4
  612. data/lib/ddtrace/transport/trace_formatter.rb +187 -0
  613. data/lib/ddtrace/transport/traces.rb +15 -5
  614. data/lib/ddtrace/version.rb +14 -12
  615. data/lib/ddtrace.rb +8 -48
  616. metadata +567 -490
  617. data/.yardopts +0 -5
  618. data/lib/datadog/ci/context_flush.rb +0 -29
  619. data/lib/datadog/contrib.rb +0 -71
  620. data/lib/ddtrace/analytics.rb +0 -39
  621. data/lib/ddtrace/buffer.rb +0 -340
  622. data/lib/ddtrace/chunker.rb +0 -35
  623. data/lib/ddtrace/configuration/agent_settings_resolver.rb +0 -309
  624. data/lib/ddtrace/configuration/base.rb +0 -82
  625. data/lib/ddtrace/configuration/components.rb +0 -292
  626. data/lib/ddtrace/configuration/dependency_resolver.rb +0 -25
  627. data/lib/ddtrace/configuration/option.rb +0 -65
  628. data/lib/ddtrace/configuration/option_definition.rb +0 -122
  629. data/lib/ddtrace/configuration/option_definition_set.rb +0 -19
  630. data/lib/ddtrace/configuration/option_set.rb +0 -7
  631. data/lib/ddtrace/configuration/options.rb +0 -112
  632. data/lib/ddtrace/configuration/pin_setup.rb +0 -32
  633. data/lib/ddtrace/configuration/settings.rb +0 -413
  634. data/lib/ddtrace/configuration.rb +0 -195
  635. data/lib/ddtrace/context.rb +0 -334
  636. data/lib/ddtrace/context_flush.rb +0 -82
  637. data/lib/ddtrace/context_provider.rb +0 -62
  638. data/lib/ddtrace/contrib/action_cable/configuration/settings.rb +0 -31
  639. data/lib/ddtrace/contrib/action_cable/event.rb +0 -67
  640. data/lib/ddtrace/contrib/action_cable/events/broadcast.rb +0 -50
  641. data/lib/ddtrace/contrib/action_cable/events/perform_action.rb +0 -56
  642. data/lib/ddtrace/contrib/action_cable/events/transmit.rb +0 -51
  643. data/lib/ddtrace/contrib/action_cable/events.rb +0 -34
  644. data/lib/ddtrace/contrib/action_cable/ext.rb +0 -27
  645. data/lib/ddtrace/contrib/action_cable/instrumentation.rb +0 -78
  646. data/lib/ddtrace/contrib/action_cable/integration.rb +0 -46
  647. data/lib/ddtrace/contrib/action_cable/patcher.rb +0 -29
  648. data/lib/ddtrace/contrib/action_mailer/configuration/settings.rb +0 -32
  649. data/lib/ddtrace/contrib/action_mailer/event.rb +0 -50
  650. data/lib/ddtrace/contrib/action_mailer/events/deliver.rb +0 -54
  651. data/lib/ddtrace/contrib/action_mailer/events/process.rb +0 -41
  652. data/lib/ddtrace/contrib/action_mailer/events.rb +0 -31
  653. data/lib/ddtrace/contrib/action_mailer/ext.rb +0 -32
  654. data/lib/ddtrace/contrib/action_mailer/integration.rb +0 -45
  655. data/lib/ddtrace/contrib/action_mailer/patcher.rb +0 -27
  656. data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +0 -157
  657. data/lib/ddtrace/contrib/action_pack/action_controller/patcher.rb +0 -26
  658. data/lib/ddtrace/contrib/action_pack/configuration/settings.rb +0 -33
  659. data/lib/ddtrace/contrib/action_pack/ext.rb +0 -20
  660. data/lib/ddtrace/contrib/action_pack/integration.rb +0 -46
  661. data/lib/ddtrace/contrib/action_pack/patcher.rb +0 -24
  662. data/lib/ddtrace/contrib/action_pack/utils.rb +0 -37
  663. data/lib/ddtrace/contrib/action_view/configuration/settings.rb +0 -32
  664. data/lib/ddtrace/contrib/action_view/event.rb +0 -36
  665. data/lib/ddtrace/contrib/action_view/events/render_partial.rb +0 -47
  666. data/lib/ddtrace/contrib/action_view/events/render_template.rb +0 -50
  667. data/lib/ddtrace/contrib/action_view/events.rb +0 -31
  668. data/lib/ddtrace/contrib/action_view/ext.rb +0 -21
  669. data/lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb +0 -75
  670. data/lib/ddtrace/contrib/action_view/instrumentation/template_renderer.rb +0 -168
  671. data/lib/ddtrace/contrib/action_view/integration.rb +0 -53
  672. data/lib/ddtrace/contrib/action_view/patcher.rb +0 -48
  673. data/lib/ddtrace/contrib/action_view/utils.rb +0 -33
  674. data/lib/ddtrace/contrib/active_job/configuration/settings.rb +0 -33
  675. data/lib/ddtrace/contrib/active_job/event.rb +0 -54
  676. data/lib/ddtrace/contrib/active_job/events/discard.rb +0 -46
  677. data/lib/ddtrace/contrib/active_job/events/enqueue.rb +0 -45
  678. data/lib/ddtrace/contrib/active_job/events/enqueue_at.rb +0 -45
  679. data/lib/ddtrace/contrib/active_job/events/enqueue_retry.rb +0 -47
  680. data/lib/ddtrace/contrib/active_job/events/perform.rb +0 -45
  681. data/lib/ddtrace/contrib/active_job/events/retry_stopped.rb +0 -46
  682. data/lib/ddtrace/contrib/active_job/events.rb +0 -39
  683. data/lib/ddtrace/contrib/active_job/ext.rb +0 -32
  684. data/lib/ddtrace/contrib/active_job/integration.rb +0 -46
  685. data/lib/ddtrace/contrib/active_job/log_injection.rb +0 -21
  686. data/lib/ddtrace/contrib/active_job/patcher.rb +0 -33
  687. data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +0 -31
  688. data/lib/ddtrace/contrib/active_model_serializers/event.rb +0 -69
  689. data/lib/ddtrace/contrib/active_model_serializers/events/render.rb +0 -33
  690. data/lib/ddtrace/contrib/active_model_serializers/events/serialize.rb +0 -36
  691. data/lib/ddtrace/contrib/active_model_serializers/events.rb +0 -31
  692. data/lib/ddtrace/contrib/active_model_serializers/ext.rb +0 -21
  693. data/lib/ddtrace/contrib/active_model_serializers/integration.rb +0 -41
  694. data/lib/ddtrace/contrib/active_model_serializers/patcher.rb +0 -30
  695. data/lib/ddtrace/contrib/active_record/configuration/makara_resolver.rb +0 -31
  696. data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +0 -135
  697. data/lib/ddtrace/contrib/active_record/configuration/settings.rb +0 -36
  698. data/lib/ddtrace/contrib/active_record/event.rb +0 -31
  699. data/lib/ddtrace/contrib/active_record/events/instantiation.rb +0 -61
  700. data/lib/ddtrace/contrib/active_record/events/sql.rb +0 -69
  701. data/lib/ddtrace/contrib/active_record/events.rb +0 -31
  702. data/lib/ddtrace/contrib/active_record/ext.rb +0 -25
  703. data/lib/ddtrace/contrib/active_record/integration.rb +0 -54
  704. data/lib/ddtrace/contrib/active_record/patcher.rb +0 -24
  705. data/lib/ddtrace/contrib/active_record/utils.rb +0 -124
  706. data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +0 -259
  707. data/lib/ddtrace/contrib/active_support/cache/patcher.rb +0 -70
  708. data/lib/ddtrace/contrib/active_support/cache/redis.rb +0 -44
  709. data/lib/ddtrace/contrib/active_support/configuration/settings.rb +0 -31
  710. data/lib/ddtrace/contrib/active_support/ext.rb +0 -28
  711. data/lib/ddtrace/contrib/active_support/integration.rb +0 -47
  712. data/lib/ddtrace/contrib/active_support/notifications/event.rb +0 -76
  713. data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +0 -68
  714. data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +0 -164
  715. data/lib/ddtrace/contrib/active_support/patcher.rb +0 -24
  716. data/lib/ddtrace/contrib/analytics.rb +0 -25
  717. data/lib/ddtrace/contrib/auto_instrument.rb +0 -48
  718. data/lib/ddtrace/contrib/aws/configuration/settings.rb +0 -31
  719. data/lib/ddtrace/contrib/aws/ext.rb +0 -24
  720. data/lib/ddtrace/contrib/aws/instrumentation.rb +0 -91
  721. data/lib/ddtrace/contrib/aws/integration.rb +0 -43
  722. data/lib/ddtrace/contrib/aws/parsed_context.rb +0 -57
  723. data/lib/ddtrace/contrib/aws/patcher.rb +0 -54
  724. data/lib/ddtrace/contrib/aws/services.rb +0 -119
  725. data/lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb +0 -21
  726. data/lib/ddtrace/contrib/concurrent_ruby/context_composite_executor_service.rb +0 -42
  727. data/lib/ddtrace/contrib/concurrent_ruby/ext.rb +0 -13
  728. data/lib/ddtrace/contrib/concurrent_ruby/future_patch.rb +0 -24
  729. data/lib/ddtrace/contrib/concurrent_ruby/integration.rb +0 -39
  730. data/lib/ddtrace/contrib/concurrent_ruby/patcher.rb +0 -30
  731. data/lib/ddtrace/contrib/configurable.rb +0 -103
  732. data/lib/ddtrace/contrib/configuration/resolver.rb +0 -82
  733. data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +0 -40
  734. data/lib/ddtrace/contrib/configuration/settings.rb +0 -56
  735. data/lib/ddtrace/contrib/dalli/configuration/settings.rb +0 -31
  736. data/lib/ddtrace/contrib/dalli/ext.rb +0 -21
  737. data/lib/ddtrace/contrib/dalli/instrumentation.rb +0 -55
  738. data/lib/ddtrace/contrib/dalli/integration.rb +0 -39
  739. data/lib/ddtrace/contrib/dalli/patcher.rb +0 -26
  740. data/lib/ddtrace/contrib/dalli/quantize.rb +0 -23
  741. data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +0 -33
  742. data/lib/ddtrace/contrib/delayed_job/ext.rb +0 -24
  743. data/lib/ddtrace/contrib/delayed_job/integration.rb +0 -39
  744. data/lib/ddtrace/contrib/delayed_job/patcher.rb +0 -29
  745. data/lib/ddtrace/contrib/delayed_job/plugin.rb +0 -85
  746. data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +0 -32
  747. data/lib/ddtrace/contrib/elasticsearch/ext.rb +0 -23
  748. data/lib/ddtrace/contrib/elasticsearch/integration.rb +0 -40
  749. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +0 -123
  750. data/lib/ddtrace/contrib/elasticsearch/quantize.rb +0 -84
  751. data/lib/ddtrace/contrib/ethon/configuration/settings.rb +0 -33
  752. data/lib/ddtrace/contrib/ethon/easy_patch.rb +0 -152
  753. data/lib/ddtrace/contrib/ethon/ext.rb +0 -20
  754. data/lib/ddtrace/contrib/ethon/integration.rb +0 -44
  755. data/lib/ddtrace/contrib/ethon/multi_patch.rb +0 -85
  756. data/lib/ddtrace/contrib/ethon/patcher.rb +0 -27
  757. data/lib/ddtrace/contrib/excon/configuration/settings.rb +0 -34
  758. data/lib/ddtrace/contrib/excon/ext.rb +0 -18
  759. data/lib/ddtrace/contrib/excon/integration.rb +0 -44
  760. data/lib/ddtrace/contrib/excon/middleware.rb +0 -164
  761. data/lib/ddtrace/contrib/excon/patcher.rb +0 -28
  762. data/lib/ddtrace/contrib/extensions.rb +0 -169
  763. data/lib/ddtrace/contrib/faraday/configuration/settings.rb +0 -39
  764. data/lib/ddtrace/contrib/faraday/connection.rb +0 -19
  765. data/lib/ddtrace/contrib/faraday/ext.rb +0 -18
  766. data/lib/ddtrace/contrib/faraday/integration.rb +0 -44
  767. data/lib/ddtrace/contrib/faraday/middleware.rb +0 -86
  768. data/lib/ddtrace/contrib/faraday/patcher.rb +0 -54
  769. data/lib/ddtrace/contrib/faraday/rack_builder.rb +0 -19
  770. data/lib/ddtrace/contrib/grape/configuration/settings.rb +0 -39
  771. data/lib/ddtrace/contrib/grape/endpoint.rb +0 -246
  772. data/lib/ddtrace/contrib/grape/ext.rb +0 -24
  773. data/lib/ddtrace/contrib/grape/instrumentation.rb +0 -34
  774. data/lib/ddtrace/contrib/grape/integration.rb +0 -40
  775. data/lib/ddtrace/contrib/grape/patcher.rb +0 -32
  776. data/lib/ddtrace/contrib/graphql/configuration/settings.rb +0 -33
  777. data/lib/ddtrace/contrib/graphql/ext.rb +0 -17
  778. data/lib/ddtrace/contrib/graphql/integration.rb +0 -40
  779. data/lib/ddtrace/contrib/graphql/patcher.rb +0 -61
  780. data/lib/ddtrace/contrib/grpc/configuration/settings.rb +0 -32
  781. data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +0 -59
  782. data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +0 -80
  783. data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +0 -79
  784. data/lib/ddtrace/contrib/grpc/ext.rb +0 -19
  785. data/lib/ddtrace/contrib/grpc/integration.rb +0 -39
  786. data/lib/ddtrace/contrib/grpc/intercept_with_datadog.rb +0 -50
  787. data/lib/ddtrace/contrib/grpc/patcher.rb +0 -34
  788. data/lib/ddtrace/contrib/http/circuit_breaker.rb +0 -38
  789. data/lib/ddtrace/contrib/http/configuration/settings.rb +0 -33
  790. data/lib/ddtrace/contrib/http/ext.rb +0 -18
  791. data/lib/ddtrace/contrib/http/instrumentation.rb +0 -180
  792. data/lib/ddtrace/contrib/http/integration.rb +0 -46
  793. data/lib/ddtrace/contrib/http/patcher.rb +0 -27
  794. data/lib/ddtrace/contrib/http_annotation_helper.rb +0 -11
  795. data/lib/ddtrace/contrib/httpclient/configuration/settings.rb +0 -33
  796. data/lib/ddtrace/contrib/httpclient/ext.rb +0 -18
  797. data/lib/ddtrace/contrib/httpclient/instrumentation.rb +0 -148
  798. data/lib/ddtrace/contrib/httpclient/integration.rb +0 -44
  799. data/lib/ddtrace/contrib/httpclient/patcher.rb +0 -39
  800. data/lib/ddtrace/contrib/httprb/configuration/settings.rb +0 -33
  801. data/lib/ddtrace/contrib/httprb/ext.rb +0 -18
  802. data/lib/ddtrace/contrib/httprb/instrumentation.rb +0 -158
  803. data/lib/ddtrace/contrib/httprb/integration.rb +0 -44
  804. data/lib/ddtrace/contrib/httprb/patcher.rb +0 -39
  805. data/lib/ddtrace/contrib/integration.rb +0 -17
  806. data/lib/ddtrace/contrib/kafka/configuration/settings.rb +0 -31
  807. data/lib/ddtrace/contrib/kafka/consumer_event.rb +0 -15
  808. data/lib/ddtrace/contrib/kafka/consumer_group_event.rb +0 -15
  809. data/lib/ddtrace/contrib/kafka/event.rb +0 -52
  810. data/lib/ddtrace/contrib/kafka/events/connection/request.rb +0 -35
  811. data/lib/ddtrace/contrib/kafka/events/consumer/process_batch.rb +0 -42
  812. data/lib/ddtrace/contrib/kafka/events/consumer/process_message.rb +0 -40
  813. data/lib/ddtrace/contrib/kafka/events/consumer_group/heartbeat.rb +0 -40
  814. data/lib/ddtrace/contrib/kafka/events/consumer_group/join_group.rb +0 -30
  815. data/lib/ddtrace/contrib/kafka/events/consumer_group/leave_group.rb +0 -30
  816. data/lib/ddtrace/contrib/kafka/events/consumer_group/sync_group.rb +0 -30
  817. data/lib/ddtrace/contrib/kafka/events/produce_operation/send_messages.rb +0 -33
  818. data/lib/ddtrace/contrib/kafka/events/producer/deliver_messages.rb +0 -36
  819. data/lib/ddtrace/contrib/kafka/events.rb +0 -45
  820. data/lib/ddtrace/contrib/kafka/ext.rb +0 -42
  821. data/lib/ddtrace/contrib/kafka/integration.rb +0 -40
  822. data/lib/ddtrace/contrib/kafka/patcher.rb +0 -27
  823. data/lib/ddtrace/contrib/lograge/configuration/settings.rb +0 -19
  824. data/lib/ddtrace/contrib/lograge/ext.rb +0 -11
  825. data/lib/ddtrace/contrib/lograge/instrumentation.rb +0 -39
  826. data/lib/ddtrace/contrib/lograge/integration.rb +0 -46
  827. data/lib/ddtrace/contrib/lograge/patcher.rb +0 -26
  828. data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +0 -34
  829. data/lib/ddtrace/contrib/mongodb/ext.rb +0 -24
  830. data/lib/ddtrace/contrib/mongodb/instrumentation.rb +0 -70
  831. data/lib/ddtrace/contrib/mongodb/integration.rb +0 -44
  832. data/lib/ddtrace/contrib/mongodb/parsers.rb +0 -69
  833. data/lib/ddtrace/contrib/mongodb/patcher.rb +0 -32
  834. data/lib/ddtrace/contrib/mongodb/subscribers.rb +0 -112
  835. data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +0 -31
  836. data/lib/ddtrace/contrib/mysql2/ext.rb +0 -19
  837. data/lib/ddtrace/contrib/mysql2/instrumentation.rb +0 -65
  838. data/lib/ddtrace/contrib/mysql2/integration.rb +0 -39
  839. data/lib/ddtrace/contrib/mysql2/patcher.rb +0 -28
  840. data/lib/ddtrace/contrib/patchable.rb +0 -71
  841. data/lib/ddtrace/contrib/patcher.rb +0 -66
  842. data/lib/ddtrace/contrib/presto/configuration/settings.rb +0 -31
  843. data/lib/ddtrace/contrib/presto/ext.rb +0 -29
  844. data/lib/ddtrace/contrib/presto/instrumentation.rb +0 -111
  845. data/lib/ddtrace/contrib/presto/integration.rb +0 -39
  846. data/lib/ddtrace/contrib/presto/patcher.rb +0 -34
  847. data/lib/ddtrace/contrib/qless/configuration/settings.rb +0 -36
  848. data/lib/ddtrace/contrib/qless/ext.rb +0 -21
  849. data/lib/ddtrace/contrib/qless/integration.rb +0 -39
  850. data/lib/ddtrace/contrib/qless/patcher.rb +0 -35
  851. data/lib/ddtrace/contrib/qless/qless_job.rb +0 -74
  852. data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +0 -34
  853. data/lib/ddtrace/contrib/que/configuration/settings.rb +0 -44
  854. data/lib/ddtrace/contrib/que/ext.rb +0 -31
  855. data/lib/ddtrace/contrib/que/integration.rb +0 -43
  856. data/lib/ddtrace/contrib/que/patcher.rb +0 -25
  857. data/lib/ddtrace/contrib/que/tracer.rb +0 -58
  858. data/lib/ddtrace/contrib/racecar/configuration/settings.rb +0 -31
  859. data/lib/ddtrace/contrib/racecar/event.rb +0 -77
  860. data/lib/ddtrace/contrib/racecar/events/batch.rb +0 -28
  861. data/lib/ddtrace/contrib/racecar/events/consume.rb +0 -28
  862. data/lib/ddtrace/contrib/racecar/events/message.rb +0 -28
  863. data/lib/ddtrace/contrib/racecar/events.rb +0 -33
  864. data/lib/ddtrace/contrib/racecar/ext.rb +0 -26
  865. data/lib/ddtrace/contrib/racecar/integration.rb +0 -40
  866. data/lib/ddtrace/contrib/racecar/patcher.rb +0 -27
  867. data/lib/ddtrace/contrib/rack/configuration/settings.rb +0 -47
  868. data/lib/ddtrace/contrib/rack/ext.rb +0 -22
  869. data/lib/ddtrace/contrib/rack/integration.rb +0 -46
  870. data/lib/ddtrace/contrib/rack/middlewares.rb +0 -288
  871. data/lib/ddtrace/contrib/rack/patcher.rb +0 -106
  872. data/lib/ddtrace/contrib/rack/request_queue.rb +0 -45
  873. data/lib/ddtrace/contrib/rails/auto_instrument_railtie.rb +0 -10
  874. data/lib/ddtrace/contrib/rails/configuration/settings.rb +0 -101
  875. data/lib/ddtrace/contrib/rails/ext.rb +0 -18
  876. data/lib/ddtrace/contrib/rails/framework.rb +0 -172
  877. data/lib/ddtrace/contrib/rails/integration.rb +0 -45
  878. data/lib/ddtrace/contrib/rails/log_injection.rb +0 -42
  879. data/lib/ddtrace/contrib/rails/middlewares.rb +0 -44
  880. data/lib/ddtrace/contrib/rails/patcher.rb +0 -119
  881. data/lib/ddtrace/contrib/rails/railtie.rb +0 -18
  882. data/lib/ddtrace/contrib/rails/utils.rb +0 -25
  883. data/lib/ddtrace/contrib/rake/configuration/settings.rb +0 -32
  884. data/lib/ddtrace/contrib/rake/ext.rb +0 -22
  885. data/lib/ddtrace/contrib/rake/instrumentation.rb +0 -91
  886. data/lib/ddtrace/contrib/rake/integration.rb +0 -39
  887. data/lib/ddtrace/contrib/rake/patcher.rb +0 -31
  888. data/lib/ddtrace/contrib/redis/configuration/resolver.rb +0 -46
  889. data/lib/ddtrace/contrib/redis/configuration/settings.rb +0 -36
  890. data/lib/ddtrace/contrib/redis/ext.rb +0 -23
  891. data/lib/ddtrace/contrib/redis/instrumentation.rb +0 -90
  892. data/lib/ddtrace/contrib/redis/integration.rb +0 -43
  893. data/lib/ddtrace/contrib/redis/patcher.rb +0 -33
  894. data/lib/ddtrace/contrib/redis/quantize.rb +0 -76
  895. data/lib/ddtrace/contrib/redis/tags.rb +0 -47
  896. data/lib/ddtrace/contrib/redis/vendor/resolver.rb +0 -159
  897. data/lib/ddtrace/contrib/registerable.rb +0 -33
  898. data/lib/ddtrace/contrib/registry.rb +0 -43
  899. data/lib/ddtrace/contrib/resque/configuration/settings.rb +0 -49
  900. data/lib/ddtrace/contrib/resque/ext.rb +0 -18
  901. data/lib/ddtrace/contrib/resque/integration.rb +0 -44
  902. data/lib/ddtrace/contrib/resque/patcher.rb +0 -30
  903. data/lib/ddtrace/contrib/resque/resque_job.rb +0 -104
  904. data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +0 -32
  905. data/lib/ddtrace/contrib/rest_client/ext.rb +0 -18
  906. data/lib/ddtrace/contrib/rest_client/integration.rb +0 -39
  907. data/lib/ddtrace/contrib/rest_client/patcher.rb +0 -25
  908. data/lib/ddtrace/contrib/rest_client/request_patch.rb +0 -92
  909. data/lib/ddtrace/contrib/semantic_logger/configuration/settings.rb +0 -19
  910. data/lib/ddtrace/contrib/semantic_logger/ext.rb +0 -11
  911. data/lib/ddtrace/contrib/semantic_logger/instrumentation.rb +0 -43
  912. data/lib/ddtrace/contrib/semantic_logger/integration.rb +0 -48
  913. data/lib/ddtrace/contrib/semantic_logger/patcher.rb +0 -26
  914. data/lib/ddtrace/contrib/sequel/configuration/settings.rb +0 -29
  915. data/lib/ddtrace/contrib/sequel/database.rb +0 -64
  916. data/lib/ddtrace/contrib/sequel/dataset.rb +0 -64
  917. data/lib/ddtrace/contrib/sequel/ext.rb +0 -20
  918. data/lib/ddtrace/contrib/sequel/integration.rb +0 -39
  919. data/lib/ddtrace/contrib/sequel/patcher.rb +0 -34
  920. data/lib/ddtrace/contrib/sequel/utils.rb +0 -75
  921. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +0 -32
  922. data/lib/ddtrace/contrib/shoryuken/ext.rb +0 -22
  923. data/lib/ddtrace/contrib/shoryuken/integration.rb +0 -40
  924. data/lib/ddtrace/contrib/shoryuken/patcher.rb +0 -25
  925. data/lib/ddtrace/contrib/shoryuken/tracer.rb +0 -56
  926. data/lib/ddtrace/contrib/sidekiq/client_tracer.rb +0 -44
  927. data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +0 -38
  928. data/lib/ddtrace/contrib/sidekiq/ext.rb +0 -31
  929. data/lib/ddtrace/contrib/sidekiq/integration.rb +0 -49
  930. data/lib/ddtrace/contrib/sidekiq/patcher.rb +0 -68
  931. data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/heartbeat.rb +0 -30
  932. data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/job_fetch.rb +0 -30
  933. data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/scheduled_push.rb +0 -29
  934. data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +0 -66
  935. data/lib/ddtrace/contrib/sidekiq/tracing.rb +0 -45
  936. data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +0 -40
  937. data/lib/ddtrace/contrib/sinatra/env.rb +0 -59
  938. data/lib/ddtrace/contrib/sinatra/ext.rb +0 -28
  939. data/lib/ddtrace/contrib/sinatra/headers.rb +0 -30
  940. data/lib/ddtrace/contrib/sinatra/integration.rb +0 -39
  941. data/lib/ddtrace/contrib/sinatra/patcher.rb +0 -30
  942. data/lib/ddtrace/contrib/sinatra/tracer.rb +0 -150
  943. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +0 -112
  944. data/lib/ddtrace/contrib/sneakers/configuration/settings.rb +0 -34
  945. data/lib/ddtrace/contrib/sneakers/ext.rb +0 -23
  946. data/lib/ddtrace/contrib/sneakers/integration.rb +0 -42
  947. data/lib/ddtrace/contrib/sneakers/patcher.rb +0 -25
  948. data/lib/ddtrace/contrib/sneakers/tracer.rb +0 -54
  949. data/lib/ddtrace/contrib/status_code_matcher.rb +0 -70
  950. data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +0 -31
  951. data/lib/ddtrace/contrib/sucker_punch/exception_handler.rb +0 -25
  952. data/lib/ddtrace/contrib/sucker_punch/ext.rb +0 -22
  953. data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +0 -89
  954. data/lib/ddtrace/contrib/sucker_punch/integration.rb +0 -39
  955. data/lib/ddtrace/contrib/sucker_punch/patcher.rb +0 -44
  956. data/lib/ddtrace/correlation.rb +0 -40
  957. data/lib/ddtrace/diagnostics/environment_logger.rb +0 -280
  958. data/lib/ddtrace/diagnostics/health.rb +0 -34
  959. data/lib/ddtrace/distributed_tracing/headers/b3.rb +0 -45
  960. data/lib/ddtrace/distributed_tracing/headers/b3_single.rb +0 -57
  961. data/lib/ddtrace/distributed_tracing/headers/datadog.rb +0 -43
  962. data/lib/ddtrace/distributed_tracing/headers/headers.rb +0 -72
  963. data/lib/ddtrace/distributed_tracing/headers/helpers.rb +0 -44
  964. data/lib/ddtrace/encoding.rb +0 -72
  965. data/lib/ddtrace/error.rb +0 -97
  966. data/lib/ddtrace/event.rb +0 -53
  967. data/lib/ddtrace/ext/analytics.rb +0 -13
  968. data/lib/ddtrace/ext/app_types.rb +0 -12
  969. data/lib/ddtrace/ext/correlation.rb +0 -12
  970. data/lib/ddtrace/ext/diagnostics.rb +0 -37
  971. data/lib/ddtrace/ext/distributed.rb +0 -40
  972. data/lib/ddtrace/ext/environment.rb +0 -24
  973. data/lib/ddtrace/ext/errors.rb +0 -11
  974. data/lib/ddtrace/ext/forced_tracing.rb +0 -26
  975. data/lib/ddtrace/ext/git.rb +0 -32
  976. data/lib/ddtrace/ext/http.rb +0 -47
  977. data/lib/ddtrace/ext/integration.rb +0 -9
  978. data/lib/ddtrace/ext/manual_tracing.rb +0 -10
  979. data/lib/ddtrace/ext/metrics.rb +0 -16
  980. data/lib/ddtrace/ext/net.rb +0 -11
  981. data/lib/ddtrace/ext/priority.rb +0 -19
  982. data/lib/ddtrace/ext/profiling.rb +0 -57
  983. data/lib/ddtrace/ext/runtime.rb +0 -25
  984. data/lib/ddtrace/ext/sampling.rb +0 -17
  985. data/lib/ddtrace/ext/sql.rb +0 -9
  986. data/lib/ddtrace/ext/test.rb +0 -9
  987. data/lib/ddtrace/ext/transport.rb +0 -32
  988. data/lib/ddtrace/forced_tracing.rb +0 -39
  989. data/lib/ddtrace/logger.rb +0 -41
  990. data/lib/ddtrace/metrics.rb +0 -282
  991. data/lib/ddtrace/opentelemetry/extensions.rb +0 -14
  992. data/lib/ddtrace/opentelemetry/span.rb +0 -34
  993. data/lib/ddtrace/opentracer/binary_propagator.rb +0 -25
  994. data/lib/ddtrace/opentracer/carrier.rb +0 -7
  995. data/lib/ddtrace/opentracer/distributed_headers.rb +0 -56
  996. data/lib/ddtrace/opentracer/global_tracer.rb +0 -16
  997. data/lib/ddtrace/opentracer/propagator.rb +0 -23
  998. data/lib/ddtrace/opentracer/rack_propagator.rb +0 -61
  999. data/lib/ddtrace/opentracer/scope.rb +0 -16
  1000. data/lib/ddtrace/opentracer/scope_manager.rb +0 -7
  1001. data/lib/ddtrace/opentracer/span.rb +0 -95
  1002. data/lib/ddtrace/opentracer/span_context.rb +0 -15
  1003. data/lib/ddtrace/opentracer/span_context_factory.rb +0 -24
  1004. data/lib/ddtrace/opentracer/text_map_propagator.rb +0 -76
  1005. data/lib/ddtrace/opentracer/thread_local_scope.rb +0 -32
  1006. data/lib/ddtrace/opentracer/thread_local_scope_manager.rb +0 -41
  1007. data/lib/ddtrace/opentracer/tracer.rb +0 -209
  1008. data/lib/ddtrace/opentracer.rb +0 -22
  1009. data/lib/ddtrace/patcher.rb +0 -69
  1010. data/lib/ddtrace/pin.rb +0 -86
  1011. data/lib/ddtrace/pipeline/span_filter.rb +0 -39
  1012. data/lib/ddtrace/pipeline/span_processor.rb +0 -21
  1013. data/lib/ddtrace/pipeline.rb +0 -47
  1014. data/lib/ddtrace/profiling/backtrace_location.rb +0 -33
  1015. data/lib/ddtrace/profiling/buffer.rb +0 -42
  1016. data/lib/ddtrace/profiling/collectors/stack.rb +0 -301
  1017. data/lib/ddtrace/profiling/encoding/profile.rb +0 -46
  1018. data/lib/ddtrace/profiling/event.rb +0 -14
  1019. data/lib/ddtrace/profiling/events/stack.rb +0 -81
  1020. data/lib/ddtrace/profiling/exporter.rb +0 -24
  1021. data/lib/ddtrace/profiling/ext/forking.rb +0 -98
  1022. data/lib/ddtrace/profiling/flush.rb +0 -44
  1023. data/lib/ddtrace/profiling/native_extension.rb +0 -40
  1024. data/lib/ddtrace/profiling/pprof/builder.rb +0 -126
  1025. data/lib/ddtrace/profiling/pprof/converter.rb +0 -103
  1026. data/lib/ddtrace/profiling/pprof/message_set.rb +0 -15
  1027. data/lib/ddtrace/profiling/pprof/payload.rb +0 -19
  1028. data/lib/ddtrace/profiling/pprof/pprof_pb.rb +0 -82
  1029. data/lib/ddtrace/profiling/pprof/stack_sample.rb +0 -140
  1030. data/lib/ddtrace/profiling/pprof/string_table.rb +0 -11
  1031. data/lib/ddtrace/profiling/pprof/template.rb +0 -119
  1032. data/lib/ddtrace/profiling/profiler.rb +0 -31
  1033. data/lib/ddtrace/profiling/recorder.rb +0 -96
  1034. data/lib/ddtrace/profiling/scheduler.rb +0 -134
  1035. data/lib/ddtrace/profiling/tasks/setup.rb +0 -90
  1036. data/lib/ddtrace/profiling/trace_identifiers/ddtrace.rb +0 -42
  1037. data/lib/ddtrace/profiling/trace_identifiers/helper.rb +0 -46
  1038. data/lib/ddtrace/profiling/transport/client.rb +0 -15
  1039. data/lib/ddtrace/profiling/transport/http/api/endpoint.rb +0 -101
  1040. data/lib/ddtrace/profiling/transport/http/api/instance.rb +0 -37
  1041. data/lib/ddtrace/profiling/transport/http/api/spec.rb +0 -41
  1042. data/lib/ddtrace/profiling/transport/http/api.rb +0 -44
  1043. data/lib/ddtrace/profiling/transport/http/builder.rb +0 -29
  1044. data/lib/ddtrace/profiling/transport/http/client.rb +0 -34
  1045. data/lib/ddtrace/profiling/transport/http/response.rb +0 -22
  1046. data/lib/ddtrace/profiling/transport/http.rb +0 -111
  1047. data/lib/ddtrace/profiling/transport/io/client.rb +0 -28
  1048. data/lib/ddtrace/profiling/transport/io/response.rb +0 -17
  1049. data/lib/ddtrace/profiling/transport/io.rb +0 -31
  1050. data/lib/ddtrace/profiling/transport/parcel.rb +0 -18
  1051. data/lib/ddtrace/profiling/transport/request.rb +0 -16
  1052. data/lib/ddtrace/profiling/transport/response.rb +0 -9
  1053. data/lib/ddtrace/profiling.rb +0 -149
  1054. data/lib/ddtrace/propagation/grpc_propagator.rb +0 -75
  1055. data/lib/ddtrace/propagation/http_propagator.rb +0 -91
  1056. data/lib/ddtrace/quantization/hash.rb +0 -104
  1057. data/lib/ddtrace/quantization/http.rb +0 -90
  1058. data/lib/ddtrace/runtime/metrics.rb +0 -135
  1059. data/lib/ddtrace/sampler.rb +0 -303
  1060. data/lib/ddtrace/sampling/matcher.rb +0 -58
  1061. data/lib/ddtrace/sampling/rate_limiter.rb +0 -177
  1062. data/lib/ddtrace/sampling/rule.rb +0 -62
  1063. data/lib/ddtrace/sampling/rule_sampler.rb +0 -133
  1064. data/lib/ddtrace/sampling.rb +0 -3
  1065. data/lib/ddtrace/span.rb +0 -445
  1066. data/lib/ddtrace/sync_writer.rb +0 -69
  1067. data/lib/ddtrace/tasks/exec.rb +0 -47
  1068. data/lib/ddtrace/tasks/help.rb +0 -15
  1069. data/lib/ddtrace/tracer.rb +0 -449
  1070. data/lib/ddtrace/utils/compression.rb +0 -28
  1071. data/lib/ddtrace/utils/database.rb +0 -26
  1072. data/lib/ddtrace/utils/forking.rb +0 -53
  1073. data/lib/ddtrace/utils/object_set.rb +0 -40
  1074. data/lib/ddtrace/utils/only_once.rb +0 -41
  1075. data/lib/ddtrace/utils/sequence.rb +0 -18
  1076. data/lib/ddtrace/utils/string_table.rb +0 -46
  1077. data/lib/ddtrace/utils/time.rb +0 -51
  1078. data/lib/ddtrace/utils.rb +0 -80
  1079. data/lib/ddtrace/vendor/active_record/connection_specification.rb +0 -302
  1080. data/lib/ddtrace/vendor/multipart-post/multipart/post/composite_read_io.rb +0 -117
  1081. data/lib/ddtrace/vendor/multipart-post/multipart/post/multipartable.rb +0 -58
  1082. data/lib/ddtrace/vendor/multipart-post/multipart/post/parts.rb +0 -136
  1083. data/lib/ddtrace/vendor/multipart-post/multipart/post/version.rb +0 -10
  1084. data/lib/ddtrace/vendor/multipart-post/multipart/post.rb +0 -9
  1085. data/lib/ddtrace/vendor/multipart-post/multipart.rb +0 -13
  1086. data/lib/ddtrace/vendor/multipart-post/net/http/post/multipart.rb +0 -33
  1087. data/lib/ddtrace/worker.rb +0 -21
  1088. data/lib/ddtrace/workers/async.rb +0 -175
  1089. data/lib/ddtrace/workers/loop.rb +0 -132
  1090. data/lib/ddtrace/workers/polling.rb +0 -56
  1091. data/lib/ddtrace/workers/queue.rb +0 -41
  1092. data/lib/ddtrace/workers/runtime_metrics.rb +0 -65
  1093. data/lib/ddtrace/workers/trace_writer.rb +0 -200
  1094. data/lib/ddtrace/workers.rb +0 -123
  1095. data/lib/ddtrace/writer.rb +0 -200
  1096. /data/lib/{ddtrace → datadog/core}/vendor/multipart-post/LICENSE +0 -0
  1097. /data/lib/{ddtrace → datadog}/profiling/pprof/pprof.proto +0 -0
  1098. /data/lib/{ddtrace/vendor/active_record → datadog/tracing/contrib/active_record/vendor}/MIT-LICENSE +0 -0
  1099. /data/lib/{ddtrace → datadog/tracing}/contrib/redis/vendor/LICENSE +0 -0
@@ -0,0 +1,72 @@
1
+ # typed: true
2
+
3
+ require 'datadog/tracing/context'
4
+ require 'datadog/tracing/distributed/headers/ext'
5
+ require 'datadog/tracing/propagation/http'
6
+ require 'datadog/tracing/trace_operation'
7
+ require 'datadog/opentracer/propagator'
8
+
9
+ module Datadog
10
+ module OpenTracer
11
+ # OpenTracing propagator for Datadog::OpenTracer::Tracer
12
+ module RackPropagator
13
+ extend Propagator
14
+ extend Tracing::Distributed::Headers::Ext
15
+ include Tracing::Distributed::Headers::Ext
16
+
17
+ BAGGAGE_PREFIX = 'ot-baggage-'.freeze
18
+ BAGGAGE_PREFIX_FORMATTED = 'HTTP_OT_BAGGAGE_'.freeze
19
+
20
+ class << self
21
+ # Inject a SpanContext into the given carrier
22
+ #
23
+ # @param span_context [SpanContext]
24
+ # @param carrier [Carrier] A carrier object of Rack type
25
+ def inject(span_context, carrier)
26
+ active_trace = span_context.datadog_context.active_trace
27
+
28
+ # Inject Datadog trace properties
29
+ Tracing::Propagation::HTTP.inject!(active_trace, carrier)
30
+
31
+ # Inject baggage
32
+ span_context.baggage.each do |key, value|
33
+ carrier[BAGGAGE_PREFIX + key] = value
34
+ end
35
+
36
+ nil
37
+ end
38
+
39
+ # Extract a SpanContext in Rack format from the given carrier.
40
+ #
41
+ # @param carrier [Carrier] A carrier object of Rack type
42
+ # @return [SpanContext, nil] the extracted SpanContext or nil if none could be found
43
+ def extract(carrier)
44
+ # First extract & build a Datadog context
45
+ datadog_trace_digest = Tracing::Propagation::HTTP.extract(carrier)
46
+
47
+ # Then extract any other baggage
48
+ baggage = {}
49
+ carrier.each do |key, value|
50
+ baggage[header_to_baggage(key)] = value if baggage_header?(key)
51
+ end
52
+
53
+ SpanContextFactory.build(
54
+ datadog_context: nil,
55
+ datadog_trace_digest: datadog_trace_digest,
56
+ baggage: baggage
57
+ )
58
+ end
59
+
60
+ private
61
+
62
+ def baggage_header?(header)
63
+ header.to_s.start_with?(BAGGAGE_PREFIX_FORMATTED)
64
+ end
65
+
66
+ def header_to_baggage(key)
67
+ key[BAGGAGE_PREFIX_FORMATTED.length, key.length].downcase
68
+ end
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,18 @@
1
+ # typed: true
2
+
3
+ module Datadog
4
+ module OpenTracer
5
+ # OpenTracing adapter for scope
6
+ # @public_api
7
+ class Scope < ::OpenTracing::Scope
8
+ attr_reader \
9
+ :manager,
10
+ :span
11
+
12
+ def initialize(manager:, span:)
13
+ @manager = manager
14
+ @span = span
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,9 @@
1
+ # typed: strict
2
+
3
+ module Datadog
4
+ module OpenTracer
5
+ # @public_api
6
+ class ScopeManager < ::OpenTracing::ScopeManager
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,101 @@
1
+ # typed: true
2
+
3
+ require 'time'
4
+
5
+ require 'datadog/tracing/metadata/ext'
6
+
7
+ module Datadog
8
+ module OpenTracer
9
+ # OpenTracing adapter for Datadog::Span
10
+ # @public_api
11
+ class Span < ::OpenTracing::Span
12
+ attr_reader \
13
+ :datadog_span
14
+
15
+ def initialize(datadog_span:, span_context:)
16
+ @datadog_span = datadog_span
17
+ @span_context = span_context
18
+ end
19
+
20
+ # Set the name of the operation
21
+ #
22
+ # @param [String] name
23
+ def operation_name=(name)
24
+ datadog_span.name = name
25
+ end
26
+
27
+ # Span Context
28
+ #
29
+ # @return [SpanContext]
30
+ def context
31
+ @span_context
32
+ end
33
+
34
+ # Set a tag value on this span
35
+ # @param key [String] the key of the tag
36
+ # @param value [String, Numeric, Boolean] the value of the tag. If it's not
37
+ # a String, Numeric, or Boolean it will be encoded with to_s
38
+ def set_tag(key, value)
39
+ # Special cases to convert opentracing tags to datadog tags
40
+ case key
41
+ when 'error'
42
+ # Opentracing supports and `error: <bool>` tag, we need to convert to span status
43
+ # DEV: Do not return, we want to still set the `error` tag as they requested
44
+ datadog_span.status = value ? Datadog::Tracing::Metadata::Ext::Errors::STATUS : 0
45
+ end
46
+
47
+ tap { datadog_span.set_tag(key, value) }
48
+ end
49
+
50
+ # Set a baggage item on the span
51
+ # @param key [String] the key of the baggage item
52
+ # @param value [String] the value of the baggage item
53
+ def set_baggage_item(key, value)
54
+ tap do
55
+ # SpanContext is immutable, so to make changes
56
+ # build a new span context.
57
+ @span_context = SpanContextFactory.clone(
58
+ span_context: context,
59
+ baggage: { key => value }
60
+ )
61
+ end
62
+ end
63
+
64
+ # Get a baggage item
65
+ # @param key [String] the key of the baggage item
66
+ # @return [String] value of the baggage item
67
+ def get_baggage_item(key)
68
+ context.baggage[key]
69
+ end
70
+
71
+ # @deprecated Use {#log_kv} instead.
72
+ # Reason: event is an optional standard log field defined in spec and not required. Also,
73
+ # method name {#log_kv} is more consistent with other language implementations such as Python and Go.
74
+ #
75
+ # Add a log entry to this span
76
+ # @param event [String] event name for the log
77
+ # @param timestamp [Time] time of the log
78
+ # @param fields [Hash] Additional information to log
79
+ def log(event: nil, timestamp: Time.now, **fields)
80
+ super # Log deprecation warning
81
+
82
+ # If the fields specify an error
83
+ datadog_span.set_error(fields[:'error.object']) if fields.key?(:'error.object')
84
+ end
85
+
86
+ # Add a log entry to this span
87
+ # @param timestamp [Time] time of the log
88
+ # @param fields [Hash] Additional information to log
89
+ def log_kv(timestamp: Time.now, **fields)
90
+ # If the fields specify an error
91
+ datadog_span.set_error(fields[:'error.object']) if fields.key?(:'error.object')
92
+ end
93
+
94
+ # Finish the {Span}
95
+ # @param end_time [Time] custom end time, if not now
96
+ def finish(end_time: Time.now)
97
+ datadog_span.finish(end_time)
98
+ end
99
+ end
100
+ end
101
+ end
@@ -0,0 +1,19 @@
1
+ # typed: true
2
+
3
+ module Datadog
4
+ module OpenTracer
5
+ # OpenTracing adapter for SpanContext
6
+ # @public_api
7
+ class SpanContext < ::OpenTracing::SpanContext
8
+ attr_reader \
9
+ :datadog_context,
10
+ :datadog_trace_digest
11
+
12
+ def initialize(datadog_context:, datadog_trace_digest: nil, baggage: {})
13
+ @datadog_context = datadog_context
14
+ @datadog_trace_digest = datadog_trace_digest
15
+ @baggage = baggage.freeze
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,27 @@
1
+ # typed: true
2
+
3
+ module Datadog
4
+ module OpenTracer
5
+ # Creates new Datadog::OpenTracer::SpanContext
6
+ module SpanContextFactory
7
+ module_function
8
+
9
+ def build(datadog_context:, datadog_trace_digest: nil, baggage: {})
10
+ SpanContext.new(
11
+ datadog_context: datadog_context,
12
+ datadog_trace_digest: datadog_trace_digest,
13
+ baggage: baggage.dup
14
+ )
15
+ end
16
+
17
+ def clone(span_context:, baggage: {})
18
+ SpanContext.new(
19
+ datadog_context: span_context.datadog_context,
20
+ datadog_trace_digest: span_context.datadog_trace_digest,
21
+ # Merge baggage from previous SpanContext
22
+ baggage: span_context.baggage.merge(baggage)
23
+ )
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,87 @@
1
+ # typed: true
2
+
3
+ require 'datadog/tracing/context'
4
+ require 'datadog/tracing/distributed/headers/ext'
5
+ require 'datadog/tracing/trace_operation'
6
+ require 'datadog/opentracer/propagator'
7
+
8
+ module Datadog
9
+ module OpenTracer
10
+ # OpenTracing propagator for Datadog::OpenTracer::Tracer
11
+ module TextMapPropagator
12
+ extend Propagator
13
+ extend Tracing::Distributed::Headers::Ext
14
+ include Tracing::Distributed::Headers::Ext
15
+
16
+ BAGGAGE_PREFIX = 'ot-baggage-'.freeze
17
+
18
+ class << self
19
+ # Inject a SpanContext into the given carrier
20
+ #
21
+ # @param span_context [SpanContext]
22
+ # @param carrier [Carrier] A carrier object of Rack type
23
+ def inject(span_context, carrier)
24
+ # Inject baggage
25
+ span_context.baggage.each do |key, value|
26
+ carrier[BAGGAGE_PREFIX + key] = value
27
+ end
28
+
29
+ # Inject Datadog trace properties
30
+ active_trace = span_context.datadog_context.active_trace
31
+ digest = active_trace.to_digest if active_trace
32
+ return unless digest
33
+
34
+ carrier[HTTP_HEADER_ORIGIN] = digest.trace_origin
35
+ carrier[HTTP_HEADER_PARENT_ID] = digest.span_id
36
+ carrier[HTTP_HEADER_SAMPLING_PRIORITY] = digest.trace_sampling_priority
37
+ carrier[HTTP_HEADER_TRACE_ID] = digest.trace_id
38
+
39
+ nil
40
+ end
41
+
42
+ # Extract a SpanContext in TextMap format from the given carrier.
43
+ #
44
+ # @param carrier [Carrier] A carrier object of TextMap type
45
+ # @return [SpanContext, nil] the extracted SpanContext or nil if none could be found
46
+ def extract(carrier)
47
+ # First extract & build a Datadog context
48
+ headers = DistributedHeaders.new(carrier)
49
+ datadog_trace_digest = headers_to_trace_digest(headers)
50
+
51
+ # Then extract any other baggage
52
+ baggage = {}
53
+ carrier.each do |key, value|
54
+ baggage[item_to_baggage(key)] = value if baggage_item?(key)
55
+ end
56
+
57
+ SpanContextFactory.build(
58
+ datadog_context: nil,
59
+ datadog_trace_digest: datadog_trace_digest,
60
+ baggage: baggage
61
+ )
62
+ end
63
+
64
+ private
65
+
66
+ def headers_to_trace_digest(headers)
67
+ return unless headers.valid?
68
+
69
+ Datadog::Tracing::TraceDigest.new(
70
+ span_id: headers.parent_id,
71
+ trace_id: headers.trace_id,
72
+ trace_origin: headers.origin,
73
+ trace_sampling_priority: headers.sampling_priority
74
+ )
75
+ end
76
+
77
+ def baggage_item?(item)
78
+ item.to_s.start_with?(BAGGAGE_PREFIX)
79
+ end
80
+
81
+ def item_to_baggage(key)
82
+ key[BAGGAGE_PREFIX.length, key.length]
83
+ end
84
+ end
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,34 @@
1
+ # typed: true
2
+
3
+ module Datadog
4
+ module OpenTracer
5
+ # OpenTracing adapter for thread local scopes
6
+ # @public_api
7
+ class ThreadLocalScope < Scope
8
+ attr_reader \
9
+ :finish_on_close
10
+
11
+ def initialize(
12
+ manager:,
13
+ span:,
14
+ finish_on_close: true
15
+ )
16
+ super(manager: manager, span: span)
17
+ @finish_on_close = finish_on_close
18
+ @previous_scope = manager.active
19
+ end
20
+
21
+ # Mark the end of the active period for the current thread and Scope,
22
+ # updating the ScopeManager#active in the process.
23
+ #
24
+ # NOTE: Calling close more than once on a single Scope instance leads to
25
+ # undefined behavior.
26
+ def close
27
+ return unless equal?(manager.active)
28
+
29
+ span.finish if finish_on_close
30
+ manager.send(:set_scope, @previous_scope)
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,43 @@
1
+ # typed: true
2
+
3
+ module Datadog
4
+ module OpenTracer
5
+ # OpenTracing adapter for thread local scope management
6
+ # @public_api
7
+ class ThreadLocalScopeManager < ScopeManager
8
+ # Make a span instance active.
9
+ #
10
+ # @param span [Span] the Span that should become active
11
+ # @param finish_on_close [Boolean] whether the Span should automatically be
12
+ # finished when Scope#close is called
13
+ # @return [Scope] instance to control the end of the active period for the
14
+ # Span. It is a programming error to neglect to call Scope#close on the
15
+ # returned instance.
16
+ def activate(span, finish_on_close: true)
17
+ ThreadLocalScope.new(
18
+ manager: self,
19
+ span: span,
20
+ finish_on_close: finish_on_close
21
+ ).tap do |scope|
22
+ set_scope(scope)
23
+ end
24
+ end
25
+
26
+ # @return [Scope] the currently active Scope which can be used to access the
27
+ # currently active Span.
28
+ #
29
+ # If there is a non-null Scope, its wrapped Span becomes an implicit parent
30
+ # (as Reference#CHILD_OF) of any newly-created Span at Tracer#start_active_span
31
+ # or Tracer#start_span time.
32
+ def active
33
+ Thread.current[object_id.to_s]
34
+ end
35
+
36
+ private
37
+
38
+ def set_scope(scope)
39
+ Thread.current[object_id.to_s] = scope
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,214 @@
1
+ # typed: false
2
+
3
+ require 'time'
4
+
5
+ require 'datadog/tracing/context'
6
+ require 'datadog/tracing/tracer'
7
+
8
+ module Datadog
9
+ module OpenTracer
10
+ # OpenTracing adapter for Datadog::Tracer
11
+ # @public_api
12
+ class Tracer < ::OpenTracing::Tracer
13
+ extend Forwardable
14
+
15
+ # (see Datadog::Tracer)
16
+ # @return [Datadog::Tracer]
17
+ attr_reader \
18
+ :datadog_tracer
19
+
20
+ # (see Datadog::Tracer#initialize)
21
+ def initialize(**options)
22
+ super()
23
+ @datadog_tracer = Datadog::Tracing::Tracer.new(**options)
24
+ end
25
+
26
+ # @return [ScopeManager] the current ScopeManager.
27
+ def scope_manager
28
+ @scope_manager ||= ThreadLocalScopeManager.new
29
+ end
30
+
31
+ # Returns a newly started and activated {Scope}.
32
+ #
33
+ # If `scope_manager.active` is not nil, no explicit references
34
+ # are provided, and `ignore_active_scope` is false, then an inferred
35
+ # {https://www.rubydoc.info/gems/opentracing/0.5.0/OpenTracing/Reference OpenTracing::Reference#CHILD_OF}
36
+ # reference is created to the `scope_manager.active`'s
37
+ # {SpanContext} when {#start_active_span} is invoked.
38
+ #
39
+ # @param operation_name [String] The operation name for the Span
40
+ # @param child_of [SpanContext, Span] SpanContext that acts as a parent to
41
+ # the newly-started Span. If a Span instance is provided, its
42
+ # context is automatically substituted. See [OpenTracing::Reference] for more
43
+ # information.
44
+ # If specified, the `references` parameter must be omitted.
45
+ # @param references [Array<OpenTracing::Reference>] An array of reference
46
+ # objects that identify one or more parent SpanContexts.
47
+ # @param start_time [Time] When the Span started, if not now
48
+ # @param tags [Hash] Tags to assign to the Span at start time
49
+ # @param ignore_active_scope [Boolean] whether to create an implicit
50
+ # OpenTracing::Reference#CHILD_OF reference to the ScopeManager#active.
51
+ # @param finish_on_close [Boolean] whether span should automatically be
52
+ # finished when Scope#close is called
53
+ # @yield [Scope] If an optional block is passed to start_active it will
54
+ # yield the newly-started Scope. If `finish_on_close` is true then the
55
+ # Span will be finished automatically after the block is executed.
56
+ # @return [Scope] The newly-started and activated Scope
57
+ def start_active_span(operation_name,
58
+ child_of: nil,
59
+ references: nil,
60
+ start_time: Time.now,
61
+ tags: nil,
62
+ ignore_active_scope: false,
63
+ finish_on_close: true)
64
+
65
+ # When meant to automatically determine the parent,
66
+ # Use the active scope first, otherwise fall back to any
67
+ # context generated by Datadog, so as to append to it and gain
68
+ # the benefit of any out-of-the-box tracing from Datadog preceding
69
+ # the OpenTracer::Tracer.
70
+ #
71
+ # We do this here instead of in #start_span because #start_span generates
72
+ # spans that are not assigned to a scope, a.k.a not supposed to be used by
73
+ # subsequent spans implicitly. By using the existing Datadog context, the span
74
+ # effectively ends up "assigned to a scope", by virtue of being added to the
75
+ # Context. Hence, it would behave more like an active span, which is why it
76
+ # should only be here.
77
+ unless child_of || ignore_active_scope
78
+ child_of = if scope_manager.active
79
+ scope_manager.active.span.context
80
+ else
81
+ SpanContextFactory.build(datadog_context: datadog_tracer.send(:call_context))
82
+ end
83
+ end
84
+
85
+ # Create the span, and auto-add it to the Datadog context.
86
+ span = start_span(
87
+ operation_name,
88
+ child_of: child_of,
89
+ references: references,
90
+ start_time: start_time,
91
+ tags: tags,
92
+ ignore_active_scope: ignore_active_scope
93
+ )
94
+
95
+ # Overwrite the tracer context with the OpenTracing managed context.
96
+ # This is mostly for the benefit of any out-of-the-box tracing from Datadog,
97
+ # such that spans generated by that tracing will be attached to the OpenTracer
98
+ # parent span.
99
+ datadog_tracer.provider.context = span.context.datadog_context
100
+
101
+ scope_manager.activate(span, finish_on_close: finish_on_close).tap do |scope|
102
+ if block_given?
103
+ begin
104
+ yield(scope)
105
+ ensure
106
+ scope.close
107
+ end
108
+ end
109
+ end
110
+ end
111
+
112
+ # Like {#start_active_span}, but the returned {Span} has not been registered via the
113
+ # {ScopeManager}.
114
+ #
115
+ # @param operation_name [String] The operation name for the Span
116
+ # @param child_of [SpanContext, Span] SpanContext that acts as a parent to
117
+ # the newly-started Span. If a Span instance is provided, its
118
+ # context is automatically substituted. See [Reference] for more
119
+ # information.
120
+ # If specified, the `references` parameter must be omitted.
121
+ # @param references [Array<Reference>] An array of reference
122
+ # objects that identify one or more parent SpanContexts.
123
+ # @param start_time [Time] When the Span started, if not now
124
+ # @param tags [Hash] Tags to assign to the Span at start time
125
+ # @param ignore_active_scope [Boolean] whether to create an implicit
126
+ # References#CHILD_OF reference to the ScopeManager#active.
127
+ # @return [Span] the newly-started Span instance, which has not been
128
+ # automatically registered via the ScopeManager
129
+ def start_span(operation_name,
130
+ child_of: nil,
131
+ references: nil,
132
+ start_time: Time.now,
133
+ tags: nil,
134
+ ignore_active_scope: false)
135
+
136
+ # Derive the OpenTracer::SpanContext to inherit from.
137
+ parent_span_context = inherited_span_context(child_of, ignore_active_scope: ignore_active_scope)
138
+
139
+ # Retrieve Datadog::Context from parent SpanContext.
140
+ datadog_context = parent_span_context.nil? ? Datadog::Tracing::Context.new : parent_span_context.datadog_context
141
+ datadog_trace_digest = parent_span_context && parent_span_context.datadog_trace_digest
142
+
143
+ # Build the new Datadog span
144
+ datadog_span = datadog_tracer.trace(
145
+ operation_name,
146
+ continue_from: datadog_trace_digest,
147
+ _context: datadog_context,
148
+ start_time: start_time,
149
+ tags: tags || {}
150
+ )
151
+
152
+ # Build or extend the OpenTracer::SpanContext
153
+ span_context = if parent_span_context
154
+ SpanContextFactory.clone(span_context: parent_span_context)
155
+ else
156
+ SpanContextFactory.build(datadog_context: datadog_context)
157
+ end
158
+
159
+ # Wrap the Datadog span and OpenTracer::Span context in a OpenTracer::Span
160
+ Span.new(datadog_span: datadog_span, span_context: span_context)
161
+ end
162
+
163
+ # Inject a {SpanContext} into the given carrier.
164
+ #
165
+ # @param span_context [SpanContext]
166
+ # @param format [OpenTracing::FORMAT_TEXT_MAP, OpenTracing::FORMAT_BINARY, OpenTracing::FORMAT_RACK]
167
+ # @param carrier [Carrier] A carrier object of the type dictated by the specified `format`
168
+ def inject(span_context, format, carrier)
169
+ case format
170
+ when OpenTracing::FORMAT_TEXT_MAP
171
+ TextMapPropagator.inject(span_context, carrier)
172
+ when OpenTracing::FORMAT_BINARY
173
+ BinaryPropagator.inject(span_context, carrier)
174
+ when OpenTracing::FORMAT_RACK
175
+ RackPropagator.inject(span_context, carrier)
176
+ else
177
+ warn 'Unknown inject format'
178
+ end
179
+ end
180
+
181
+ # Extract a {SpanContext} in the given format from the given carrier.
182
+ #
183
+ # @param format [OpenTracing::FORMAT_TEXT_MAP, OpenTracing::FORMAT_BINARY, OpenTracing::FORMAT_RACK]
184
+ # @param carrier [Carrier] A carrier object of the type dictated by the specified `format`
185
+ # @return [SpanContext, nil] the extracted SpanContext or nil if none could be found
186
+ def extract(format, carrier)
187
+ case format
188
+ when OpenTracing::FORMAT_TEXT_MAP
189
+ TextMapPropagator.extract(carrier)
190
+ when OpenTracing::FORMAT_BINARY
191
+ BinaryPropagator.extract(carrier)
192
+ when OpenTracing::FORMAT_RACK
193
+ RackPropagator.extract(carrier)
194
+ else
195
+ warn 'Unknown extract format'
196
+ nil
197
+ end
198
+ end
199
+
200
+ private
201
+
202
+ def inherited_span_context(parent, ignore_active_scope: false)
203
+ case parent
204
+ when Span
205
+ parent.context
206
+ when SpanContext
207
+ parent
208
+ else
209
+ ignore_active_scope ? nil : scope_manager.active && scope_manager.active.span.context
210
+ end
211
+ end
212
+ end
213
+ end
214
+ end
@@ -0,0 +1,24 @@
1
+ # typed: strict
2
+
3
+ require 'opentracing'
4
+ require 'opentracing/carrier'
5
+ require 'datadog/tracing'
6
+
7
+ require 'datadog/opentracer/carrier'
8
+ require 'datadog/opentracer/tracer'
9
+ require 'datadog/opentracer/span'
10
+ require 'datadog/opentracer/span_context'
11
+ require 'datadog/opentracer/span_context_factory'
12
+ require 'datadog/opentracer/scope'
13
+ require 'datadog/opentracer/scope_manager'
14
+ require 'datadog/opentracer/thread_local_scope'
15
+ require 'datadog/opentracer/thread_local_scope_manager'
16
+ require 'datadog/opentracer/distributed_headers'
17
+ require 'datadog/opentracer/propagator'
18
+ require 'datadog/opentracer/text_map_propagator'
19
+ require 'datadog/opentracer/binary_propagator'
20
+ require 'datadog/opentracer/rack_propagator'
21
+ require 'datadog/opentracer/global_tracer'
22
+
23
+ # Modify the OpenTracing module functions
24
+ ::OpenTracing.singleton_class.prepend(Datadog::OpenTracer::GlobalTracer)
@@ -0,0 +1,34 @@
1
+ # typed: true
2
+
3
+ module Datadog
4
+ module Profiling
5
+ # Entity class used to represent an entry in a stack trace.
6
+ # Its fields are a simplified struct version of `Thread::Backtrace::Location`.
7
+ class BacktraceLocation
8
+ attr_reader \
9
+ :base_label,
10
+ :lineno,
11
+ :path,
12
+ :hash
13
+
14
+ def initialize(
15
+ base_label,
16
+ lineno,
17
+ path
18
+ )
19
+ @base_label = base_label
20
+ @lineno = lineno
21
+ @path = path
22
+ @hash = [base_label, lineno, path].hash
23
+ end
24
+
25
+ def ==(other)
26
+ hash == other.hash
27
+ end
28
+
29
+ def eql?(other)
30
+ hash == other.hash
31
+ end
32
+ end
33
+ end
34
+ end