ddtrace 0.54.2 → 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 +126 -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 +551 -506
  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 +9 -0
  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/{ddtrace → datadog/core}/vendor/multipart-post/LICENSE +0 -0
  137. data/lib/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rb +120 -0
  138. data/lib/datadog/core/vendor/multipart-post/multipart/post/multipartable.rb +61 -0
  139. data/lib/datadog/core/vendor/multipart-post/multipart/post/parts.rb +139 -0
  140. data/lib/datadog/core/vendor/multipart-post/multipart/post/version.rb +13 -0
  141. data/lib/datadog/core/vendor/multipart-post/multipart/post.rb +12 -0
  142. data/lib/datadog/core/vendor/multipart-post/multipart.rb +16 -0
  143. data/lib/datadog/core/vendor/multipart-post/net/http/post/multipart.rb +36 -0
  144. data/lib/datadog/core/worker.rb +24 -0
  145. data/lib/datadog/core/workers/async.rb +180 -0
  146. data/lib/datadog/core/workers/interval_loop.rb +119 -0
  147. data/lib/datadog/core/workers/polling.rb +59 -0
  148. data/lib/datadog/core/workers/queue.rb +44 -0
  149. data/lib/datadog/core/workers/runtime_metrics.rb +65 -0
  150. data/lib/datadog/core.rb +74 -0
  151. data/lib/datadog/opentracer/binary_propagator.rb +26 -0
  152. data/lib/datadog/opentracer/carrier.rb +9 -0
  153. data/lib/datadog/opentracer/distributed_headers.rb +58 -0
  154. data/lib/datadog/opentracer/global_tracer.rb +17 -0
  155. data/lib/datadog/opentracer/propagator.rb +26 -0
  156. data/lib/datadog/opentracer/rack_propagator.rb +72 -0
  157. data/lib/datadog/opentracer/scope.rb +18 -0
  158. data/lib/datadog/opentracer/scope_manager.rb +9 -0
  159. data/lib/datadog/opentracer/span.rb +101 -0
  160. data/lib/datadog/opentracer/span_context.rb +19 -0
  161. data/lib/datadog/opentracer/span_context_factory.rb +27 -0
  162. data/lib/datadog/opentracer/text_map_propagator.rb +87 -0
  163. data/lib/datadog/opentracer/thread_local_scope.rb +34 -0
  164. data/lib/datadog/opentracer/thread_local_scope_manager.rb +43 -0
  165. data/lib/datadog/opentracer/tracer.rb +214 -0
  166. data/lib/datadog/opentracer.rb +24 -0
  167. data/lib/datadog/profiling/backtrace_location.rb +34 -0
  168. data/lib/datadog/profiling/buffer.rb +43 -0
  169. data/lib/datadog/profiling/collectors/code_provenance.rb +114 -0
  170. data/lib/datadog/profiling/collectors/stack.rb +297 -0
  171. data/lib/datadog/profiling/encoding/profile.rb +48 -0
  172. data/lib/datadog/profiling/event.rb +15 -0
  173. data/lib/datadog/profiling/events/stack.rb +82 -0
  174. data/lib/datadog/profiling/exporter.rb +25 -0
  175. data/lib/datadog/profiling/ext/forking.rb +99 -0
  176. data/lib/datadog/profiling/ext.rb +57 -0
  177. data/lib/datadog/profiling/flush.rb +69 -0
  178. data/lib/datadog/profiling/native_extension.rb +41 -0
  179. data/lib/datadog/profiling/pprof/builder.rb +127 -0
  180. data/lib/datadog/profiling/pprof/converter.rb +104 -0
  181. data/lib/datadog/profiling/pprof/message_set.rb +16 -0
  182. data/lib/datadog/profiling/pprof/payload.rb +20 -0
  183. data/lib/{ddtrace → datadog}/profiling/pprof/pprof.proto +0 -0
  184. data/lib/datadog/profiling/pprof/pprof_pb.rb +83 -0
  185. data/lib/datadog/profiling/pprof/stack_sample.rb +141 -0
  186. data/lib/datadog/profiling/pprof/string_table.rb +12 -0
  187. data/lib/datadog/profiling/pprof/template.rb +120 -0
  188. data/lib/datadog/profiling/preload.rb +5 -0
  189. data/lib/datadog/profiling/profiler.rb +34 -0
  190. data/lib/datadog/profiling/recorder.rb +117 -0
  191. data/lib/datadog/profiling/scheduler.rb +151 -0
  192. data/lib/datadog/profiling/tasks/exec.rb +50 -0
  193. data/lib/datadog/profiling/tasks/help.rb +18 -0
  194. data/lib/datadog/profiling/tasks/setup.rb +91 -0
  195. data/lib/datadog/profiling/trace_identifiers/ddtrace.rb +45 -0
  196. data/lib/datadog/profiling/trace_identifiers/helper.rb +47 -0
  197. data/lib/datadog/profiling/transport/client.rb +16 -0
  198. data/lib/datadog/profiling/transport/http/api/endpoint.rb +107 -0
  199. data/lib/datadog/profiling/transport/http/api/instance.rb +38 -0
  200. data/lib/datadog/profiling/transport/http/api/spec.rb +42 -0
  201. data/lib/datadog/profiling/transport/http/api.rb +45 -0
  202. data/lib/datadog/profiling/transport/http/builder.rb +30 -0
  203. data/lib/datadog/profiling/transport/http/client.rb +35 -0
  204. data/lib/datadog/profiling/transport/http/response.rb +23 -0
  205. data/lib/datadog/profiling/transport/http.rb +112 -0
  206. data/lib/datadog/profiling/transport/io/client.rb +29 -0
  207. data/lib/datadog/profiling/transport/io/response.rb +18 -0
  208. data/lib/datadog/profiling/transport/io.rb +32 -0
  209. data/lib/datadog/profiling/transport/parcel.rb +19 -0
  210. data/lib/datadog/profiling/transport/request.rb +17 -0
  211. data/lib/datadog/profiling/transport/response.rb +10 -0
  212. data/lib/datadog/profiling.rb +168 -0
  213. data/lib/datadog/tracing/analytics.rb +25 -0
  214. data/lib/datadog/tracing/buffer.rb +126 -0
  215. data/lib/datadog/tracing/configuration/ext.rb +51 -0
  216. data/lib/datadog/tracing/context.rb +68 -0
  217. data/lib/datadog/tracing/context_provider.rb +66 -0
  218. data/lib/datadog/tracing/contrib/action_cable/configuration/settings.rb +35 -0
  219. data/lib/datadog/tracing/contrib/action_cable/event.rb +72 -0
  220. data/lib/datadog/tracing/contrib/action_cable/events/broadcast.rb +58 -0
  221. data/lib/datadog/tracing/contrib/action_cable/events/perform_action.rb +63 -0
  222. data/lib/datadog/tracing/contrib/action_cable/events/transmit.rb +59 -0
  223. data/lib/datadog/tracing/contrib/action_cable/events.rb +37 -0
  224. data/lib/datadog/tracing/contrib/action_cable/ext.rb +32 -0
  225. data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +91 -0
  226. data/lib/datadog/tracing/contrib/action_cable/integration.rb +50 -0
  227. data/lib/datadog/tracing/contrib/action_cable/patcher.rb +31 -0
  228. data/lib/datadog/tracing/contrib/action_mailer/configuration/settings.rb +36 -0
  229. data/lib/datadog/tracing/contrib/action_mailer/event.rb +52 -0
  230. data/lib/datadog/tracing/contrib/action_mailer/events/deliver.rb +60 -0
  231. data/lib/datadog/tracing/contrib/action_mailer/events/process.rb +47 -0
  232. data/lib/datadog/tracing/contrib/action_mailer/events.rb +34 -0
  233. data/lib/datadog/tracing/contrib/action_mailer/ext.rb +33 -0
  234. data/lib/datadog/tracing/contrib/action_mailer/integration.rb +50 -0
  235. data/lib/datadog/tracing/contrib/action_mailer/patcher.rb +29 -0
  236. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +156 -0
  237. data/lib/datadog/tracing/contrib/action_pack/action_controller/patcher.rb +29 -0
  238. data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +36 -0
  239. data/lib/datadog/tracing/contrib/action_pack/ext.rb +22 -0
  240. data/lib/datadog/tracing/contrib/action_pack/integration.rb +50 -0
  241. data/lib/datadog/tracing/contrib/action_pack/patcher.rb +27 -0
  242. data/lib/datadog/tracing/contrib/action_pack/utils.rb +40 -0
  243. data/lib/datadog/tracing/contrib/action_view/configuration/settings.rb +36 -0
  244. data/lib/datadog/tracing/contrib/action_view/event.rb +35 -0
  245. data/lib/datadog/tracing/contrib/action_view/events/render_partial.rb +54 -0
  246. data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +57 -0
  247. data/lib/datadog/tracing/contrib/action_view/events.rb +34 -0
  248. data/lib/datadog/tracing/contrib/action_view/ext.rb +24 -0
  249. data/lib/datadog/tracing/contrib/action_view/instrumentation/partial_renderer.rb +78 -0
  250. data/lib/datadog/tracing/contrib/action_view/instrumentation/template_renderer.rb +91 -0
  251. data/lib/datadog/tracing/contrib/action_view/integration.rb +57 -0
  252. data/lib/datadog/tracing/contrib/action_view/patcher.rb +48 -0
  253. data/lib/datadog/tracing/contrib/action_view/utils.rb +36 -0
  254. data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +37 -0
  255. data/lib/datadog/tracing/contrib/active_job/event.rb +58 -0
  256. data/lib/datadog/tracing/contrib/active_job/events/discard.rb +50 -0
  257. data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +49 -0
  258. data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +49 -0
  259. data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +51 -0
  260. data/lib/datadog/tracing/contrib/active_job/events/perform.rb +49 -0
  261. data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +50 -0
  262. data/lib/datadog/tracing/contrib/active_job/events.rb +42 -0
  263. data/lib/datadog/tracing/contrib/active_job/ext.rb +39 -0
  264. data/lib/datadog/tracing/contrib/active_job/integration.rb +50 -0
  265. data/lib/datadog/tracing/contrib/active_job/log_injection.rb +26 -0
  266. data/lib/datadog/tracing/contrib/active_job/patcher.rb +36 -0
  267. data/lib/datadog/tracing/contrib/active_model_serializers/configuration/settings.rb +33 -0
  268. data/lib/datadog/tracing/contrib/active_model_serializers/event.rb +69 -0
  269. data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +45 -0
  270. data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +47 -0
  271. data/lib/datadog/tracing/contrib/active_model_serializers/events.rb +34 -0
  272. data/lib/datadog/tracing/contrib/active_model_serializers/ext.rb +24 -0
  273. data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +45 -0
  274. data/lib/datadog/tracing/contrib/active_model_serializers/patcher.rb +33 -0
  275. data/lib/datadog/tracing/contrib/active_record/configuration/makara_resolver.rb +36 -0
  276. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +138 -0
  277. data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +39 -0
  278. data/lib/datadog/tracing/contrib/active_record/event.rb +30 -0
  279. data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +58 -0
  280. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +78 -0
  281. data/lib/datadog/tracing/contrib/active_record/events.rb +34 -0
  282. data/lib/datadog/tracing/contrib/active_record/ext.rb +29 -0
  283. data/lib/datadog/tracing/contrib/active_record/integration.rb +56 -0
  284. data/lib/datadog/tracing/contrib/active_record/patcher.rb +27 -0
  285. data/lib/datadog/tracing/contrib/active_record/utils.rb +128 -0
  286. data/lib/{ddtrace/vendor/active_record → datadog/tracing/contrib/active_record/vendor}/MIT-LICENSE +0 -0
  287. data/lib/datadog/tracing/contrib/active_record/vendor/connection_specification.rb +307 -0
  288. data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +270 -0
  289. data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +73 -0
  290. data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +47 -0
  291. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +35 -0
  292. data/lib/datadog/tracing/contrib/active_support/ext.rb +31 -0
  293. data/lib/datadog/tracing/contrib/active_support/integration.rb +51 -0
  294. data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +71 -0
  295. data/lib/datadog/tracing/contrib/active_support/notifications/subscriber.rb +71 -0
  296. data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +162 -0
  297. data/lib/datadog/tracing/contrib/active_support/patcher.rb +27 -0
  298. data/lib/datadog/tracing/contrib/analytics.rb +29 -0
  299. data/lib/datadog/tracing/contrib/auto_instrument.rb +53 -0
  300. data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +35 -0
  301. data/lib/datadog/tracing/contrib/aws/ext.rb +27 -0
  302. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +95 -0
  303. data/lib/datadog/tracing/contrib/aws/integration.rb +47 -0
  304. data/lib/datadog/tracing/contrib/aws/parsed_context.rb +60 -0
  305. data/lib/datadog/tracing/contrib/aws/patcher.rb +57 -0
  306. data/lib/datadog/tracing/contrib/aws/services.rb +123 -0
  307. data/lib/datadog/tracing/contrib/concurrent_ruby/configuration/settings.rb +23 -0
  308. data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +46 -0
  309. data/lib/datadog/tracing/contrib/concurrent_ruby/ext.rb +16 -0
  310. data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +27 -0
  311. data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +43 -0
  312. data/lib/datadog/tracing/contrib/concurrent_ruby/patcher.rb +33 -0
  313. data/lib/datadog/tracing/contrib/configurable.rb +102 -0
  314. data/lib/datadog/tracing/contrib/configuration/resolver.rb +85 -0
  315. data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +43 -0
  316. data/lib/datadog/tracing/contrib/configuration/settings.rb +43 -0
  317. data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +35 -0
  318. data/lib/datadog/tracing/contrib/dalli/ext.rb +24 -0
  319. data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +58 -0
  320. data/lib/datadog/tracing/contrib/dalli/integration.rb +52 -0
  321. data/lib/datadog/tracing/contrib/dalli/patcher.rb +29 -0
  322. data/lib/datadog/tracing/contrib/dalli/quantize.rb +26 -0
  323. data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +38 -0
  324. data/lib/datadog/tracing/contrib/delayed_job/ext.rb +26 -0
  325. data/lib/datadog/tracing/contrib/delayed_job/integration.rb +43 -0
  326. data/lib/datadog/tracing/contrib/delayed_job/patcher.rb +32 -0
  327. data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +101 -0
  328. data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +36 -0
  329. data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +26 -0
  330. data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +44 -0
  331. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +115 -0
  332. data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +89 -0
  333. data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +37 -0
  334. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +177 -0
  335. data/lib/datadog/tracing/contrib/ethon/ext.rb +24 -0
  336. data/lib/datadog/tracing/contrib/ethon/integration.rb +48 -0
  337. data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +96 -0
  338. data/lib/datadog/tracing/contrib/ethon/patcher.rb +32 -0
  339. data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +38 -0
  340. data/lib/datadog/tracing/contrib/excon/ext.rb +21 -0
  341. data/lib/datadog/tracing/contrib/excon/integration.rb +48 -0
  342. data/lib/datadog/tracing/contrib/excon/middleware.rb +170 -0
  343. data/lib/datadog/tracing/contrib/excon/patcher.rb +31 -0
  344. data/lib/datadog/tracing/contrib/extensions.rb +199 -0
  345. data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +42 -0
  346. data/lib/datadog/tracing/contrib/faraday/connection.rb +22 -0
  347. data/lib/datadog/tracing/contrib/faraday/ext.rb +21 -0
  348. data/lib/datadog/tracing/contrib/faraday/integration.rb +48 -0
  349. data/lib/datadog/tracing/contrib/faraday/middleware.rb +93 -0
  350. data/lib/datadog/tracing/contrib/faraday/patcher.rb +57 -0
  351. data/lib/datadog/tracing/contrib/faraday/rack_builder.rb +22 -0
  352. data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +42 -0
  353. data/lib/datadog/tracing/contrib/grape/endpoint.rb +253 -0
  354. data/lib/datadog/tracing/contrib/grape/ext.rb +28 -0
  355. data/lib/datadog/tracing/contrib/grape/instrumentation.rb +37 -0
  356. data/lib/datadog/tracing/contrib/grape/integration.rb +44 -0
  357. data/lib/datadog/tracing/contrib/grape/patcher.rb +34 -0
  358. data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +36 -0
  359. data/lib/datadog/tracing/contrib/graphql/ext.rb +19 -0
  360. data/lib/datadog/tracing/contrib/graphql/integration.rb +44 -0
  361. data/lib/datadog/tracing/contrib/graphql/patcher.rb +92 -0
  362. data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +37 -0
  363. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +84 -0
  364. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +90 -0
  365. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb +104 -0
  366. data/lib/datadog/tracing/contrib/grpc/ext.rb +23 -0
  367. data/lib/datadog/tracing/contrib/grpc/integration.rb +43 -0
  368. data/lib/datadog/tracing/contrib/grpc/intercept_with_datadog.rb +53 -0
  369. data/lib/datadog/tracing/contrib/grpc/patcher.rb +38 -0
  370. data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +44 -0
  371. data/lib/datadog/tracing/contrib/http/configuration/settings.rb +37 -0
  372. data/lib/datadog/tracing/contrib/http/ext.rb +21 -0
  373. data/lib/datadog/tracing/contrib/http/instrumentation.rb +139 -0
  374. data/lib/datadog/tracing/contrib/http/integration.rb +49 -0
  375. data/lib/datadog/tracing/contrib/http/patcher.rb +30 -0
  376. data/lib/datadog/tracing/contrib/http_annotation_helper.rb +17 -0
  377. data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +37 -0
  378. data/lib/datadog/tracing/contrib/httpclient/ext.rb +21 -0
  379. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +117 -0
  380. data/lib/datadog/tracing/contrib/httpclient/integration.rb +48 -0
  381. data/lib/datadog/tracing/contrib/httpclient/patcher.rb +42 -0
  382. data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +37 -0
  383. data/lib/datadog/tracing/contrib/httprb/ext.rb +21 -0
  384. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +128 -0
  385. data/lib/datadog/tracing/contrib/httprb/integration.rb +48 -0
  386. data/lib/datadog/tracing/contrib/httprb/patcher.rb +42 -0
  387. data/lib/datadog/tracing/contrib/integration.rb +78 -0
  388. data/lib/datadog/tracing/contrib/kafka/configuration/settings.rb +35 -0
  389. data/lib/datadog/tracing/contrib/kafka/consumer_event.rb +18 -0
  390. data/lib/datadog/tracing/contrib/kafka/consumer_group_event.rb +18 -0
  391. data/lib/datadog/tracing/contrib/kafka/event.rb +52 -0
  392. data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +42 -0
  393. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +49 -0
  394. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +47 -0
  395. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +47 -0
  396. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +37 -0
  397. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +37 -0
  398. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +37 -0
  399. data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +40 -0
  400. data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +43 -0
  401. data/lib/datadog/tracing/contrib/kafka/events.rb +48 -0
  402. data/lib/datadog/tracing/contrib/kafka/ext.rb +52 -0
  403. data/lib/datadog/tracing/contrib/kafka/integration.rb +44 -0
  404. data/lib/datadog/tracing/contrib/kafka/patcher.rb +30 -0
  405. data/lib/datadog/tracing/contrib/lograge/configuration/settings.rb +23 -0
  406. data/lib/datadog/tracing/contrib/lograge/ext.rb +15 -0
  407. data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +46 -0
  408. data/lib/datadog/tracing/contrib/lograge/integration.rb +50 -0
  409. data/lib/datadog/tracing/contrib/lograge/patcher.rb +29 -0
  410. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +38 -0
  411. data/lib/datadog/tracing/contrib/mongodb/ext.rb +27 -0
  412. data/lib/datadog/tracing/contrib/mongodb/instrumentation.rb +47 -0
  413. data/lib/datadog/tracing/contrib/mongodb/integration.rb +48 -0
  414. data/lib/datadog/tracing/contrib/mongodb/parsers.rb +49 -0
  415. data/lib/datadog/tracing/contrib/mongodb/patcher.rb +34 -0
  416. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +121 -0
  417. data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +35 -0
  418. data/lib/datadog/tracing/contrib/mysql2/ext.rb +22 -0
  419. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +62 -0
  420. data/lib/datadog/tracing/contrib/mysql2/integration.rb +43 -0
  421. data/lib/datadog/tracing/contrib/mysql2/patcher.rb +31 -0
  422. data/lib/datadog/tracing/contrib/patchable.rb +109 -0
  423. data/lib/datadog/tracing/contrib/patcher.rb +74 -0
  424. data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +35 -0
  425. data/lib/datadog/tracing/contrib/presto/ext.rb +32 -0
  426. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +125 -0
  427. data/lib/datadog/tracing/contrib/presto/integration.rb +43 -0
  428. data/lib/datadog/tracing/contrib/presto/patcher.rb +37 -0
  429. data/lib/datadog/tracing/contrib/qless/configuration/settings.rb +40 -0
  430. data/lib/datadog/tracing/contrib/qless/ext.rb +26 -0
  431. data/lib/datadog/tracing/contrib/qless/integration.rb +43 -0
  432. data/lib/datadog/tracing/contrib/qless/patcher.rb +39 -0
  433. data/lib/datadog/tracing/contrib/qless/qless_job.rb +75 -0
  434. data/lib/datadog/tracing/contrib/qless/tracer_cleaner.rb +32 -0
  435. data/lib/datadog/tracing/contrib/que/configuration/settings.rb +49 -0
  436. data/lib/datadog/tracing/contrib/que/ext.rb +34 -0
  437. data/lib/datadog/tracing/contrib/que/integration.rb +46 -0
  438. data/lib/datadog/tracing/contrib/que/patcher.rb +29 -0
  439. data/lib/datadog/tracing/contrib/que/tracer.rb +61 -0
  440. data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +35 -0
  441. data/lib/datadog/tracing/contrib/racecar/event.rb +79 -0
  442. data/lib/datadog/tracing/contrib/racecar/events/batch.rb +35 -0
  443. data/lib/datadog/tracing/contrib/racecar/events/consume.rb +35 -0
  444. data/lib/datadog/tracing/contrib/racecar/events/message.rb +35 -0
  445. data/lib/datadog/tracing/contrib/racecar/events.rb +36 -0
  446. data/lib/datadog/tracing/contrib/racecar/ext.rb +31 -0
  447. data/lib/datadog/tracing/contrib/racecar/integration.rb +44 -0
  448. data/lib/datadog/tracing/contrib/racecar/patcher.rb +30 -0
  449. data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +51 -0
  450. data/lib/datadog/tracing/contrib/rack/ext.rb +25 -0
  451. data/lib/datadog/tracing/contrib/rack/integration.rb +50 -0
  452. data/lib/datadog/tracing/contrib/rack/middlewares.rb +255 -0
  453. data/lib/datadog/tracing/contrib/rack/patcher.rb +109 -0
  454. data/lib/datadog/tracing/contrib/rack/request_queue.rb +48 -0
  455. data/lib/datadog/tracing/contrib/rails/auto_instrument_railtie.rb +12 -0
  456. data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +71 -0
  457. data/lib/datadog/tracing/contrib/rails/ext.rb +19 -0
  458. data/lib/datadog/tracing/contrib/rails/framework.rb +152 -0
  459. data/lib/datadog/tracing/contrib/rails/integration.rb +49 -0
  460. data/lib/datadog/tracing/contrib/rails/log_injection.rb +47 -0
  461. data/lib/datadog/tracing/contrib/rails/middlewares.rb +47 -0
  462. data/lib/datadog/tracing/contrib/rails/patcher.rb +121 -0
  463. data/lib/datadog/tracing/contrib/rails/railtie.rb +19 -0
  464. data/lib/datadog/tracing/contrib/rails/utils.rb +28 -0
  465. data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +36 -0
  466. data/lib/datadog/tracing/contrib/rake/ext.rb +26 -0
  467. data/lib/datadog/tracing/contrib/rake/instrumentation.rb +98 -0
  468. data/lib/datadog/tracing/contrib/rake/integration.rb +43 -0
  469. data/lib/datadog/tracing/contrib/rake/patcher.rb +35 -0
  470. data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +49 -0
  471. data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +40 -0
  472. data/lib/datadog/tracing/contrib/redis/ext.rb +26 -0
  473. data/lib/datadog/tracing/contrib/redis/instrumentation.rb +78 -0
  474. data/lib/datadog/tracing/contrib/redis/integration.rb +47 -0
  475. data/lib/datadog/tracing/contrib/redis/patcher.rb +36 -0
  476. data/lib/datadog/tracing/contrib/redis/quantize.rb +79 -0
  477. data/lib/datadog/tracing/contrib/redis/tags.rb +54 -0
  478. data/lib/{ddtrace → datadog/tracing}/contrib/redis/vendor/LICENSE +0 -0
  479. data/lib/datadog/tracing/contrib/redis/vendor/resolver.rb +162 -0
  480. data/lib/datadog/tracing/contrib/registerable.rb +50 -0
  481. data/lib/datadog/tracing/contrib/registry.rb +52 -0
  482. data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +37 -0
  483. data/lib/datadog/tracing/contrib/resque/ext.rb +21 -0
  484. data/lib/datadog/tracing/contrib/resque/integration.rb +48 -0
  485. data/lib/datadog/tracing/contrib/resque/patcher.rb +30 -0
  486. data/lib/datadog/tracing/contrib/resque/resque_job.rb +103 -0
  487. data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +36 -0
  488. data/lib/datadog/tracing/contrib/rest_client/ext.rb +21 -0
  489. data/lib/datadog/tracing/contrib/rest_client/integration.rb +43 -0
  490. data/lib/datadog/tracing/contrib/rest_client/patcher.rb +30 -0
  491. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +105 -0
  492. data/lib/datadog/tracing/contrib/semantic_logger/configuration/settings.rb +23 -0
  493. data/lib/datadog/tracing/contrib/semantic_logger/ext.rb +15 -0
  494. data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +50 -0
  495. data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +52 -0
  496. data/lib/datadog/tracing/contrib/semantic_logger/patcher.rb +29 -0
  497. data/lib/datadog/tracing/contrib/sequel/configuration/settings.rb +33 -0
  498. data/lib/datadog/tracing/contrib/sequel/database.rb +60 -0
  499. data/lib/datadog/tracing/contrib/sequel/dataset.rb +65 -0
  500. data/lib/datadog/tracing/contrib/sequel/ext.rb +22 -0
  501. data/lib/datadog/tracing/contrib/sequel/integration.rb +43 -0
  502. data/lib/datadog/tracing/contrib/sequel/patcher.rb +37 -0
  503. data/lib/datadog/tracing/contrib/sequel/utils.rb +87 -0
  504. data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +38 -0
  505. data/lib/datadog/tracing/contrib/shoryuken/ext.rb +25 -0
  506. data/lib/datadog/tracing/contrib/shoryuken/integration.rb +44 -0
  507. data/lib/datadog/tracing/contrib/shoryuken/patcher.rb +28 -0
  508. data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +61 -0
  509. data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +53 -0
  510. data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +43 -0
  511. data/lib/datadog/tracing/contrib/sidekiq/ext.rb +38 -0
  512. data/lib/datadog/tracing/contrib/sidekiq/integration.rb +53 -0
  513. data/lib/datadog/tracing/contrib/sidekiq/patcher.rb +71 -0
  514. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/heartbeat.rb +34 -0
  515. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/job_fetch.rb +34 -0
  516. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/scheduled_push.rb +33 -0
  517. data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +79 -0
  518. data/lib/datadog/tracing/contrib/sidekiq/tracing.rb +44 -0
  519. data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +43 -0
  520. data/lib/datadog/tracing/contrib/sinatra/env.rb +66 -0
  521. data/lib/datadog/tracing/contrib/sinatra/ext.rb +32 -0
  522. data/lib/datadog/tracing/contrib/sinatra/framework.rb +107 -0
  523. data/lib/datadog/tracing/contrib/sinatra/headers.rb +35 -0
  524. data/lib/datadog/tracing/contrib/sinatra/integration.rb +43 -0
  525. data/lib/datadog/tracing/contrib/sinatra/patcher.rb +77 -0
  526. data/lib/datadog/tracing/contrib/sinatra/tracer.rb +159 -0
  527. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +123 -0
  528. data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +38 -0
  529. data/lib/datadog/tracing/contrib/sneakers/ext.rb +26 -0
  530. data/lib/datadog/tracing/contrib/sneakers/integration.rb +46 -0
  531. data/lib/datadog/tracing/contrib/sneakers/patcher.rb +30 -0
  532. data/lib/datadog/tracing/contrib/sneakers/tracer.rb +58 -0
  533. data/lib/datadog/tracing/contrib/status_code_matcher.rb +75 -0
  534. data/lib/datadog/tracing/contrib/sucker_punch/configuration/settings.rb +35 -0
  535. data/lib/datadog/tracing/contrib/sucker_punch/exception_handler.rb +28 -0
  536. data/lib/datadog/tracing/contrib/sucker_punch/ext.rb +27 -0
  537. data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +105 -0
  538. data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +43 -0
  539. data/lib/datadog/tracing/contrib/sucker_punch/patcher.rb +38 -0
  540. data/lib/datadog/tracing/contrib/utils/database.rb +31 -0
  541. data/lib/datadog/tracing/contrib/utils/quantization/hash.rb +111 -0
  542. data/lib/datadog/tracing/contrib/utils/quantization/http.rb +99 -0
  543. data/lib/datadog/tracing/contrib.rb +76 -0
  544. data/lib/datadog/tracing/correlation.rb +100 -0
  545. data/lib/datadog/tracing/distributed/headers/b3.rb +55 -0
  546. data/lib/datadog/tracing/distributed/headers/b3_single.rb +67 -0
  547. data/lib/datadog/tracing/distributed/headers/datadog.rb +52 -0
  548. data/lib/datadog/tracing/distributed/headers/ext.rb +31 -0
  549. data/lib/datadog/tracing/distributed/helpers.rb +44 -0
  550. data/lib/datadog/tracing/distributed/parser.rb +70 -0
  551. data/lib/datadog/tracing/event.rb +77 -0
  552. data/lib/datadog/tracing/flush.rb +74 -0
  553. data/lib/datadog/tracing/metadata/analytics.rb +26 -0
  554. data/lib/datadog/tracing/metadata/errors.rb +24 -0
  555. data/lib/datadog/tracing/metadata/ext.rb +151 -0
  556. data/lib/datadog/tracing/metadata/tagging.rb +110 -0
  557. data/lib/datadog/tracing/metadata.rb +20 -0
  558. data/lib/datadog/tracing/pipeline/span_filter.rb +42 -0
  559. data/lib/datadog/tracing/pipeline/span_processor.rb +39 -0
  560. data/lib/datadog/tracing/pipeline.rb +65 -0
  561. data/lib/datadog/tracing/propagation/grpc.rb +88 -0
  562. data/lib/datadog/tracing/propagation/http.rb +109 -0
  563. data/lib/datadog/tracing/runtime/metrics.rb +19 -0
  564. data/lib/datadog/tracing/sampling/all_sampler.rb +25 -0
  565. data/lib/datadog/tracing/sampling/ext.rb +27 -0
  566. data/lib/datadog/tracing/sampling/matcher.rb +68 -0
  567. data/lib/datadog/tracing/sampling/priority_sampler.rb +113 -0
  568. data/lib/datadog/tracing/sampling/rate_by_key_sampler.rb +97 -0
  569. data/lib/datadog/tracing/sampling/rate_by_service_sampler.rb +41 -0
  570. data/lib/datadog/tracing/sampling/rate_limiter.rb +185 -0
  571. data/lib/datadog/tracing/sampling/rate_sampler.rb +55 -0
  572. data/lib/datadog/tracing/sampling/rule.rb +70 -0
  573. data/lib/datadog/tracing/sampling/rule_sampler.rb +133 -0
  574. data/lib/datadog/tracing/sampling/sampler.rb +44 -0
  575. data/lib/datadog/tracing/span.rb +212 -0
  576. data/lib/datadog/tracing/span_operation.rb +521 -0
  577. data/lib/datadog/tracing/sync_writer.rb +69 -0
  578. data/lib/datadog/tracing/trace_digest.rb +60 -0
  579. data/lib/datadog/tracing/trace_operation.rb +432 -0
  580. data/lib/datadog/tracing/trace_segment.rb +207 -0
  581. data/lib/datadog/tracing/tracer.rb +505 -0
  582. data/lib/datadog/tracing/workers/trace_writer.rb +195 -0
  583. data/lib/datadog/tracing/workers.rb +125 -0
  584. data/lib/datadog/tracing/writer.rb +180 -0
  585. data/lib/datadog/tracing.rb +142 -0
  586. data/lib/ddtrace/auto_instrument.rb +6 -2
  587. data/lib/ddtrace/auto_instrument_base.rb +1 -0
  588. data/lib/ddtrace/profiling/preload.rb +2 -2
  589. data/lib/ddtrace/transport/ext.rb +35 -0
  590. data/lib/ddtrace/transport/http/adapters/net.rb +3 -2
  591. data/lib/ddtrace/transport/http/adapters/registry.rb +1 -0
  592. data/lib/ddtrace/transport/http/adapters/test.rb +1 -0
  593. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +3 -2
  594. data/lib/ddtrace/transport/http/api/endpoint.rb +1 -0
  595. data/lib/ddtrace/transport/http/api/fallbacks.rb +1 -0
  596. data/lib/ddtrace/transport/http/api/instance.rb +1 -0
  597. data/lib/ddtrace/transport/http/api/map.rb +1 -0
  598. data/lib/ddtrace/transport/http/api/spec.rb +1 -0
  599. data/lib/ddtrace/transport/http/api.rb +5 -11
  600. data/lib/ddtrace/transport/http/builder.rb +3 -2
  601. data/lib/ddtrace/transport/http/client.rb +1 -0
  602. data/lib/ddtrace/transport/http/env.rb +1 -0
  603. data/lib/ddtrace/transport/http/response.rb +1 -0
  604. data/lib/ddtrace/transport/http/statistics.rb +1 -0
  605. data/lib/ddtrace/transport/http/traces.rb +3 -0
  606. data/lib/ddtrace/transport/http.rb +33 -28
  607. data/lib/ddtrace/transport/io/client.rb +1 -0
  608. data/lib/ddtrace/transport/io/response.rb +1 -0
  609. data/lib/ddtrace/transport/io/traces.rb +2 -1
  610. data/lib/ddtrace/transport/io.rb +3 -2
  611. data/lib/ddtrace/transport/parcel.rb +2 -0
  612. data/lib/ddtrace/transport/request.rb +1 -0
  613. data/lib/ddtrace/transport/response.rb +1 -0
  614. data/lib/ddtrace/transport/serializable_trace.rb +118 -0
  615. data/lib/ddtrace/transport/statistics.rb +6 -4
  616. data/lib/ddtrace/transport/trace_formatter.rb +187 -0
  617. data/lib/ddtrace/transport/traces.rb +15 -5
  618. data/lib/ddtrace/version.rb +15 -13
  619. data/lib/ddtrace.rb +8 -48
  620. metadata +565 -488
  621. data/.yardopts +0 -5
  622. data/lib/datadog/ci/context_flush.rb +0 -29
  623. data/lib/datadog/contrib.rb +0 -71
  624. data/lib/ddtrace/analytics.rb +0 -39
  625. data/lib/ddtrace/buffer.rb +0 -340
  626. data/lib/ddtrace/chunker.rb +0 -35
  627. data/lib/ddtrace/configuration/agent_settings_resolver.rb +0 -309
  628. data/lib/ddtrace/configuration/base.rb +0 -82
  629. data/lib/ddtrace/configuration/components.rb +0 -292
  630. data/lib/ddtrace/configuration/dependency_resolver.rb +0 -25
  631. data/lib/ddtrace/configuration/option.rb +0 -65
  632. data/lib/ddtrace/configuration/option_definition.rb +0 -122
  633. data/lib/ddtrace/configuration/option_definition_set.rb +0 -19
  634. data/lib/ddtrace/configuration/option_set.rb +0 -7
  635. data/lib/ddtrace/configuration/options.rb +0 -112
  636. data/lib/ddtrace/configuration/pin_setup.rb +0 -32
  637. data/lib/ddtrace/configuration/settings.rb +0 -413
  638. data/lib/ddtrace/configuration.rb +0 -195
  639. data/lib/ddtrace/context.rb +0 -334
  640. data/lib/ddtrace/context_flush.rb +0 -82
  641. data/lib/ddtrace/context_provider.rb +0 -62
  642. data/lib/ddtrace/contrib/action_cable/configuration/settings.rb +0 -31
  643. data/lib/ddtrace/contrib/action_cable/event.rb +0 -67
  644. data/lib/ddtrace/contrib/action_cable/events/broadcast.rb +0 -50
  645. data/lib/ddtrace/contrib/action_cable/events/perform_action.rb +0 -56
  646. data/lib/ddtrace/contrib/action_cable/events/transmit.rb +0 -51
  647. data/lib/ddtrace/contrib/action_cable/events.rb +0 -34
  648. data/lib/ddtrace/contrib/action_cable/ext.rb +0 -27
  649. data/lib/ddtrace/contrib/action_cable/instrumentation.rb +0 -78
  650. data/lib/ddtrace/contrib/action_cable/integration.rb +0 -46
  651. data/lib/ddtrace/contrib/action_cable/patcher.rb +0 -29
  652. data/lib/ddtrace/contrib/action_mailer/configuration/settings.rb +0 -32
  653. data/lib/ddtrace/contrib/action_mailer/event.rb +0 -50
  654. data/lib/ddtrace/contrib/action_mailer/events/deliver.rb +0 -54
  655. data/lib/ddtrace/contrib/action_mailer/events/process.rb +0 -41
  656. data/lib/ddtrace/contrib/action_mailer/events.rb +0 -31
  657. data/lib/ddtrace/contrib/action_mailer/ext.rb +0 -32
  658. data/lib/ddtrace/contrib/action_mailer/integration.rb +0 -45
  659. data/lib/ddtrace/contrib/action_mailer/patcher.rb +0 -27
  660. data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +0 -157
  661. data/lib/ddtrace/contrib/action_pack/action_controller/patcher.rb +0 -26
  662. data/lib/ddtrace/contrib/action_pack/configuration/settings.rb +0 -33
  663. data/lib/ddtrace/contrib/action_pack/ext.rb +0 -20
  664. data/lib/ddtrace/contrib/action_pack/integration.rb +0 -46
  665. data/lib/ddtrace/contrib/action_pack/patcher.rb +0 -24
  666. data/lib/ddtrace/contrib/action_pack/utils.rb +0 -37
  667. data/lib/ddtrace/contrib/action_view/configuration/settings.rb +0 -32
  668. data/lib/ddtrace/contrib/action_view/event.rb +0 -36
  669. data/lib/ddtrace/contrib/action_view/events/render_partial.rb +0 -47
  670. data/lib/ddtrace/contrib/action_view/events/render_template.rb +0 -50
  671. data/lib/ddtrace/contrib/action_view/events.rb +0 -31
  672. data/lib/ddtrace/contrib/action_view/ext.rb +0 -21
  673. data/lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb +0 -75
  674. data/lib/ddtrace/contrib/action_view/instrumentation/template_renderer.rb +0 -168
  675. data/lib/ddtrace/contrib/action_view/integration.rb +0 -53
  676. data/lib/ddtrace/contrib/action_view/patcher.rb +0 -48
  677. data/lib/ddtrace/contrib/action_view/utils.rb +0 -33
  678. data/lib/ddtrace/contrib/active_job/configuration/settings.rb +0 -33
  679. data/lib/ddtrace/contrib/active_job/event.rb +0 -54
  680. data/lib/ddtrace/contrib/active_job/events/discard.rb +0 -46
  681. data/lib/ddtrace/contrib/active_job/events/enqueue.rb +0 -45
  682. data/lib/ddtrace/contrib/active_job/events/enqueue_at.rb +0 -45
  683. data/lib/ddtrace/contrib/active_job/events/enqueue_retry.rb +0 -47
  684. data/lib/ddtrace/contrib/active_job/events/perform.rb +0 -45
  685. data/lib/ddtrace/contrib/active_job/events/retry_stopped.rb +0 -46
  686. data/lib/ddtrace/contrib/active_job/events.rb +0 -39
  687. data/lib/ddtrace/contrib/active_job/ext.rb +0 -32
  688. data/lib/ddtrace/contrib/active_job/integration.rb +0 -46
  689. data/lib/ddtrace/contrib/active_job/log_injection.rb +0 -21
  690. data/lib/ddtrace/contrib/active_job/patcher.rb +0 -33
  691. data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +0 -31
  692. data/lib/ddtrace/contrib/active_model_serializers/event.rb +0 -69
  693. data/lib/ddtrace/contrib/active_model_serializers/events/render.rb +0 -33
  694. data/lib/ddtrace/contrib/active_model_serializers/events/serialize.rb +0 -36
  695. data/lib/ddtrace/contrib/active_model_serializers/events.rb +0 -31
  696. data/lib/ddtrace/contrib/active_model_serializers/ext.rb +0 -21
  697. data/lib/ddtrace/contrib/active_model_serializers/integration.rb +0 -41
  698. data/lib/ddtrace/contrib/active_model_serializers/patcher.rb +0 -30
  699. data/lib/ddtrace/contrib/active_record/configuration/makara_resolver.rb +0 -31
  700. data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +0 -135
  701. data/lib/ddtrace/contrib/active_record/configuration/settings.rb +0 -36
  702. data/lib/ddtrace/contrib/active_record/event.rb +0 -31
  703. data/lib/ddtrace/contrib/active_record/events/instantiation.rb +0 -61
  704. data/lib/ddtrace/contrib/active_record/events/sql.rb +0 -69
  705. data/lib/ddtrace/contrib/active_record/events.rb +0 -31
  706. data/lib/ddtrace/contrib/active_record/ext.rb +0 -25
  707. data/lib/ddtrace/contrib/active_record/integration.rb +0 -54
  708. data/lib/ddtrace/contrib/active_record/patcher.rb +0 -24
  709. data/lib/ddtrace/contrib/active_record/utils.rb +0 -124
  710. data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +0 -259
  711. data/lib/ddtrace/contrib/active_support/cache/patcher.rb +0 -70
  712. data/lib/ddtrace/contrib/active_support/cache/redis.rb +0 -44
  713. data/lib/ddtrace/contrib/active_support/configuration/settings.rb +0 -31
  714. data/lib/ddtrace/contrib/active_support/ext.rb +0 -28
  715. data/lib/ddtrace/contrib/active_support/integration.rb +0 -47
  716. data/lib/ddtrace/contrib/active_support/notifications/event.rb +0 -76
  717. data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +0 -68
  718. data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +0 -164
  719. data/lib/ddtrace/contrib/active_support/patcher.rb +0 -24
  720. data/lib/ddtrace/contrib/analytics.rb +0 -25
  721. data/lib/ddtrace/contrib/auto_instrument.rb +0 -48
  722. data/lib/ddtrace/contrib/aws/configuration/settings.rb +0 -31
  723. data/lib/ddtrace/contrib/aws/ext.rb +0 -24
  724. data/lib/ddtrace/contrib/aws/instrumentation.rb +0 -91
  725. data/lib/ddtrace/contrib/aws/integration.rb +0 -43
  726. data/lib/ddtrace/contrib/aws/parsed_context.rb +0 -57
  727. data/lib/ddtrace/contrib/aws/patcher.rb +0 -54
  728. data/lib/ddtrace/contrib/aws/services.rb +0 -119
  729. data/lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb +0 -21
  730. data/lib/ddtrace/contrib/concurrent_ruby/context_composite_executor_service.rb +0 -42
  731. data/lib/ddtrace/contrib/concurrent_ruby/ext.rb +0 -13
  732. data/lib/ddtrace/contrib/concurrent_ruby/future_patch.rb +0 -24
  733. data/lib/ddtrace/contrib/concurrent_ruby/integration.rb +0 -39
  734. data/lib/ddtrace/contrib/concurrent_ruby/patcher.rb +0 -30
  735. data/lib/ddtrace/contrib/configurable.rb +0 -103
  736. data/lib/ddtrace/contrib/configuration/resolver.rb +0 -82
  737. data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +0 -40
  738. data/lib/ddtrace/contrib/configuration/settings.rb +0 -56
  739. data/lib/ddtrace/contrib/dalli/configuration/settings.rb +0 -31
  740. data/lib/ddtrace/contrib/dalli/ext.rb +0 -21
  741. data/lib/ddtrace/contrib/dalli/instrumentation.rb +0 -55
  742. data/lib/ddtrace/contrib/dalli/integration.rb +0 -39
  743. data/lib/ddtrace/contrib/dalli/patcher.rb +0 -26
  744. data/lib/ddtrace/contrib/dalli/quantize.rb +0 -23
  745. data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +0 -33
  746. data/lib/ddtrace/contrib/delayed_job/ext.rb +0 -24
  747. data/lib/ddtrace/contrib/delayed_job/integration.rb +0 -39
  748. data/lib/ddtrace/contrib/delayed_job/patcher.rb +0 -29
  749. data/lib/ddtrace/contrib/delayed_job/plugin.rb +0 -85
  750. data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +0 -32
  751. data/lib/ddtrace/contrib/elasticsearch/ext.rb +0 -23
  752. data/lib/ddtrace/contrib/elasticsearch/integration.rb +0 -40
  753. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +0 -123
  754. data/lib/ddtrace/contrib/elasticsearch/quantize.rb +0 -84
  755. data/lib/ddtrace/contrib/ethon/configuration/settings.rb +0 -33
  756. data/lib/ddtrace/contrib/ethon/easy_patch.rb +0 -152
  757. data/lib/ddtrace/contrib/ethon/ext.rb +0 -20
  758. data/lib/ddtrace/contrib/ethon/integration.rb +0 -44
  759. data/lib/ddtrace/contrib/ethon/multi_patch.rb +0 -85
  760. data/lib/ddtrace/contrib/ethon/patcher.rb +0 -27
  761. data/lib/ddtrace/contrib/excon/configuration/settings.rb +0 -34
  762. data/lib/ddtrace/contrib/excon/ext.rb +0 -18
  763. data/lib/ddtrace/contrib/excon/integration.rb +0 -44
  764. data/lib/ddtrace/contrib/excon/middleware.rb +0 -164
  765. data/lib/ddtrace/contrib/excon/patcher.rb +0 -28
  766. data/lib/ddtrace/contrib/extensions.rb +0 -169
  767. data/lib/ddtrace/contrib/faraday/configuration/settings.rb +0 -39
  768. data/lib/ddtrace/contrib/faraday/connection.rb +0 -19
  769. data/lib/ddtrace/contrib/faraday/ext.rb +0 -18
  770. data/lib/ddtrace/contrib/faraday/integration.rb +0 -44
  771. data/lib/ddtrace/contrib/faraday/middleware.rb +0 -86
  772. data/lib/ddtrace/contrib/faraday/patcher.rb +0 -54
  773. data/lib/ddtrace/contrib/faraday/rack_builder.rb +0 -19
  774. data/lib/ddtrace/contrib/grape/configuration/settings.rb +0 -39
  775. data/lib/ddtrace/contrib/grape/endpoint.rb +0 -246
  776. data/lib/ddtrace/contrib/grape/ext.rb +0 -24
  777. data/lib/ddtrace/contrib/grape/instrumentation.rb +0 -34
  778. data/lib/ddtrace/contrib/grape/integration.rb +0 -40
  779. data/lib/ddtrace/contrib/grape/patcher.rb +0 -32
  780. data/lib/ddtrace/contrib/graphql/configuration/settings.rb +0 -33
  781. data/lib/ddtrace/contrib/graphql/ext.rb +0 -17
  782. data/lib/ddtrace/contrib/graphql/integration.rb +0 -40
  783. data/lib/ddtrace/contrib/graphql/patcher.rb +0 -61
  784. data/lib/ddtrace/contrib/grpc/configuration/settings.rb +0 -32
  785. data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +0 -59
  786. data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +0 -80
  787. data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +0 -79
  788. data/lib/ddtrace/contrib/grpc/ext.rb +0 -19
  789. data/lib/ddtrace/contrib/grpc/integration.rb +0 -39
  790. data/lib/ddtrace/contrib/grpc/intercept_with_datadog.rb +0 -50
  791. data/lib/ddtrace/contrib/grpc/patcher.rb +0 -34
  792. data/lib/ddtrace/contrib/http/circuit_breaker.rb +0 -38
  793. data/lib/ddtrace/contrib/http/configuration/settings.rb +0 -33
  794. data/lib/ddtrace/contrib/http/ext.rb +0 -18
  795. data/lib/ddtrace/contrib/http/instrumentation.rb +0 -180
  796. data/lib/ddtrace/contrib/http/integration.rb +0 -46
  797. data/lib/ddtrace/contrib/http/patcher.rb +0 -27
  798. data/lib/ddtrace/contrib/http_annotation_helper.rb +0 -11
  799. data/lib/ddtrace/contrib/httpclient/configuration/settings.rb +0 -33
  800. data/lib/ddtrace/contrib/httpclient/ext.rb +0 -18
  801. data/lib/ddtrace/contrib/httpclient/instrumentation.rb +0 -148
  802. data/lib/ddtrace/contrib/httpclient/integration.rb +0 -44
  803. data/lib/ddtrace/contrib/httpclient/patcher.rb +0 -39
  804. data/lib/ddtrace/contrib/httprb/configuration/settings.rb +0 -33
  805. data/lib/ddtrace/contrib/httprb/ext.rb +0 -18
  806. data/lib/ddtrace/contrib/httprb/instrumentation.rb +0 -158
  807. data/lib/ddtrace/contrib/httprb/integration.rb +0 -44
  808. data/lib/ddtrace/contrib/httprb/patcher.rb +0 -39
  809. data/lib/ddtrace/contrib/integration.rb +0 -17
  810. data/lib/ddtrace/contrib/kafka/configuration/settings.rb +0 -31
  811. data/lib/ddtrace/contrib/kafka/consumer_event.rb +0 -15
  812. data/lib/ddtrace/contrib/kafka/consumer_group_event.rb +0 -15
  813. data/lib/ddtrace/contrib/kafka/event.rb +0 -52
  814. data/lib/ddtrace/contrib/kafka/events/connection/request.rb +0 -35
  815. data/lib/ddtrace/contrib/kafka/events/consumer/process_batch.rb +0 -42
  816. data/lib/ddtrace/contrib/kafka/events/consumer/process_message.rb +0 -40
  817. data/lib/ddtrace/contrib/kafka/events/consumer_group/heartbeat.rb +0 -40
  818. data/lib/ddtrace/contrib/kafka/events/consumer_group/join_group.rb +0 -30
  819. data/lib/ddtrace/contrib/kafka/events/consumer_group/leave_group.rb +0 -30
  820. data/lib/ddtrace/contrib/kafka/events/consumer_group/sync_group.rb +0 -30
  821. data/lib/ddtrace/contrib/kafka/events/produce_operation/send_messages.rb +0 -33
  822. data/lib/ddtrace/contrib/kafka/events/producer/deliver_messages.rb +0 -36
  823. data/lib/ddtrace/contrib/kafka/events.rb +0 -45
  824. data/lib/ddtrace/contrib/kafka/ext.rb +0 -42
  825. data/lib/ddtrace/contrib/kafka/integration.rb +0 -40
  826. data/lib/ddtrace/contrib/kafka/patcher.rb +0 -27
  827. data/lib/ddtrace/contrib/lograge/configuration/settings.rb +0 -19
  828. data/lib/ddtrace/contrib/lograge/ext.rb +0 -11
  829. data/lib/ddtrace/contrib/lograge/instrumentation.rb +0 -39
  830. data/lib/ddtrace/contrib/lograge/integration.rb +0 -46
  831. data/lib/ddtrace/contrib/lograge/patcher.rb +0 -26
  832. data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +0 -34
  833. data/lib/ddtrace/contrib/mongodb/ext.rb +0 -24
  834. data/lib/ddtrace/contrib/mongodb/instrumentation.rb +0 -70
  835. data/lib/ddtrace/contrib/mongodb/integration.rb +0 -44
  836. data/lib/ddtrace/contrib/mongodb/parsers.rb +0 -69
  837. data/lib/ddtrace/contrib/mongodb/patcher.rb +0 -32
  838. data/lib/ddtrace/contrib/mongodb/subscribers.rb +0 -112
  839. data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +0 -31
  840. data/lib/ddtrace/contrib/mysql2/ext.rb +0 -19
  841. data/lib/ddtrace/contrib/mysql2/instrumentation.rb +0 -65
  842. data/lib/ddtrace/contrib/mysql2/integration.rb +0 -39
  843. data/lib/ddtrace/contrib/mysql2/patcher.rb +0 -28
  844. data/lib/ddtrace/contrib/patchable.rb +0 -71
  845. data/lib/ddtrace/contrib/patcher.rb +0 -66
  846. data/lib/ddtrace/contrib/presto/configuration/settings.rb +0 -31
  847. data/lib/ddtrace/contrib/presto/ext.rb +0 -29
  848. data/lib/ddtrace/contrib/presto/instrumentation.rb +0 -111
  849. data/lib/ddtrace/contrib/presto/integration.rb +0 -39
  850. data/lib/ddtrace/contrib/presto/patcher.rb +0 -34
  851. data/lib/ddtrace/contrib/qless/configuration/settings.rb +0 -36
  852. data/lib/ddtrace/contrib/qless/ext.rb +0 -21
  853. data/lib/ddtrace/contrib/qless/integration.rb +0 -39
  854. data/lib/ddtrace/contrib/qless/patcher.rb +0 -35
  855. data/lib/ddtrace/contrib/qless/qless_job.rb +0 -74
  856. data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +0 -34
  857. data/lib/ddtrace/contrib/que/configuration/settings.rb +0 -44
  858. data/lib/ddtrace/contrib/que/ext.rb +0 -31
  859. data/lib/ddtrace/contrib/que/integration.rb +0 -43
  860. data/lib/ddtrace/contrib/que/patcher.rb +0 -25
  861. data/lib/ddtrace/contrib/que/tracer.rb +0 -58
  862. data/lib/ddtrace/contrib/racecar/configuration/settings.rb +0 -31
  863. data/lib/ddtrace/contrib/racecar/event.rb +0 -77
  864. data/lib/ddtrace/contrib/racecar/events/batch.rb +0 -28
  865. data/lib/ddtrace/contrib/racecar/events/consume.rb +0 -28
  866. data/lib/ddtrace/contrib/racecar/events/message.rb +0 -28
  867. data/lib/ddtrace/contrib/racecar/events.rb +0 -33
  868. data/lib/ddtrace/contrib/racecar/ext.rb +0 -26
  869. data/lib/ddtrace/contrib/racecar/integration.rb +0 -40
  870. data/lib/ddtrace/contrib/racecar/patcher.rb +0 -27
  871. data/lib/ddtrace/contrib/rack/configuration/settings.rb +0 -47
  872. data/lib/ddtrace/contrib/rack/ext.rb +0 -22
  873. data/lib/ddtrace/contrib/rack/integration.rb +0 -46
  874. data/lib/ddtrace/contrib/rack/middlewares.rb +0 -288
  875. data/lib/ddtrace/contrib/rack/patcher.rb +0 -106
  876. data/lib/ddtrace/contrib/rack/request_queue.rb +0 -45
  877. data/lib/ddtrace/contrib/rails/auto_instrument_railtie.rb +0 -10
  878. data/lib/ddtrace/contrib/rails/configuration/settings.rb +0 -101
  879. data/lib/ddtrace/contrib/rails/ext.rb +0 -18
  880. data/lib/ddtrace/contrib/rails/framework.rb +0 -172
  881. data/lib/ddtrace/contrib/rails/integration.rb +0 -45
  882. data/lib/ddtrace/contrib/rails/log_injection.rb +0 -42
  883. data/lib/ddtrace/contrib/rails/middlewares.rb +0 -44
  884. data/lib/ddtrace/contrib/rails/patcher.rb +0 -119
  885. data/lib/ddtrace/contrib/rails/railtie.rb +0 -18
  886. data/lib/ddtrace/contrib/rails/utils.rb +0 -25
  887. data/lib/ddtrace/contrib/rake/configuration/settings.rb +0 -32
  888. data/lib/ddtrace/contrib/rake/ext.rb +0 -22
  889. data/lib/ddtrace/contrib/rake/instrumentation.rb +0 -91
  890. data/lib/ddtrace/contrib/rake/integration.rb +0 -39
  891. data/lib/ddtrace/contrib/rake/patcher.rb +0 -31
  892. data/lib/ddtrace/contrib/redis/configuration/resolver.rb +0 -46
  893. data/lib/ddtrace/contrib/redis/configuration/settings.rb +0 -36
  894. data/lib/ddtrace/contrib/redis/ext.rb +0 -23
  895. data/lib/ddtrace/contrib/redis/instrumentation.rb +0 -90
  896. data/lib/ddtrace/contrib/redis/integration.rb +0 -43
  897. data/lib/ddtrace/contrib/redis/patcher.rb +0 -33
  898. data/lib/ddtrace/contrib/redis/quantize.rb +0 -76
  899. data/lib/ddtrace/contrib/redis/tags.rb +0 -47
  900. data/lib/ddtrace/contrib/redis/vendor/resolver.rb +0 -159
  901. data/lib/ddtrace/contrib/registerable.rb +0 -33
  902. data/lib/ddtrace/contrib/registry.rb +0 -43
  903. data/lib/ddtrace/contrib/resque/configuration/settings.rb +0 -49
  904. data/lib/ddtrace/contrib/resque/ext.rb +0 -18
  905. data/lib/ddtrace/contrib/resque/integration.rb +0 -44
  906. data/lib/ddtrace/contrib/resque/patcher.rb +0 -30
  907. data/lib/ddtrace/contrib/resque/resque_job.rb +0 -104
  908. data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +0 -32
  909. data/lib/ddtrace/contrib/rest_client/ext.rb +0 -18
  910. data/lib/ddtrace/contrib/rest_client/integration.rb +0 -39
  911. data/lib/ddtrace/contrib/rest_client/patcher.rb +0 -25
  912. data/lib/ddtrace/contrib/rest_client/request_patch.rb +0 -92
  913. data/lib/ddtrace/contrib/semantic_logger/configuration/settings.rb +0 -19
  914. data/lib/ddtrace/contrib/semantic_logger/ext.rb +0 -11
  915. data/lib/ddtrace/contrib/semantic_logger/instrumentation.rb +0 -43
  916. data/lib/ddtrace/contrib/semantic_logger/integration.rb +0 -48
  917. data/lib/ddtrace/contrib/semantic_logger/patcher.rb +0 -26
  918. data/lib/ddtrace/contrib/sequel/configuration/settings.rb +0 -29
  919. data/lib/ddtrace/contrib/sequel/database.rb +0 -64
  920. data/lib/ddtrace/contrib/sequel/dataset.rb +0 -64
  921. data/lib/ddtrace/contrib/sequel/ext.rb +0 -20
  922. data/lib/ddtrace/contrib/sequel/integration.rb +0 -39
  923. data/lib/ddtrace/contrib/sequel/patcher.rb +0 -34
  924. data/lib/ddtrace/contrib/sequel/utils.rb +0 -75
  925. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +0 -32
  926. data/lib/ddtrace/contrib/shoryuken/ext.rb +0 -22
  927. data/lib/ddtrace/contrib/shoryuken/integration.rb +0 -40
  928. data/lib/ddtrace/contrib/shoryuken/patcher.rb +0 -25
  929. data/lib/ddtrace/contrib/shoryuken/tracer.rb +0 -56
  930. data/lib/ddtrace/contrib/sidekiq/client_tracer.rb +0 -44
  931. data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +0 -38
  932. data/lib/ddtrace/contrib/sidekiq/ext.rb +0 -31
  933. data/lib/ddtrace/contrib/sidekiq/integration.rb +0 -49
  934. data/lib/ddtrace/contrib/sidekiq/patcher.rb +0 -68
  935. data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/heartbeat.rb +0 -30
  936. data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/job_fetch.rb +0 -30
  937. data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/scheduled_push.rb +0 -29
  938. data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +0 -66
  939. data/lib/ddtrace/contrib/sidekiq/tracing.rb +0 -45
  940. data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +0 -40
  941. data/lib/ddtrace/contrib/sinatra/env.rb +0 -59
  942. data/lib/ddtrace/contrib/sinatra/ext.rb +0 -28
  943. data/lib/ddtrace/contrib/sinatra/headers.rb +0 -30
  944. data/lib/ddtrace/contrib/sinatra/integration.rb +0 -39
  945. data/lib/ddtrace/contrib/sinatra/patcher.rb +0 -30
  946. data/lib/ddtrace/contrib/sinatra/tracer.rb +0 -150
  947. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +0 -112
  948. data/lib/ddtrace/contrib/sneakers/configuration/settings.rb +0 -34
  949. data/lib/ddtrace/contrib/sneakers/ext.rb +0 -23
  950. data/lib/ddtrace/contrib/sneakers/integration.rb +0 -42
  951. data/lib/ddtrace/contrib/sneakers/patcher.rb +0 -25
  952. data/lib/ddtrace/contrib/sneakers/tracer.rb +0 -54
  953. data/lib/ddtrace/contrib/status_code_matcher.rb +0 -70
  954. data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +0 -31
  955. data/lib/ddtrace/contrib/sucker_punch/exception_handler.rb +0 -25
  956. data/lib/ddtrace/contrib/sucker_punch/ext.rb +0 -22
  957. data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +0 -89
  958. data/lib/ddtrace/contrib/sucker_punch/integration.rb +0 -39
  959. data/lib/ddtrace/contrib/sucker_punch/patcher.rb +0 -44
  960. data/lib/ddtrace/correlation.rb +0 -40
  961. data/lib/ddtrace/diagnostics/environment_logger.rb +0 -280
  962. data/lib/ddtrace/diagnostics/health.rb +0 -34
  963. data/lib/ddtrace/distributed_tracing/headers/b3.rb +0 -45
  964. data/lib/ddtrace/distributed_tracing/headers/b3_single.rb +0 -57
  965. data/lib/ddtrace/distributed_tracing/headers/datadog.rb +0 -43
  966. data/lib/ddtrace/distributed_tracing/headers/headers.rb +0 -72
  967. data/lib/ddtrace/distributed_tracing/headers/helpers.rb +0 -44
  968. data/lib/ddtrace/encoding.rb +0 -72
  969. data/lib/ddtrace/error.rb +0 -97
  970. data/lib/ddtrace/event.rb +0 -53
  971. data/lib/ddtrace/ext/analytics.rb +0 -13
  972. data/lib/ddtrace/ext/app_types.rb +0 -12
  973. data/lib/ddtrace/ext/correlation.rb +0 -12
  974. data/lib/ddtrace/ext/diagnostics.rb +0 -37
  975. data/lib/ddtrace/ext/distributed.rb +0 -40
  976. data/lib/ddtrace/ext/environment.rb +0 -24
  977. data/lib/ddtrace/ext/errors.rb +0 -11
  978. data/lib/ddtrace/ext/forced_tracing.rb +0 -26
  979. data/lib/ddtrace/ext/git.rb +0 -32
  980. data/lib/ddtrace/ext/http.rb +0 -47
  981. data/lib/ddtrace/ext/integration.rb +0 -9
  982. data/lib/ddtrace/ext/manual_tracing.rb +0 -10
  983. data/lib/ddtrace/ext/metrics.rb +0 -16
  984. data/lib/ddtrace/ext/net.rb +0 -11
  985. data/lib/ddtrace/ext/priority.rb +0 -19
  986. data/lib/ddtrace/ext/profiling.rb +0 -53
  987. data/lib/ddtrace/ext/runtime.rb +0 -25
  988. data/lib/ddtrace/ext/sampling.rb +0 -17
  989. data/lib/ddtrace/ext/sql.rb +0 -9
  990. data/lib/ddtrace/ext/test.rb +0 -9
  991. data/lib/ddtrace/ext/transport.rb +0 -32
  992. data/lib/ddtrace/forced_tracing.rb +0 -39
  993. data/lib/ddtrace/logger.rb +0 -41
  994. data/lib/ddtrace/metrics.rb +0 -282
  995. data/lib/ddtrace/opentelemetry/extensions.rb +0 -14
  996. data/lib/ddtrace/opentelemetry/span.rb +0 -34
  997. data/lib/ddtrace/opentracer/binary_propagator.rb +0 -25
  998. data/lib/ddtrace/opentracer/carrier.rb +0 -7
  999. data/lib/ddtrace/opentracer/distributed_headers.rb +0 -56
  1000. data/lib/ddtrace/opentracer/global_tracer.rb +0 -16
  1001. data/lib/ddtrace/opentracer/propagator.rb +0 -23
  1002. data/lib/ddtrace/opentracer/rack_propagator.rb +0 -61
  1003. data/lib/ddtrace/opentracer/scope.rb +0 -16
  1004. data/lib/ddtrace/opentracer/scope_manager.rb +0 -7
  1005. data/lib/ddtrace/opentracer/span.rb +0 -95
  1006. data/lib/ddtrace/opentracer/span_context.rb +0 -15
  1007. data/lib/ddtrace/opentracer/span_context_factory.rb +0 -24
  1008. data/lib/ddtrace/opentracer/text_map_propagator.rb +0 -76
  1009. data/lib/ddtrace/opentracer/thread_local_scope.rb +0 -32
  1010. data/lib/ddtrace/opentracer/thread_local_scope_manager.rb +0 -41
  1011. data/lib/ddtrace/opentracer/tracer.rb +0 -209
  1012. data/lib/ddtrace/opentracer.rb +0 -22
  1013. data/lib/ddtrace/patcher.rb +0 -69
  1014. data/lib/ddtrace/pin.rb +0 -86
  1015. data/lib/ddtrace/pipeline/span_filter.rb +0 -39
  1016. data/lib/ddtrace/pipeline/span_processor.rb +0 -21
  1017. data/lib/ddtrace/pipeline.rb +0 -47
  1018. data/lib/ddtrace/profiling/backtrace_location.rb +0 -33
  1019. data/lib/ddtrace/profiling/buffer.rb +0 -42
  1020. data/lib/ddtrace/profiling/collectors/stack.rb +0 -297
  1021. data/lib/ddtrace/profiling/encoding/profile.rb +0 -46
  1022. data/lib/ddtrace/profiling/event.rb +0 -14
  1023. data/lib/ddtrace/profiling/events/stack.rb +0 -81
  1024. data/lib/ddtrace/profiling/exporter.rb +0 -24
  1025. data/lib/ddtrace/profiling/ext/forking.rb +0 -98
  1026. data/lib/ddtrace/profiling/flush.rb +0 -44
  1027. data/lib/ddtrace/profiling/native_extension.rb +0 -40
  1028. data/lib/ddtrace/profiling/pprof/builder.rb +0 -126
  1029. data/lib/ddtrace/profiling/pprof/converter.rb +0 -103
  1030. data/lib/ddtrace/profiling/pprof/message_set.rb +0 -15
  1031. data/lib/ddtrace/profiling/pprof/payload.rb +0 -19
  1032. data/lib/ddtrace/profiling/pprof/pprof_pb.rb +0 -82
  1033. data/lib/ddtrace/profiling/pprof/stack_sample.rb +0 -140
  1034. data/lib/ddtrace/profiling/pprof/string_table.rb +0 -11
  1035. data/lib/ddtrace/profiling/pprof/template.rb +0 -119
  1036. data/lib/ddtrace/profiling/profiler.rb +0 -31
  1037. data/lib/ddtrace/profiling/recorder.rb +0 -96
  1038. data/lib/ddtrace/profiling/scheduler.rb +0 -150
  1039. data/lib/ddtrace/profiling/tasks/setup.rb +0 -90
  1040. data/lib/ddtrace/profiling/trace_identifiers/ddtrace.rb +0 -42
  1041. data/lib/ddtrace/profiling/trace_identifiers/helper.rb +0 -46
  1042. data/lib/ddtrace/profiling/transport/client.rb +0 -15
  1043. data/lib/ddtrace/profiling/transport/http/api/endpoint.rb +0 -94
  1044. data/lib/ddtrace/profiling/transport/http/api/instance.rb +0 -37
  1045. data/lib/ddtrace/profiling/transport/http/api/spec.rb +0 -41
  1046. data/lib/ddtrace/profiling/transport/http/api.rb +0 -44
  1047. data/lib/ddtrace/profiling/transport/http/builder.rb +0 -29
  1048. data/lib/ddtrace/profiling/transport/http/client.rb +0 -34
  1049. data/lib/ddtrace/profiling/transport/http/response.rb +0 -22
  1050. data/lib/ddtrace/profiling/transport/http.rb +0 -111
  1051. data/lib/ddtrace/profiling/transport/io/client.rb +0 -28
  1052. data/lib/ddtrace/profiling/transport/io/response.rb +0 -17
  1053. data/lib/ddtrace/profiling/transport/io.rb +0 -31
  1054. data/lib/ddtrace/profiling/transport/parcel.rb +0 -18
  1055. data/lib/ddtrace/profiling/transport/request.rb +0 -16
  1056. data/lib/ddtrace/profiling/transport/response.rb +0 -9
  1057. data/lib/ddtrace/profiling.rb +0 -149
  1058. data/lib/ddtrace/propagation/grpc_propagator.rb +0 -75
  1059. data/lib/ddtrace/propagation/http_propagator.rb +0 -91
  1060. data/lib/ddtrace/quantization/hash.rb +0 -104
  1061. data/lib/ddtrace/quantization/http.rb +0 -90
  1062. data/lib/ddtrace/runtime/metrics.rb +0 -135
  1063. data/lib/ddtrace/sampler.rb +0 -303
  1064. data/lib/ddtrace/sampling/matcher.rb +0 -58
  1065. data/lib/ddtrace/sampling/rate_limiter.rb +0 -177
  1066. data/lib/ddtrace/sampling/rule.rb +0 -62
  1067. data/lib/ddtrace/sampling/rule_sampler.rb +0 -133
  1068. data/lib/ddtrace/sampling.rb +0 -3
  1069. data/lib/ddtrace/span.rb +0 -445
  1070. data/lib/ddtrace/sync_writer.rb +0 -69
  1071. data/lib/ddtrace/tasks/exec.rb +0 -47
  1072. data/lib/ddtrace/tasks/help.rb +0 -15
  1073. data/lib/ddtrace/tracer.rb +0 -449
  1074. data/lib/ddtrace/utils/compression.rb +0 -28
  1075. data/lib/ddtrace/utils/database.rb +0 -26
  1076. data/lib/ddtrace/utils/forking.rb +0 -53
  1077. data/lib/ddtrace/utils/object_set.rb +0 -40
  1078. data/lib/ddtrace/utils/only_once.rb +0 -41
  1079. data/lib/ddtrace/utils/sequence.rb +0 -18
  1080. data/lib/ddtrace/utils/string_table.rb +0 -46
  1081. data/lib/ddtrace/utils/time.rb +0 -51
  1082. data/lib/ddtrace/utils.rb +0 -80
  1083. data/lib/ddtrace/vendor/active_record/connection_specification.rb +0 -302
  1084. data/lib/ddtrace/vendor/multipart-post/multipart/post/composite_read_io.rb +0 -117
  1085. data/lib/ddtrace/vendor/multipart-post/multipart/post/multipartable.rb +0 -58
  1086. data/lib/ddtrace/vendor/multipart-post/multipart/post/parts.rb +0 -136
  1087. data/lib/ddtrace/vendor/multipart-post/multipart/post/version.rb +0 -10
  1088. data/lib/ddtrace/vendor/multipart-post/multipart/post.rb +0 -9
  1089. data/lib/ddtrace/vendor/multipart-post/multipart.rb +0 -13
  1090. data/lib/ddtrace/vendor/multipart-post/net/http/post/multipart.rb +0 -33
  1091. data/lib/ddtrace/worker.rb +0 -21
  1092. data/lib/ddtrace/workers/async.rb +0 -175
  1093. data/lib/ddtrace/workers/interval_loop.rb +0 -116
  1094. data/lib/ddtrace/workers/polling.rb +0 -56
  1095. data/lib/ddtrace/workers/queue.rb +0 -41
  1096. data/lib/ddtrace/workers/runtime_metrics.rb +0 -65
  1097. data/lib/ddtrace/workers/trace_writer.rb +0 -200
  1098. data/lib/ddtrace/workers.rb +0 -123
  1099. data/lib/ddtrace/writer.rb +0 -200
@@ -0,0 +1,32 @@
1
+ # typed: true
2
+
3
+ require 'datadog/profiling/transport/io/client'
4
+ require 'datadog/profiling/encoding/profile'
5
+
6
+ module Datadog
7
+ module Profiling
8
+ module Transport
9
+ # Namespace for profiling IO transport components
10
+ module IO
11
+ module_function
12
+
13
+ # Builds a new Profiling::Transport::IO::Client
14
+ def new(out, encoder, options = {})
15
+ Client.new(out, encoder, options)
16
+ end
17
+
18
+ # Builds a new Profiling::Transport::IO::Client with default settings
19
+ # Pass options to override any settings.
20
+ def default(options = {})
21
+ options = options.dup
22
+
23
+ new(
24
+ options.delete(:out) || $stdout,
25
+ options.delete(:encoder) || Profiling::Encoding::Profile::Protobuf,
26
+ options
27
+ )
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,19 @@
1
+ # typed: true
2
+
3
+ require 'ddtrace/transport/parcel'
4
+
5
+ module Datadog
6
+ module Profiling
7
+ module Transport
8
+ # Data transfer object for profiling data
9
+ class Parcel
10
+ include Datadog::Transport::Parcel
11
+
12
+ def encode_with(encoder)
13
+ # TODO: Determine encoding behavior
14
+ encoder.encode(data)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,17 @@
1
+ # typed: true
2
+
3
+ require 'ddtrace/transport/request'
4
+ require 'datadog/profiling/transport/parcel'
5
+
6
+ module Datadog
7
+ module Profiling
8
+ module Transport
9
+ # Profiling request
10
+ class Request < Datadog::Transport::Request
11
+ def initialize(flush)
12
+ super(Parcel.new(flush))
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,10 @@
1
+ # typed: strict
2
+
3
+ module Datadog
4
+ module Profiling
5
+ module Transport
6
+ # Profiling response
7
+ module Response; end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,168 @@
1
+ # typed: true
2
+
3
+ require 'datadog/core'
4
+ require 'datadog/core/environment/variable_helpers'
5
+ require 'datadog/core/utils/only_once'
6
+
7
+ module Datadog
8
+ # Contains profiler for generating stack profiles, etc.
9
+ module Profiling # rubocop:disable Metrics/ModuleLength
10
+ GOOGLE_PROTOBUF_MINIMUM_VERSION = Gem::Version.new('3.0')
11
+ private_constant :GOOGLE_PROTOBUF_MINIMUM_VERSION
12
+
13
+ SKIPPED_NATIVE_EXTENSION_ONLY_ONCE = Core::Utils::OnlyOnce.new
14
+ private_constant :SKIPPED_NATIVE_EXTENSION_ONLY_ONCE
15
+
16
+ def self.supported?
17
+ unsupported_reason.nil?
18
+ end
19
+
20
+ def self.unsupported_reason
21
+ # NOTE: Only the first matching reason is returned, so try to keep a nice order on reasons -- e.g. tell users
22
+ # first that they can't use this on JRuby before telling them that they are missing protobuf
23
+
24
+ ruby_engine_unsupported? ||
25
+ native_library_failed_to_load? ||
26
+ protobuf_gem_unavailable? ||
27
+ protobuf_version_unsupported? ||
28
+ protobuf_failed_to_load?
29
+ end
30
+
31
+ # Starts the profiler, if the profiler is supported by in
32
+ # this runtime environment and if the profiler has been enabled
33
+ # in configuration.
34
+ #
35
+ # @return [Boolean] `true` if the profiler has successfully started, otherwise `false`.
36
+ # @public_api
37
+ def self.start_if_enabled
38
+ # If the profiler was not previously touched, getting the profiler instance triggers start as a side-effect
39
+ # otherwise we get nil
40
+ profiler = Datadog.send(:components).profiler
41
+ # ...but we still try to start it BECAUSE if the process forks, the profiler will exist but may
42
+ # not yet have been started in the fork
43
+ profiler.start if profiler
44
+ !!profiler
45
+ end
46
+
47
+ private_class_method def self.ruby_engine_unsupported?
48
+ 'JRuby is not supported' if RUBY_ENGINE == 'jruby'
49
+ end
50
+
51
+ private_class_method def self.protobuf_gem_unavailable?
52
+ # NOTE: On environments where protobuf is already loaded, we skip the check. This allows us to support environments
53
+ # where no Gem.loaded_version is NOT available but customers are able to load protobuf; see for instance
54
+ # https://github.com/teamcapybara/capybara/commit/caf3bcd7664f4f2691d0ca9ef3be9a2a954fecfb
55
+ if !defined?(::Google::Protobuf) && Gem.loaded_specs['google-protobuf'].nil?
56
+ "Missing google-protobuf dependency; please add `gem 'google-protobuf', '~> 3.0'` to your Gemfile or gems.rb file"
57
+ end
58
+ end
59
+
60
+ private_class_method def self.protobuf_version_unsupported?
61
+ # See above for why we skip the check when protobuf is already loaded; note that when protobuf was already loaded
62
+ # we skip the version check to avoid the call to Gem.loaded_specs. Unfortunately, protobuf does not seem to
63
+ # expose the gem version constant elsewhere, so in that setup we are not able to check the version.
64
+ if !defined?(::Google::Protobuf) && Gem.loaded_specs['google-protobuf'].version < GOOGLE_PROTOBUF_MINIMUM_VERSION
65
+ 'Your google-protobuf is too old; ensure that you have google-protobuf >= 3.0 by ' \
66
+ "adding `gem 'google-protobuf', '~> 3.0'` to your Gemfile or gems.rb file"
67
+ end
68
+ end
69
+
70
+ private_class_method def self.protobuf_failed_to_load?
71
+ unless protobuf_loaded_successfully?
72
+ 'There was an error loading the google-protobuf library; see previous warning message for details'
73
+ end
74
+ end
75
+
76
+ # The `google-protobuf` gem depends on a native component, and its creators helpfully tried to provide precompiled
77
+ # versions of this extension on rubygems.org.
78
+ #
79
+ # Unfortunately, for a long time, the supported Ruby versions metadata on these precompiled versions of the extension
80
+ # was not correctly set. (This is fixed in newer versions -- but not all Ruby versions we want to support can use
81
+ # these.)
82
+ #
83
+ # Thus, the gem can still be installed, but can be in a broken state. To avoid breaking customer applications, we
84
+ # use this helper to load it and gracefully handle failures.
85
+ private_class_method def self.protobuf_loaded_successfully?
86
+ return @protobuf_loaded if defined?(@protobuf_loaded)
87
+
88
+ begin
89
+ require 'google/protobuf'
90
+ @protobuf_loaded = true
91
+ rescue LoadError => e
92
+ # NOTE: We use Kernel#warn here because this code gets run BEFORE Datadog.logger is actually set up.
93
+ # In the future it'd be nice to shuffle the logger startup to happen first to avoid this special case.
94
+ Kernel.warn(
95
+ '[DDTRACE] Error while loading google-protobuf gem. ' \
96
+ "Cause: '#{e.message}' Location: '#{Array(e.backtrace).first}'. " \
97
+ 'This can happen when google-protobuf is missing its native components. ' \
98
+ 'To fix this, try removing and reinstalling the gem, forcing it to recompile the components: ' \
99
+ '`gem uninstall google-protobuf -a; BUNDLE_FORCE_RUBY_PLATFORM=true bundle install`. ' \
100
+ 'If the error persists, please contact support via <https://docs.datadoghq.com/help/> or ' \
101
+ 'file a bug at <https://github.com/DataDog/dd-trace-rb/blob/master/CONTRIBUTING.md#found-a-bug>.'
102
+ )
103
+ @protobuf_loaded = false
104
+ end
105
+ end
106
+
107
+ private_class_method def self.native_library_failed_to_load?
108
+ success, exception = try_loading_native_library
109
+
110
+ unless success
111
+ if exception
112
+ 'There was an error loading the profiling native extension due to ' \
113
+ "'#{exception.message}' at '#{exception.backtrace.first}'"
114
+ else
115
+ 'The profiling native extension did not load correctly. ' \
116
+ 'If the error persists, please contact support via <https://docs.datadoghq.com/help/> or ' \
117
+ 'file a bug at <https://github.com/DataDog/dd-trace-rb/blob/master/CONTRIBUTING.md#found-a-bug>.'
118
+ end
119
+ end
120
+ end
121
+
122
+ private_class_method def self.try_loading_native_library
123
+ if Core::Environment::VariableHelpers.env_to_bool('DD_PROFILING_NO_EXTENSION', false)
124
+ SKIPPED_NATIVE_EXTENSION_ONLY_ONCE.run do
125
+ Kernel.warn(
126
+ '[DDTRACE] Skipped loading of profiling native extension due to DD_PROFILING_NO_EXTENSION environment ' \
127
+ 'variable being set. ' \
128
+ 'This option is experimental and will lead to the profiler not working in future releases. ' \
129
+ 'If you needed to use this, please tell us why on <https://github.com/DataDog/dd-trace-rb/issues/new>.'
130
+ )
131
+ end
132
+
133
+ return [true, nil]
134
+ end
135
+
136
+ begin
137
+ require "ddtrace_profiling_native_extension.#{RUBY_VERSION}_#{RUBY_PLATFORM}"
138
+ success =
139
+ defined?(Profiling::NativeExtension) && Profiling::NativeExtension.send(:native_working?)
140
+ [success, nil]
141
+ rescue StandardError, LoadError => e
142
+ [false, e]
143
+ end
144
+ end
145
+
146
+ private_class_method def self.load_profiling
147
+ return false unless supported?
148
+
149
+ require 'datadog/profiling/ext/forking'
150
+ require 'datadog/profiling/collectors/code_provenance'
151
+ require 'datadog/profiling/collectors/stack'
152
+ require 'datadog/profiling/exporter'
153
+ require 'datadog/profiling/recorder'
154
+ require 'datadog/profiling/scheduler'
155
+ require 'datadog/profiling/tasks/setup'
156
+ require 'datadog/profiling/transport/io'
157
+ require 'datadog/profiling/transport/http'
158
+ require 'datadog/profiling/profiler'
159
+ require 'datadog/profiling/native_extension'
160
+ require 'datadog/profiling/trace_identifiers/helper'
161
+ require 'datadog/profiling/pprof/pprof_pb'
162
+
163
+ true
164
+ end
165
+
166
+ load_profiling if supported?
167
+ end
168
+ end
@@ -0,0 +1,25 @@
1
+ # typed: true
2
+
3
+ require 'datadog/tracing/metadata/ext'
4
+
5
+ module Datadog
6
+ module Tracing
7
+ # Defines analytics behavior
8
+ module Analytics
9
+ class << self
10
+ def set_sample_rate(span_op, sample_rate)
11
+ return if span_op.nil? || !sample_rate.is_a?(Numeric)
12
+
13
+ span_op.set_metric(Metadata::Ext::Analytics::TAG_SAMPLE_RATE, sample_rate)
14
+ end
15
+
16
+ def set_measured(span_op, value = true)
17
+ return if span_op.nil?
18
+
19
+ value = value == true || value == 1 ? 1 : 0 # rubocop:disable Style/MultipleComparison
20
+ span_op.set_metric(Metadata::Ext::Analytics::TAG_MEASURED, value)
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,126 @@
1
+ # typed: true
2
+
3
+ require 'datadog/core'
4
+ require 'datadog/core/environment/ext'
5
+ require 'datadog/core/buffer/thread_safe'
6
+ require 'datadog/core/buffer/cruby'
7
+ require 'datadog/core/diagnostics/health'
8
+
9
+ module Datadog
10
+ module Tracing
11
+ # Health metrics for trace buffers.
12
+ module MeasuredBuffer
13
+ include Kernel # Ensure that kernel methods are always available (https://sorbet.org/docs/error-reference#7003)
14
+
15
+ def initialize(*_)
16
+ super
17
+
18
+ @buffer_accepted = 0
19
+ @buffer_accepted_lengths = 0
20
+ @buffer_dropped = 0
21
+ @buffer_spans = 0
22
+ end
23
+
24
+ def add!(trace)
25
+ super
26
+
27
+ # Emit health metrics
28
+ measure_accept(trace)
29
+ end
30
+
31
+ def add_all!(traces)
32
+ super
33
+
34
+ # Emit health metrics
35
+ traces.each { |trace| measure_accept(trace) }
36
+ end
37
+
38
+ def replace!(trace)
39
+ discarded_trace = super
40
+
41
+ # Emit health metrics
42
+ measure_accept(trace)
43
+ measure_drop(discarded_trace) if discarded_trace
44
+
45
+ discarded_trace
46
+ end
47
+
48
+ # Stored traces are returned and the local buffer is reset.
49
+ def drain!
50
+ traces = super
51
+ measure_pop(traces)
52
+ traces
53
+ end
54
+
55
+ def measure_accept(trace)
56
+ @buffer_accepted += 1
57
+ @buffer_accepted_lengths += trace.length
58
+
59
+ @buffer_spans += trace.length
60
+ rescue StandardError => e
61
+ Datadog.logger.debug("Failed to measure queue accept. Cause: #{e.message} Source: #{Array(e.backtrace).first}")
62
+ end
63
+
64
+ def measure_drop(trace)
65
+ @buffer_dropped += 1
66
+
67
+ @buffer_spans -= trace.length
68
+ rescue StandardError => e
69
+ Datadog.logger.debug("Failed to measure queue drop. Cause: #{e.message} Source: #{Array(e.backtrace).first}")
70
+ end
71
+
72
+ def measure_pop(traces)
73
+ # Accepted, cumulative totals
74
+ Datadog.health_metrics.queue_accepted(@buffer_accepted)
75
+ Datadog.health_metrics.queue_accepted_lengths(@buffer_accepted_lengths)
76
+
77
+ # Dropped, cumulative totals
78
+ Datadog.health_metrics.queue_dropped(@buffer_dropped)
79
+ # TODO: are we missing a +queue_dropped_lengths+ metric?
80
+
81
+ # Queue gauges, current values
82
+ Datadog.health_metrics.queue_max_length(@max_size)
83
+ Datadog.health_metrics.queue_spans(@buffer_spans)
84
+ Datadog.health_metrics.queue_length(traces.length)
85
+
86
+ # Reset aggregated metrics
87
+ @buffer_accepted = 0
88
+ @buffer_accepted_lengths = 0
89
+ @buffer_dropped = 0
90
+ @buffer_spans = 0
91
+ rescue StandardError => e
92
+ Datadog.logger.debug("Failed to measure queue. Cause: #{e.message} Source: #{Array(e.backtrace).first}")
93
+ end
94
+ end
95
+
96
+ # Trace buffer that stores application traces, has a maximum size, and
97
+ # can be safely used concurrently on any environment.
98
+ #
99
+ # @see Datadog::Core::Buffer::ThreadSafe
100
+ class ThreadSafeTraceBuffer < Core::Buffer::ThreadSafe
101
+ prepend MeasuredBuffer
102
+ end
103
+
104
+ # Trace buffer that stores application traces, has a maximum size, and
105
+ # can be safely used concurrently with CRuby.
106
+ #
107
+ # @see Datadog::Core::Buffer::CRuby
108
+ class CRubyTraceBuffer < Core::Buffer::CRuby
109
+ prepend MeasuredBuffer
110
+ end
111
+
112
+ # Trace buffer that stores application traces. The buffer has a maximum size and when
113
+ # the buffer is full, a random trace is discarded. This class is thread-safe and is used
114
+ # automatically by the ``Tracer`` instance when a ``Span`` is finished.
115
+ #
116
+ # We choose the default TraceBuffer implementation for current platform dynamically here.
117
+ #
118
+ # TODO We should restructure this module, so that classes are not declared at top-level ::Datadog.
119
+ # TODO Making such a change is potentially breaking for users manually configuring the tracer.
120
+ TraceBuffer = if Core::Environment::Ext::RUBY_ENGINE == 'ruby'
121
+ CRubyTraceBuffer
122
+ else
123
+ ThreadSafeTraceBuffer
124
+ end
125
+ end
126
+ end
@@ -0,0 +1,51 @@
1
+ # typed: true
2
+
3
+ module Datadog
4
+ module Tracing
5
+ module Configuration
6
+ module Ext
7
+ # @public_api
8
+ module Analytics
9
+ ENV_TRACE_ANALYTICS_ENABLED = 'DD_TRACE_ANALYTICS_ENABLED'.freeze
10
+ end
11
+
12
+ # @public_api
13
+ module Correlation
14
+ ENV_LOGS_INJECTION_ENABLED = 'DD_LOGS_INJECTION'.freeze
15
+ end
16
+
17
+ # @public_api
18
+ module Distributed
19
+ PROPAGATION_STYLE_DATADOG = 'Datadog'.freeze
20
+ PROPAGATION_STYLE_B3 = 'B3'.freeze
21
+ PROPAGATION_STYLE_B3_SINGLE_HEADER = 'B3 single header'.freeze
22
+ ENV_PROPAGATION_STYLE_INJECT = 'DD_PROPAGATION_STYLE_INJECT'.freeze
23
+ ENV_PROPAGATION_STYLE_EXTRACT = 'DD_PROPAGATION_STYLE_EXTRACT'.freeze
24
+ end
25
+
26
+ # @public_api
27
+ module NET
28
+ ENV_REPORT_HOSTNAME = 'DD_TRACE_REPORT_HOSTNAME'.freeze
29
+ end
30
+
31
+ # @public_api
32
+ module Sampling
33
+ ENV_SAMPLE_RATE = 'DD_TRACE_SAMPLE_RATE'.freeze
34
+ ENV_RATE_LIMIT = 'DD_TRACE_RATE_LIMIT'.freeze
35
+ end
36
+
37
+ # @public_api
38
+ module Test
39
+ ENV_MODE_ENABLED = 'DD_TRACE_TEST_MODE_ENABLED'.freeze
40
+ end
41
+
42
+ # @public_api
43
+ module Transport
44
+ ENV_DEFAULT_HOST = 'DD_AGENT_HOST'.freeze
45
+ ENV_DEFAULT_PORT = 'DD_TRACE_AGENT_PORT'.freeze
46
+ ENV_DEFAULT_URL = 'DD_TRACE_AGENT_URL'.freeze
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,68 @@
1
+ # typed: true
2
+
3
+ require 'datadog/core/utils/forking'
4
+
5
+ module Datadog
6
+ module Tracing
7
+ # {Datadog::Tracing::Context} is used to keep track of a the active trace for the current
8
+ # execution flow. During each logical execution, the same {Datadog::Tracing::Context} is
9
+ # used to represent a single logical trace, even if the trace is built
10
+ # asynchronously.
11
+ #
12
+ # A single code execution may use multiple {Datadog::Tracing::Context} if part of the execution
13
+ # must not be related to the current tracing. As example, a delayed job may
14
+ # compose a standalone trace instead of being related to the same trace that
15
+ # generates the job itself. On the other hand, if it's part of the same
16
+ # {Datadog::Tracing::Context}, it will be related to the original trace.
17
+ class Context
18
+ include Core::Utils::Forking
19
+
20
+ attr_reader \
21
+ :active_trace
22
+
23
+ def initialize(
24
+ trace: nil
25
+ )
26
+ activate!(trace)
27
+ end
28
+
29
+ # Handles trace activation.
30
+ #
31
+ # Permits nil, allowing traces to be deactivated.
32
+ #
33
+ # If given a block, it will reset to the original
34
+ # trace after the block completes.
35
+ #
36
+ # When restoring the original trace, if it is finished,
37
+ # it will deactivate it. This prevents the context from
38
+ # holding references to completed traces thereby releasing
39
+ # its memory.
40
+ def activate!(trace)
41
+ if block_given?
42
+ begin
43
+ original_trace = @active_trace
44
+ set_active_trace!(trace)
45
+ yield
46
+ ensure
47
+ set_active_trace!(original_trace)
48
+ end
49
+ else
50
+ set_active_trace!(trace)
51
+ end
52
+ end
53
+
54
+ # Creates a copy of the context, when forked.
55
+ def fork_clone
56
+ forked_trace = @active_trace && @active_trace.fork_clone
57
+ self.class.new(trace: forked_trace)
58
+ end
59
+
60
+ private
61
+
62
+ def set_active_trace!(trace)
63
+ # Don't retain finished traces
64
+ @active_trace = trace && !trace.finished? ? trace : nil
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,66 @@
1
+ # typed: true
2
+
3
+ require 'datadog/tracing/context'
4
+
5
+ module Datadog
6
+ module Tracing
7
+ # DefaultContextProvider is a default context provider that retrieves
8
+ # all contexts from the current fiber-local storage. It is suitable for
9
+ # synchronous programming.
10
+ #
11
+ # @see https://ruby-doc.org/core-3.1.2/Thread.html#method-i-5B-5D Thread attributes are fiber-local
12
+ class DefaultContextProvider
13
+ # Initializes the default context provider with a fiber-bound context.
14
+ def initialize
15
+ @context = FiberLocalContext.new
16
+ end
17
+
18
+ # Sets the current context.
19
+ def context=(ctx)
20
+ @context.local = ctx
21
+ end
22
+
23
+ # Return the local context.
24
+ def context(key = nil)
25
+ current_context = key.nil? ? @context.local : @context.local(key)
26
+
27
+ # Rebuild/reset context after a fork
28
+ #
29
+ # We don't want forked processes to copy and retransmit spans
30
+ # that were generated from the parent process. Reset it such
31
+ # that it acts like a distributed trace.
32
+ current_context.after_fork! do
33
+ current_context = self.context = current_context.fork_clone
34
+ end
35
+
36
+ current_context
37
+ end
38
+ end
39
+
40
+ # FiberLocalContext can be used as a tracer global reference to create
41
+ # a different {Datadog::Tracing::Context} for each fiber. This allows for the tracer
42
+ # to create a serial execution graph regardless of any concurrent execution: each
43
+ # concurrent execution path creates a new trace graph.
44
+ #
45
+ # @see https://ruby-doc.org/core-3.1.2/Thread.html#method-i-5B-5D Thread attributes are fiber-local
46
+ class FiberLocalContext
47
+ # To support multiple tracers simultaneously, each {Datadog::Tracing::FiberLocalContext}
48
+ # instance has its own fiber-local variable.
49
+ def initialize
50
+ @key = "datadog_context_#{object_id}".to_sym
51
+
52
+ self.local = Context.new
53
+ end
54
+
55
+ # Override the fiber-local context with a new context.
56
+ def local=(ctx)
57
+ Thread.current[@key] = ctx
58
+ end
59
+
60
+ # Return the fiber-local context.
61
+ def local(storage = Thread.current)
62
+ storage[@key] ||= Context.new
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,35 @@
1
+ # typed: false
2
+
3
+ require 'datadog/tracing/contrib/configuration/settings'
4
+ require 'datadog/tracing/contrib/action_cable/ext'
5
+
6
+ module Datadog
7
+ module Tracing
8
+ module Contrib
9
+ module ActionCable
10
+ module Configuration
11
+ # Custom settings for the ActionCable integration
12
+ # @public_api
13
+ class Settings < Contrib::Configuration::Settings
14
+ option :enabled do |o|
15
+ o.default { env_to_bool(Ext::ENV_ENABLED, true) }
16
+ o.lazy
17
+ end
18
+
19
+ option :analytics_enabled do |o|
20
+ o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) }
21
+ o.lazy
22
+ end
23
+
24
+ option :analytics_sample_rate do |o|
25
+ o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
26
+ o.lazy
27
+ end
28
+
29
+ option :service_name
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end