ls-trace 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (337) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +419 -544
  3. data/.circleci/images/primary/Dockerfile-2.7.0 +73 -0
  4. data/.circleci/images/primary/Dockerfile-jruby-9.2 +77 -0
  5. data/.env +2 -0
  6. data/.gitignore +2 -0
  7. data/.gitlab-ci.yml +27 -0
  8. data/.rubocop.yml +8 -0
  9. data/.simplecov +38 -0
  10. data/Appraisals +299 -48
  11. data/CHANGELOG.md +3 -4
  12. data/LICENSE +4 -22
  13. data/LICENSE.Apache +200 -0
  14. data/LICENSE.BSD3 +24 -0
  15. data/NOTICE +4 -0
  16. data/README.md +4 -3
  17. data/Rakefile +561 -405
  18. data/ddtrace.gemspec +13 -4
  19. data/docker-compose.yml +96 -2
  20. data/docs/DevelopmentGuide.md +17 -1
  21. data/docs/GettingStarted.md +433 -138
  22. data/lib/ddtrace.rb +15 -0
  23. data/lib/ddtrace/analytics.rb +7 -0
  24. data/lib/ddtrace/buffer.rb +9 -9
  25. data/lib/ddtrace/chunker.rb +34 -0
  26. data/lib/ddtrace/configuration.rb +59 -5
  27. data/lib/ddtrace/configuration/base.rb +4 -2
  28. data/lib/ddtrace/configuration/components.rb +151 -0
  29. data/lib/ddtrace/configuration/option.rb +12 -3
  30. data/lib/ddtrace/configuration/option_definition.rb +1 -5
  31. data/lib/ddtrace/configuration/options.rb +6 -1
  32. data/lib/ddtrace/configuration/pin_setup.rb +3 -2
  33. data/lib/ddtrace/configuration/settings.rb +214 -40
  34. data/lib/ddtrace/context.rb +84 -63
  35. data/lib/ddtrace/context_flush.rb +51 -114
  36. data/lib/ddtrace/context_provider.rb +50 -0
  37. data/lib/ddtrace/contrib/action_cable/configuration/settings.rb +30 -0
  38. data/lib/ddtrace/contrib/action_cable/event.rb +65 -0
  39. data/lib/ddtrace/contrib/action_cable/events.rb +33 -0
  40. data/lib/ddtrace/contrib/action_cable/events/broadcast.rb +49 -0
  41. data/lib/ddtrace/contrib/action_cable/events/perform_action.rb +55 -0
  42. data/lib/ddtrace/contrib/action_cable/events/transmit.rb +50 -0
  43. data/lib/ddtrace/contrib/action_cable/ext.rb +26 -0
  44. data/lib/ddtrace/contrib/action_cable/instrumentation.rb +31 -0
  45. data/lib/ddtrace/contrib/action_cable/integration.rb +38 -0
  46. data/lib/ddtrace/contrib/action_cable/patcher.rb +27 -0
  47. data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +6 -2
  48. data/lib/ddtrace/contrib/action_pack/action_controller/patcher.rb +3 -15
  49. data/lib/ddtrace/contrib/action_pack/configuration/settings.rb +7 -2
  50. data/lib/ddtrace/contrib/action_pack/ext.rb +5 -2
  51. data/lib/ddtrace/contrib/action_pack/integration.rb +5 -3
  52. data/lib/ddtrace/contrib/action_pack/patcher.rb +3 -9
  53. data/lib/ddtrace/contrib/action_view/configuration/settings.rb +7 -2
  54. data/lib/ddtrace/contrib/action_view/event.rb +39 -0
  55. data/lib/ddtrace/contrib/action_view/events.rb +30 -0
  56. data/lib/ddtrace/contrib/action_view/events/render_partial.rb +45 -0
  57. data/lib/ddtrace/contrib/action_view/events/render_template.rb +48 -0
  58. data/lib/ddtrace/contrib/action_view/ext.rb +5 -2
  59. data/lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb +9 -13
  60. data/lib/ddtrace/contrib/action_view/instrumentation/template_renderer.rb +16 -16
  61. data/lib/ddtrace/contrib/action_view/integration.rb +5 -3
  62. data/lib/ddtrace/contrib/action_view/patcher.rb +19 -25
  63. data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +7 -2
  64. data/lib/ddtrace/contrib/active_model_serializers/event.rb +3 -0
  65. data/lib/ddtrace/contrib/active_model_serializers/ext.rb +5 -2
  66. data/lib/ddtrace/contrib/active_model_serializers/integration.rb +6 -5
  67. data/lib/ddtrace/contrib/active_model_serializers/patcher.rb +3 -10
  68. data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +4 -5
  69. data/lib/ddtrace/contrib/active_record/configuration/settings.rb +7 -2
  70. data/lib/ddtrace/contrib/active_record/events/instantiation.rb +4 -1
  71. data/lib/ddtrace/contrib/active_record/events/sql.rb +1 -1
  72. data/lib/ddtrace/contrib/active_record/ext.rb +5 -2
  73. data/lib/ddtrace/contrib/active_record/integration.rb +5 -3
  74. data/lib/ddtrace/contrib/active_record/patcher.rb +3 -9
  75. data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +2 -2
  76. data/lib/ddtrace/contrib/active_support/cache/patcher.rb +10 -24
  77. data/lib/ddtrace/contrib/active_support/cache/redis.rb +1 -1
  78. data/lib/ddtrace/contrib/active_support/configuration/settings.rb +7 -2
  79. data/lib/ddtrace/contrib/active_support/ext.rb +5 -2
  80. data/lib/ddtrace/contrib/active_support/integration.rb +5 -3
  81. data/lib/ddtrace/contrib/active_support/notifications/event.rb +3 -1
  82. data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +3 -3
  83. data/lib/ddtrace/contrib/active_support/patcher.rb +3 -9
  84. data/lib/ddtrace/contrib/analytics.rb +5 -1
  85. data/lib/ddtrace/contrib/aws/configuration/settings.rb +7 -2
  86. data/lib/ddtrace/contrib/aws/ext.rb +5 -2
  87. data/lib/ddtrace/contrib/aws/integration.rb +8 -2
  88. data/lib/ddtrace/contrib/aws/patcher.rb +15 -15
  89. data/lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb +5 -0
  90. data/lib/ddtrace/contrib/concurrent_ruby/context_composite_executor_service.rb +9 -3
  91. data/lib/ddtrace/contrib/concurrent_ruby/ext.rb +1 -0
  92. data/lib/ddtrace/contrib/concurrent_ruby/integration.rb +8 -2
  93. data/lib/ddtrace/contrib/concurrent_ruby/patcher.rb +4 -11
  94. data/lib/ddtrace/contrib/configurable.rb +30 -13
  95. data/lib/ddtrace/contrib/configuration/resolver.rb +7 -3
  96. data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +39 -0
  97. data/lib/ddtrace/contrib/configuration/settings.rb +20 -1
  98. data/lib/ddtrace/contrib/dalli/configuration/settings.rb +7 -2
  99. data/lib/ddtrace/contrib/dalli/ext.rb +5 -2
  100. data/lib/ddtrace/contrib/dalli/integration.rb +5 -3
  101. data/lib/ddtrace/contrib/dalli/patcher.rb +6 -16
  102. data/lib/ddtrace/contrib/dalli/quantize.rb +1 -1
  103. data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +7 -2
  104. data/lib/ddtrace/contrib/delayed_job/ext.rb +5 -2
  105. data/lib/ddtrace/contrib/delayed_job/integration.rb +8 -2
  106. data/lib/ddtrace/contrib/delayed_job/patcher.rb +4 -10
  107. data/lib/ddtrace/contrib/delayed_job/plugin.rb +4 -0
  108. data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +7 -2
  109. data/lib/ddtrace/contrib/elasticsearch/ext.rb +5 -2
  110. data/lib/ddtrace/contrib/elasticsearch/integration.rb +5 -3
  111. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +10 -17
  112. data/lib/ddtrace/contrib/ethon/configuration/settings.rb +8 -2
  113. data/lib/ddtrace/contrib/ethon/easy_patch.rb +22 -13
  114. data/lib/ddtrace/contrib/ethon/ext.rb +5 -2
  115. data/lib/ddtrace/contrib/ethon/integration.rb +14 -2
  116. data/lib/ddtrace/contrib/ethon/patcher.rb +7 -9
  117. data/lib/ddtrace/contrib/excon/configuration/settings.rb +7 -2
  118. data/lib/ddtrace/contrib/excon/ext.rb +5 -2
  119. data/lib/ddtrace/contrib/excon/integration.rb +13 -2
  120. data/lib/ddtrace/contrib/excon/middleware.rb +15 -12
  121. data/lib/ddtrace/contrib/excon/patcher.rb +4 -11
  122. data/lib/ddtrace/contrib/extensions.rb +39 -5
  123. data/lib/ddtrace/contrib/faraday/configuration/settings.rb +7 -2
  124. data/lib/ddtrace/contrib/faraday/connection.rb +18 -0
  125. data/lib/ddtrace/contrib/faraday/ext.rb +5 -2
  126. data/lib/ddtrace/contrib/faraday/integration.rb +10 -3
  127. data/lib/ddtrace/contrib/faraday/middleware.rb +24 -34
  128. data/lib/ddtrace/contrib/faraday/patcher.rb +26 -19
  129. data/lib/ddtrace/contrib/grape/configuration/settings.rb +7 -3
  130. data/lib/ddtrace/contrib/grape/endpoint.rb +14 -5
  131. data/lib/ddtrace/contrib/grape/ext.rb +5 -2
  132. data/lib/ddtrace/contrib/grape/integration.rb +6 -3
  133. data/lib/ddtrace/contrib/grape/patcher.rb +9 -15
  134. data/lib/ddtrace/contrib/graphql/configuration/settings.rb +7 -2
  135. data/lib/ddtrace/contrib/graphql/ext.rb +5 -2
  136. data/lib/ddtrace/contrib/graphql/integration.rb +6 -5
  137. data/lib/ddtrace/contrib/graphql/patcher.rb +11 -14
  138. data/lib/ddtrace/contrib/grpc/configuration/settings.rb +7 -2
  139. data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +1 -1
  140. data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +2 -4
  141. data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +5 -2
  142. data/lib/ddtrace/contrib/grpc/ext.rb +5 -2
  143. data/lib/ddtrace/contrib/grpc/integration.rb +5 -3
  144. data/lib/ddtrace/contrib/grpc/patcher.rb +9 -19
  145. data/lib/ddtrace/contrib/http/circuit_breaker.rb +8 -32
  146. data/lib/ddtrace/contrib/http/configuration/settings.rb +8 -2
  147. data/lib/ddtrace/contrib/http/ext.rb +5 -2
  148. data/lib/ddtrace/contrib/http/instrumentation.rb +89 -28
  149. data/lib/ddtrace/contrib/http/integration.rb +13 -0
  150. data/lib/ddtrace/contrib/http/patcher.rb +3 -9
  151. data/lib/ddtrace/contrib/http_annotation_helper.rb +10 -0
  152. data/lib/ddtrace/contrib/httprb/configuration/settings.rb +32 -0
  153. data/lib/ddtrace/contrib/httprb/ext.rb +17 -0
  154. data/lib/ddtrace/contrib/httprb/instrumentation.rb +160 -0
  155. data/lib/ddtrace/contrib/httprb/integration.rb +43 -0
  156. data/lib/ddtrace/contrib/httprb/patcher.rb +35 -0
  157. data/lib/ddtrace/contrib/kafka/configuration/settings.rb +30 -0
  158. data/lib/ddtrace/contrib/kafka/consumer_event.rb +14 -0
  159. data/lib/ddtrace/contrib/kafka/consumer_group_event.rb +14 -0
  160. data/lib/ddtrace/contrib/kafka/event.rb +51 -0
  161. data/lib/ddtrace/contrib/kafka/events.rb +44 -0
  162. data/lib/ddtrace/contrib/kafka/events/connection/request.rb +34 -0
  163. data/lib/ddtrace/contrib/kafka/events/consumer/process_batch.rb +41 -0
  164. data/lib/ddtrace/contrib/kafka/events/consumer/process_message.rb +39 -0
  165. data/lib/ddtrace/contrib/kafka/events/consumer_group/heartbeat.rb +39 -0
  166. data/lib/ddtrace/contrib/kafka/events/consumer_group/join_group.rb +29 -0
  167. data/lib/ddtrace/contrib/kafka/events/consumer_group/leave_group.rb +29 -0
  168. data/lib/ddtrace/contrib/kafka/events/consumer_group/sync_group.rb +29 -0
  169. data/lib/ddtrace/contrib/kafka/events/produce_operation/send_messages.rb +32 -0
  170. data/lib/ddtrace/contrib/kafka/events/producer/deliver_messages.rb +35 -0
  171. data/lib/ddtrace/contrib/kafka/ext.rb +41 -0
  172. data/lib/ddtrace/contrib/kafka/integration.rb +39 -0
  173. data/lib/ddtrace/contrib/kafka/patcher.rb +26 -0
  174. data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +7 -2
  175. data/lib/ddtrace/contrib/mongodb/ext.rb +5 -2
  176. data/lib/ddtrace/contrib/mongodb/instrumentation.rb +1 -2
  177. data/lib/ddtrace/contrib/mongodb/integration.rb +5 -3
  178. data/lib/ddtrace/contrib/mongodb/patcher.rb +5 -11
  179. data/lib/ddtrace/contrib/mongodb/subscribers.rb +2 -2
  180. data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +7 -2
  181. data/lib/ddtrace/contrib/mysql2/ext.rb +5 -2
  182. data/lib/ddtrace/contrib/mysql2/instrumentation.rb +1 -1
  183. data/lib/ddtrace/contrib/mysql2/integration.rb +8 -2
  184. data/lib/ddtrace/contrib/mysql2/patcher.rb +3 -9
  185. data/lib/ddtrace/contrib/patchable.rb +21 -4
  186. data/lib/ddtrace/contrib/patcher.rb +44 -10
  187. data/lib/ddtrace/contrib/presto/configuration/settings.rb +30 -0
  188. data/lib/ddtrace/contrib/presto/ext.rb +28 -0
  189. data/lib/ddtrace/contrib/presto/instrumentation.rb +107 -0
  190. data/lib/ddtrace/contrib/presto/integration.rb +38 -0
  191. data/lib/ddtrace/contrib/presto/patcher.rb +30 -0
  192. data/lib/ddtrace/contrib/que/configuration/settings.rb +42 -0
  193. data/lib/ddtrace/contrib/que/ext.rb +30 -0
  194. data/lib/ddtrace/contrib/que/integration.rb +42 -0
  195. data/lib/ddtrace/contrib/que/patcher.rb +24 -0
  196. data/lib/ddtrace/contrib/que/tracer.rb +56 -0
  197. data/lib/ddtrace/contrib/racecar/configuration/settings.rb +7 -2
  198. data/lib/ddtrace/contrib/racecar/event.rb +4 -0
  199. data/lib/ddtrace/contrib/racecar/events.rb +2 -0
  200. data/lib/ddtrace/contrib/racecar/events/consume.rb +27 -0
  201. data/lib/ddtrace/contrib/racecar/ext.rb +6 -2
  202. data/lib/ddtrace/contrib/racecar/integration.rb +6 -3
  203. data/lib/ddtrace/contrib/racecar/patcher.rb +4 -10
  204. data/lib/ddtrace/contrib/rack/configuration/settings.rb +7 -2
  205. data/lib/ddtrace/contrib/rack/ext.rb +5 -2
  206. data/lib/ddtrace/contrib/rack/integration.rb +8 -2
  207. data/lib/ddtrace/contrib/rack/middlewares.rb +23 -14
  208. data/lib/ddtrace/contrib/rack/patcher.rb +57 -22
  209. data/lib/ddtrace/contrib/rack/request_queue.rb +1 -1
  210. data/lib/ddtrace/contrib/rails/configuration/settings.rb +23 -10
  211. data/lib/ddtrace/contrib/rails/ext.rb +7 -2
  212. data/lib/ddtrace/contrib/rails/framework.rb +59 -35
  213. data/lib/ddtrace/contrib/rails/integration.rb +12 -5
  214. data/lib/ddtrace/contrib/rails/log_injection.rb +81 -0
  215. data/lib/ddtrace/contrib/rails/middlewares.rb +7 -2
  216. data/lib/ddtrace/contrib/rails/patcher.rb +19 -8
  217. data/lib/ddtrace/contrib/rake/configuration/settings.rb +7 -3
  218. data/lib/ddtrace/contrib/rake/ext.rb +5 -2
  219. data/lib/ddtrace/contrib/rake/instrumentation.rb +6 -2
  220. data/lib/ddtrace/contrib/rake/integration.rb +8 -2
  221. data/lib/ddtrace/contrib/rake/patcher.rb +4 -10
  222. data/lib/ddtrace/contrib/redis/configuration/resolver.rb +36 -0
  223. data/lib/ddtrace/contrib/redis/configuration/settings.rb +7 -2
  224. data/lib/ddtrace/contrib/redis/ext.rb +5 -2
  225. data/lib/ddtrace/contrib/redis/integration.rb +9 -3
  226. data/lib/ddtrace/contrib/redis/patcher.rb +20 -17
  227. data/lib/ddtrace/contrib/redis/quantize.rb +1 -1
  228. data/lib/ddtrace/contrib/redis/vendor/resolver.rb +159 -0
  229. data/lib/ddtrace/contrib/resque/configuration/settings.rb +7 -2
  230. data/lib/ddtrace/contrib/resque/ext.rb +5 -2
  231. data/lib/ddtrace/contrib/resque/integration.rb +12 -2
  232. data/lib/ddtrace/contrib/resque/patcher.rb +4 -10
  233. data/lib/ddtrace/contrib/resque/resque_job.rb +6 -2
  234. data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +7 -2
  235. data/lib/ddtrace/contrib/rest_client/ext.rb +5 -2
  236. data/lib/ddtrace/contrib/rest_client/integration.rb +9 -2
  237. data/lib/ddtrace/contrib/rest_client/patcher.rb +5 -7
  238. data/lib/ddtrace/contrib/rest_client/request_patch.rb +2 -2
  239. data/lib/ddtrace/contrib/sequel/configuration/settings.rb +7 -2
  240. data/lib/ddtrace/contrib/sequel/database.rb +1 -1
  241. data/lib/ddtrace/contrib/sequel/ext.rb +5 -2
  242. data/lib/ddtrace/contrib/sequel/integration.rb +8 -2
  243. data/lib/ddtrace/contrib/sequel/patcher.rb +4 -10
  244. data/lib/ddtrace/contrib/sequel/utils.rb +19 -1
  245. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +7 -2
  246. data/lib/ddtrace/contrib/shoryuken/ext.rb +5 -2
  247. data/lib/ddtrace/contrib/shoryuken/integration.rb +11 -7
  248. data/lib/ddtrace/contrib/shoryuken/patcher.rb +4 -10
  249. data/lib/ddtrace/contrib/shoryuken/tracer.rb +4 -0
  250. data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +12 -2
  251. data/lib/ddtrace/contrib/sidekiq/ext.rb +8 -2
  252. data/lib/ddtrace/contrib/sidekiq/integration.rb +5 -3
  253. data/lib/ddtrace/contrib/sidekiq/patcher.rb +19 -18
  254. data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +12 -3
  255. data/lib/ddtrace/contrib/sidekiq/tracing.rb +19 -2
  256. data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +7 -2
  257. data/lib/ddtrace/contrib/sinatra/env.rb +25 -4
  258. data/lib/ddtrace/contrib/sinatra/ext.rb +11 -2
  259. data/lib/ddtrace/contrib/sinatra/integration.rb +5 -3
  260. data/lib/ddtrace/contrib/sinatra/patcher.rb +5 -10
  261. data/lib/ddtrace/contrib/sinatra/tracer.rb +79 -34
  262. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +48 -15
  263. data/lib/ddtrace/contrib/sneakers/configuration/settings.rb +32 -0
  264. data/lib/ddtrace/contrib/sneakers/ext.rb +22 -0
  265. data/lib/ddtrace/contrib/sneakers/integration.rb +41 -0
  266. data/lib/ddtrace/contrib/sneakers/patcher.rb +24 -0
  267. data/lib/ddtrace/contrib/sneakers/tracer.rb +58 -0
  268. data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +7 -2
  269. data/lib/ddtrace/contrib/sucker_punch/ext.rb +5 -2
  270. data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +14 -0
  271. data/lib/ddtrace/contrib/sucker_punch/integration.rb +5 -3
  272. data/lib/ddtrace/contrib/sucker_punch/patcher.rb +8 -14
  273. data/lib/ddtrace/correlation.rb +15 -5
  274. data/lib/ddtrace/diagnostics/environment_logger.rb +278 -0
  275. data/lib/ddtrace/diagnostics/health.rb +11 -8
  276. data/lib/ddtrace/encoding.rb +15 -11
  277. data/lib/ddtrace/environment.rb +21 -3
  278. data/lib/ddtrace/event.rb +52 -0
  279. data/lib/ddtrace/ext/analytics.rb +1 -0
  280. data/lib/ddtrace/ext/correlation.rb +11 -0
  281. data/lib/ddtrace/ext/diagnostics.rb +11 -0
  282. data/lib/ddtrace/ext/environment.rb +16 -0
  283. data/lib/ddtrace/ext/forced_tracing.rb +1 -1
  284. data/lib/ddtrace/ext/sampling.rb +16 -0
  285. data/lib/ddtrace/ext/transport.rb +1 -0
  286. data/lib/ddtrace/logger.rb +4 -3
  287. data/lib/ddtrace/metrics.rb +12 -5
  288. data/lib/ddtrace/monkey.rb +1 -1
  289. data/lib/ddtrace/opentelemetry/extensions.rb +13 -0
  290. data/lib/ddtrace/opentelemetry/span.rb +33 -0
  291. data/lib/ddtrace/opentracer/global_tracer.rb +1 -1
  292. data/lib/ddtrace/pin.rb +40 -16
  293. data/lib/ddtrace/pipeline.rb +1 -1
  294. data/lib/ddtrace/pipeline/span_filter.rb +15 -15
  295. data/lib/ddtrace/propagation/http_propagator.rb +2 -2
  296. data/lib/ddtrace/runtime/cgroup.rb +1 -1
  297. data/lib/ddtrace/runtime/container.rb +1 -1
  298. data/lib/ddtrace/runtime/metrics.rb +23 -6
  299. data/lib/ddtrace/sampler.rb +126 -29
  300. data/lib/ddtrace/sampling.rb +2 -0
  301. data/lib/ddtrace/sampling/matcher.rb +57 -0
  302. data/lib/ddtrace/sampling/rate_limiter.rb +127 -0
  303. data/lib/ddtrace/sampling/rule.rb +61 -0
  304. data/lib/ddtrace/sampling/rule_sampler.rb +125 -0
  305. data/lib/ddtrace/span.rb +54 -7
  306. data/lib/ddtrace/sync_writer.rb +13 -8
  307. data/lib/ddtrace/tracer.rb +72 -92
  308. data/lib/ddtrace/transport/http.rb +16 -1
  309. data/lib/ddtrace/transport/http/adapters/net.rb +8 -0
  310. data/lib/ddtrace/transport/http/adapters/test.rb +6 -0
  311. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +4 -0
  312. data/lib/ddtrace/transport/http/api/instance.rb +4 -0
  313. data/lib/ddtrace/transport/http/builder.rb +3 -5
  314. data/lib/ddtrace/transport/http/client.rb +7 -64
  315. data/lib/ddtrace/transport/http/response.rb +1 -1
  316. data/lib/ddtrace/transport/http/statistics.rb +1 -1
  317. data/lib/ddtrace/transport/http/traces.rb +10 -7
  318. data/lib/ddtrace/transport/io.rb +26 -0
  319. data/lib/ddtrace/transport/io/client.rb +76 -0
  320. data/lib/ddtrace/transport/io/response.rb +25 -0
  321. data/lib/ddtrace/transport/io/traces.rb +91 -0
  322. data/lib/ddtrace/transport/response.rb +11 -0
  323. data/lib/ddtrace/transport/statistics.rb +2 -2
  324. data/lib/ddtrace/transport/traces.rb +160 -10
  325. data/lib/ddtrace/utils.rb +1 -1
  326. data/lib/ddtrace/version.rb +2 -2
  327. data/lib/ddtrace/worker.rb +20 -0
  328. data/lib/ddtrace/workers.rb +5 -13
  329. data/lib/ddtrace/workers/async.rb +165 -0
  330. data/lib/ddtrace/workers/loop.rb +105 -0
  331. data/lib/ddtrace/workers/polling.rb +48 -0
  332. data/lib/ddtrace/workers/queue.rb +39 -0
  333. data/lib/ddtrace/workers/runtime_metrics.rb +47 -0
  334. data/lib/ddtrace/workers/trace_writer.rb +202 -0
  335. data/lib/ddtrace/writer.rb +56 -38
  336. metadata +185 -25
  337. data/lib/ddtrace/provider.rb +0 -21
@@ -0,0 +1,47 @@
1
+ require 'forwardable'
2
+
3
+ require 'ddtrace/runtime/metrics'
4
+
5
+ require 'ddtrace/worker'
6
+ require 'ddtrace/workers/polling'
7
+
8
+ module Datadog
9
+ module Workers
10
+ # Emits runtime metrics asynchronously on a timed loop
11
+ class RuntimeMetrics < Worker
12
+ extend Forwardable
13
+ include Workers::Polling
14
+
15
+ attr_reader \
16
+ :metrics
17
+
18
+ def initialize(options = {})
19
+ @metrics = options.fetch(:metrics, Runtime::Metrics.new)
20
+
21
+ # Workers::Async::Thread settings
22
+ self.fork_policy = options.fetch(:fork_policy, Workers::Async::Thread::FORK_POLICY_STOP)
23
+
24
+ # Workers::IntervalLoop settings
25
+ self.interval = options[:interval] if options.key?(:interval)
26
+ self.back_off_ratio = options[:back_off_ratio] if options.key?(:back_off_ratio)
27
+ self.back_off_max = options[:back_off_max] if options.key?(:back_off_max)
28
+
29
+ self.enabled = options.fetch(:enabled, false)
30
+ end
31
+
32
+ def perform
33
+ metrics.flush
34
+ true
35
+ end
36
+
37
+ def associate_with_span(*args)
38
+ # Start the worker
39
+ metrics.associate_with_span(*args).tap { perform }
40
+ end
41
+
42
+ def_delegators \
43
+ :metrics,
44
+ :register_service
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,202 @@
1
+ require 'ddtrace/logger'
2
+ require 'ddtrace/transport/http'
3
+
4
+ require 'ddtrace/event'
5
+ require 'ddtrace/worker'
6
+ require 'ddtrace/workers/polling'
7
+ require 'ddtrace/workers/queue'
8
+
9
+ module Datadog
10
+ module Workers
11
+ # Writes traces to transport synchronously
12
+ class TraceWriter < Worker
13
+ attr_reader \
14
+ :transport
15
+
16
+ def initialize(options = {})
17
+ transport_options = options.fetch(:transport_options, {})
18
+
19
+ if transport_options.is_a?(Proc)
20
+ transport_options = { on_build: transport_options }
21
+ end
22
+
23
+ transport_options[:hostname] = options[:hostname] if options.key?(:hostname)
24
+ transport_options[:port] = options[:port] if options.key?(:port)
25
+
26
+ @transport = options.fetch(:transport) do
27
+ Transport::HTTP.default(transport_options)
28
+ end
29
+ end
30
+
31
+ def perform(traces)
32
+ write_traces(traces)
33
+ end
34
+
35
+ def write(trace)
36
+ write_traces([trace])
37
+ end
38
+
39
+ def write_traces(traces)
40
+ traces = process_traces(traces)
41
+ flush_traces(traces)
42
+ rescue StandardError => e
43
+ Datadog.logger.error(
44
+ "Error while writing traces: dropped #{traces.length} items. Cause: #{e} Location: #{e.backtrace.first}"
45
+ )
46
+ end
47
+
48
+ def process_traces(traces)
49
+ # Run traces through the processing pipeline
50
+ traces = Pipeline.process!(traces)
51
+
52
+ # Inject hostname if configured to do so
53
+ inject_hostname!(traces) if Datadog.configuration.report_hostname
54
+
55
+ traces
56
+ end
57
+
58
+ def flush_traces(traces)
59
+ transport.send_traces(traces).tap do |response|
60
+ flush_completed.publish(response)
61
+ end
62
+ end
63
+
64
+ def inject_hostname!(traces)
65
+ traces.each do |trace|
66
+ next if trace.first.nil?
67
+
68
+ hostname = Datadog::Runtime::Socket.hostname
69
+ unless hostname.nil? || hostname.empty?
70
+ trace.first.set_tag(Ext::NET::TAG_HOSTNAME, hostname)
71
+ end
72
+ end
73
+ end
74
+
75
+ # TODO: Register `Datadog::Diagnostics::EnvironmentLogger.log!`
76
+ # TODO: as a flush_completed subscriber when the `TraceWriter`
77
+ # TODO: instantiation code is implemented.
78
+ def flush_completed
79
+ @flush_completed ||= FlushCompleted.new
80
+ end
81
+
82
+ # Flush completed event for worker
83
+ class FlushCompleted < Event
84
+ def initialize
85
+ super(:flush_completed)
86
+ end
87
+
88
+ def publish(response)
89
+ super(response)
90
+ end
91
+ end
92
+ end
93
+
94
+ # Writes traces to transport asynchronously,
95
+ # using a thread & buffer.
96
+ class AsyncTraceWriter < TraceWriter
97
+ include Workers::Queue
98
+ include Workers::Polling
99
+
100
+ DEFAULT_BUFFER_MAX_SIZE = 1000
101
+ FORK_POLICY_ASYNC = :async
102
+ FORK_POLICY_SYNC = :sync
103
+
104
+ attr_writer \
105
+ :async
106
+
107
+ def initialize(options = {})
108
+ # Workers::TraceWriter settings
109
+ super
110
+
111
+ # Workers::Polling settings
112
+ self.enabled = options.fetch(:enabled, true)
113
+
114
+ # Workers::Async::Thread settings
115
+ @async = true
116
+ self.fork_policy = options.fetch(:fork_policy, FORK_POLICY_ASYNC)
117
+
118
+ # Workers::IntervalLoop settings
119
+ self.loop_base_interval = options[:interval] if options.key?(:interval)
120
+ self.loop_back_off_ratio = options[:back_off_ratio] if options.key?(:back_off_ratio)
121
+ self.loop_back_off_max = options[:back_off_max] if options.key?(:back_off_max)
122
+
123
+ # Workers::Queue settings
124
+ @buffer_size = options.fetch(:buffer_size, DEFAULT_BUFFER_MAX_SIZE)
125
+ self.buffer = TraceBuffer.new(@buffer_size)
126
+ end
127
+
128
+ # NOTE: #perform is wrapped by other modules:
129
+ # Polling --> Async --> IntervalLoop --> AsyncTraceWriter --> TraceWriter
130
+ def perform(traces)
131
+ super(traces).tap do |responses|
132
+ loop_back_off! if responses.find(&:server_error?)
133
+ end
134
+ end
135
+
136
+ def stop(*args)
137
+ buffer.close if running?
138
+ super
139
+ end
140
+
141
+ def enqueue(trace)
142
+ buffer.push(trace)
143
+ end
144
+
145
+ def dequeue
146
+ # Wrap results in Array because they are
147
+ # splatted as args against TraceWriter#perform.
148
+ [buffer.pop]
149
+ end
150
+
151
+ def work_pending?
152
+ !buffer.empty?
153
+ end
154
+
155
+ def async?
156
+ @async == true
157
+ end
158
+
159
+ def fork_policy=(policy)
160
+ # Translate to Workers::Async::Thread policy
161
+ thread_fork_policy = case policy
162
+ when Workers::Async::Thread::FORK_POLICY_STOP
163
+ policy
164
+ when FORK_POLICY_SYNC
165
+ # Stop the async thread because the writer
166
+ # will bypass and run synchronously.
167
+ Workers::Async::Thread::FORK_POLICY_STOP
168
+ else
169
+ Workers::Async::Thread::FORK_POLICY_RESTART
170
+ end
171
+
172
+ # Update thread fork policy
173
+ super(thread_fork_policy)
174
+
175
+ # Update local policy
176
+ @writer_fork_policy = policy
177
+ end
178
+
179
+ def after_fork
180
+ # In multiprocess environments, forks will share the same buffer until its written to.
181
+ # A.K.A. copy-on-write. We don't want forks to write traces generated from another process.
182
+ # Instead, we reset it after the fork. (Make sure any enqueue operations happen after this.)
183
+ self.buffer = TraceBuffer.new(@buffer_size)
184
+
185
+ # Switch to synchronous mode if configured to do so.
186
+ # In some cases synchronous writing is preferred because the fork will be short lived.
187
+ @async = false if @writer_fork_policy == FORK_POLICY_SYNC
188
+ end
189
+
190
+ def write(trace)
191
+ # Start worker thread. If the process has forked, it will trigger #after_fork to
192
+ # reconfigure the worker accordingly.
193
+ # NOTE: It's important we do this before queuing or it will drop the current trace,
194
+ # because #after_fork resets the buffer.
195
+ perform
196
+
197
+ # Queue the trace if running asynchronously, otherwise short-circuit and write it directly.
198
+ async? ? enqueue(trace) : write_traces([trace])
199
+ end
200
+ end
201
+ end
202
+ end
@@ -4,15 +4,16 @@ require 'ddtrace/ext/net'
4
4
  require 'ddtrace/runtime/socket'
5
5
 
6
6
  require 'ddtrace/transport/http'
7
+ require 'ddtrace/transport/io'
7
8
  require 'ddtrace/encoding'
8
9
  require 'ddtrace/workers'
10
+ require 'ddtrace/diagnostics/environment_logger'
9
11
 
10
12
  module Datadog
11
13
  # Processor that sends traces and metadata to the agent
12
14
  class Writer
13
15
  attr_reader \
14
16
  :priority_sampler,
15
- :runtime_metrics,
16
17
  :transport,
17
18
  :worker
18
19
 
@@ -33,11 +34,6 @@ module Datadog
33
34
  Transport::HTTP.default(transport_options)
34
35
  end
35
36
 
36
- # Runtime metrics
37
- @runtime_metrics = options.fetch(:runtime_metrics) do
38
- Runtime::Metrics.new
39
- end
40
-
41
37
  # handles the thread creation after an eventual fork
42
38
  @mutex_after_fork = Mutex.new
43
39
  @pid = nil
@@ -48,29 +44,42 @@ module Datadog
48
44
  @worker = nil
49
45
  end
50
46
 
51
- # spawns a worker for spans; they share the same transport which is thread-safe
52
47
  def start
53
- @pid = Process.pid
48
+ @mutex_after_fork.synchronize do
49
+ pid = Process.pid
50
+ return if @worker && pid == @pid
51
+ @pid = pid
52
+ start_worker
53
+ true
54
+ end
55
+ end
56
+
57
+ # spawns a worker for spans; they share the same transport which is thread-safe
58
+ def start_worker
54
59
  @trace_handler = ->(items, transport) { send_spans(items, transport) }
55
- @runtime_metrics_handler = -> { send_runtime_metrics }
56
60
  @worker = Datadog::Workers::AsyncTransport.new(
57
61
  transport: @transport,
58
62
  buffer_size: @buff_size,
59
63
  on_trace: @trace_handler,
60
- on_runtime_metrics: @runtime_metrics_handler,
61
64
  interval: @flush_interval
62
65
  )
63
66
 
64
- @worker.start()
67
+ @worker.start
65
68
  end
66
69
 
67
- # stops worker for spans.
68
70
  def stop
69
- return if worker.nil?
71
+ @mutex_after_fork.synchronize { stop_worker }
72
+ end
73
+
74
+ def stop_worker
75
+ return if @worker.nil?
70
76
  @worker.stop
71
77
  @worker = nil
78
+ true
72
79
  end
73
80
 
81
+ private :start_worker, :stop_worker
82
+
74
83
  # flush spans to the trace-agent, handles spans only
75
84
  def send_spans(traces, transport)
76
85
  return true if traces.empty?
@@ -78,33 +87,28 @@ module Datadog
78
87
  # Inject hostname if configured to do so
79
88
  inject_hostname!(traces) if Datadog.configuration.report_hostname
80
89
 
81
- # Send traces an get a response.
82
- response = transport.send_traces(traces)
90
+ # Send traces and get responses
91
+ responses = transport.send_traces(traces)
83
92
 
84
- unless response.internal_error?
85
- @traces_flushed += traces.length unless response.server_error?
86
-
87
- # Update priority sampler
88
- unless priority_sampler.nil? || response.service_rates.nil?
89
- priority_sampler.update(response.service_rates)
90
- end
93
+ # Tally up successful flushes
94
+ responses.reject { |x| x.internal_error? || x.server_error? }.each do |response|
95
+ @traces_flushed += response.trace_count
91
96
  end
92
97
 
93
- # Return if server error occurred.
94
- !response.server_error?
95
- end
98
+ # Update priority sampler
99
+ update_priority_sampler(responses.last)
96
100
 
97
- def send_runtime_metrics
98
- return unless Datadog.configuration.runtime_metrics_enabled
101
+ record_environment_information!(responses)
99
102
 
100
- runtime_metrics.flush
103
+ # Return if server error occurred.
104
+ !responses.find(&:server_error?)
101
105
  end
102
106
 
103
107
  # enqueue the trace for submission to the API
104
108
  def write(trace, services = nil)
105
109
  unless services.nil?
106
110
  Datadog::Patcher.do_once('Writer#write') do
107
- Datadog::Tracer.log.warn(%(
111
+ Datadog.logger.warn(%(
108
112
  write: Writing services has been deprecated and no longer need to be provided.
109
113
  write(traces, services) can be updated to write(traces)
110
114
  ))
@@ -119,18 +123,22 @@ module Datadog
119
123
  #
120
124
  # This check ensures that if a process doesn't own the current +Writer+, async workers
121
125
  # will be initialized again (but only once for each process).
122
- pid = Process.pid
123
- if pid != @pid # avoid using Mutex when pids are equal
124
- @mutex_after_fork.synchronize do
125
- # we should start threads because the worker doesn't own this
126
- start if pid != @pid
127
- end
128
- end
126
+ start if @worker.nil? || @pid != Process.pid
129
127
 
128
+ # TODO: Remove this, and have the tracer pump traces directly to runtime metrics
129
+ # instead of working through the trace writer.
130
130
  # Associate root span with runtime metrics
131
- runtime_metrics.associate_with_span(trace.first) unless trace.empty?
131
+ if Datadog.configuration.runtime_metrics.enabled && !trace.empty?
132
+ Datadog.runtime_metrics.associate_with_span(trace.first)
133
+ end
134
+
135
+ worker_local = @worker
132
136
 
133
- @worker.enqueue_trace(trace)
137
+ if worker_local
138
+ worker_local.enqueue_trace(trace)
139
+ else
140
+ Datadog.logger.debug('Writer either failed to start or was stopped before #write could complete')
141
+ end
134
142
  end
135
143
 
136
144
  # stats returns a dictionary of stats about the writer.
@@ -153,5 +161,15 @@ module Datadog
153
161
  end
154
162
  end
155
163
  end
164
+
165
+ def update_priority_sampler(response)
166
+ return unless response && !response.internal_error? && priority_sampler && response.service_rates
167
+
168
+ priority_sampler.update(response.service_rates)
169
+ end
170
+
171
+ def record_environment_information!(responses)
172
+ Diagnostics::EnvironmentLogger.log!(responses)
173
+ end
156
174
  end
157
175
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ls-trace
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - lightstep
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-05-12 00:00:00.000000000 Z
11
+ date: 2020-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack
@@ -122,6 +122,34 @@ dependencies:
122
122
  - - '='
123
123
  - !ruby/object:Gem::Version
124
124
  version: 5.10.1
125
+ - !ruby/object:Gem::Dependency
126
+ name: minitest-around
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - '='
130
+ - !ruby/object:Gem::Version
131
+ version: 0.5.0
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '='
137
+ - !ruby/object:Gem::Version
138
+ version: 0.5.0
139
+ - !ruby/object:Gem::Dependency
140
+ name: minitest-stub_any_instance
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - '='
144
+ - !ruby/object:Gem::Version
145
+ version: 1.0.2
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - '='
151
+ - !ruby/object:Gem::Version
152
+ version: 1.0.2
125
153
  - !ruby/object:Gem::Dependency
126
154
  name: appraisal
127
155
  requirement: !ruby/object:Gem::Requirement
@@ -178,20 +206,6 @@ dependencies:
178
206
  - - ">="
179
207
  - !ruby/object:Gem::Version
180
208
  version: '0'
181
- - !ruby/object:Gem::Dependency
182
- name: ruby-prof
183
- requirement: !ruby/object:Gem::Requirement
184
- requirements:
185
- - - ">="
186
- - !ruby/object:Gem::Version
187
- version: '0'
188
- type: :development
189
- prerelease: false
190
- version_requirements: !ruby/object:Gem::Requirement
191
- requirements:
192
- - - ">="
193
- - !ruby/object:Gem::Version
194
- version: '0'
195
209
  - !ruby/object:Gem::Dependency
196
210
  name: sqlite3
197
211
  requirement: !ruby/object:Gem::Requirement
@@ -234,6 +248,48 @@ dependencies:
234
248
  - - "~>"
235
249
  - !ruby/object:Gem::Version
236
250
  version: 2.4.0
251
+ - !ruby/object:Gem::Dependency
252
+ name: benchmark-ips
253
+ requirement: !ruby/object:Gem::Requirement
254
+ requirements:
255
+ - - "~>"
256
+ - !ruby/object:Gem::Version
257
+ version: '2.8'
258
+ type: :development
259
+ prerelease: false
260
+ version_requirements: !ruby/object:Gem::Requirement
261
+ requirements:
262
+ - - "~>"
263
+ - !ruby/object:Gem::Version
264
+ version: '2.8'
265
+ - !ruby/object:Gem::Dependency
266
+ name: benchmark-memory
267
+ requirement: !ruby/object:Gem::Requirement
268
+ requirements:
269
+ - - "~>"
270
+ - !ruby/object:Gem::Version
271
+ version: '0.1'
272
+ type: :development
273
+ prerelease: false
274
+ version_requirements: !ruby/object:Gem::Requirement
275
+ requirements:
276
+ - - "~>"
277
+ - !ruby/object:Gem::Version
278
+ version: '0.1'
279
+ - !ruby/object:Gem::Dependency
280
+ name: memory_profiler
281
+ requirement: !ruby/object:Gem::Requirement
282
+ requirements:
283
+ - - "~>"
284
+ - !ruby/object:Gem::Version
285
+ version: '0.9'
286
+ type: :development
287
+ prerelease: false
288
+ version_requirements: !ruby/object:Gem::Requirement
289
+ requirements:
290
+ - - "~>"
291
+ - !ruby/object:Gem::Version
292
+ version: '0.9'
237
293
  - !ruby/object:Gem::Dependency
238
294
  name: redcarpet
239
295
  requirement: !ruby/object:Gem::Requirement
@@ -276,20 +332,34 @@ dependencies:
276
332
  - - "~>"
277
333
  - !ruby/object:Gem::Version
278
334
  version: 0.4.9.2
335
+ - !ruby/object:Gem::Dependency
336
+ name: simplecov
337
+ requirement: !ruby/object:Gem::Requirement
338
+ requirements:
339
+ - - "~>"
340
+ - !ruby/object:Gem::Version
341
+ version: '0.17'
342
+ type: :development
343
+ prerelease: false
344
+ version_requirements: !ruby/object:Gem::Requirement
345
+ requirements:
346
+ - - "~>"
347
+ - !ruby/object:Gem::Version
348
+ version: '0.17'
279
349
  - !ruby/object:Gem::Dependency
280
350
  name: warning
281
351
  requirement: !ruby/object:Gem::Requirement
282
352
  requirements:
283
- - - ">="
353
+ - - "~>"
284
354
  - !ruby/object:Gem::Version
285
- version: '0'
355
+ version: '1'
286
356
  type: :development
287
357
  prerelease: false
288
358
  version_requirements: !ruby/object:Gem::Requirement
289
359
  requirements:
290
- - - ">="
360
+ - - "~>"
291
361
  - !ruby/object:Gem::Version
292
- version: '0'
362
+ version: '1'
293
363
  description: |
294
364
  ls-trace is LightStep's fork of Datadog’s tracing client for Ruby. It
295
365
  is used to trace requests as they flow across web servers, databases and
@@ -309,18 +379,25 @@ files:
309
379
  - ".circleci/images/primary/Dockerfile-2.4.6"
310
380
  - ".circleci/images/primary/Dockerfile-2.5.6"
311
381
  - ".circleci/images/primary/Dockerfile-2.6.4"
382
+ - ".circleci/images/primary/Dockerfile-2.7.0"
383
+ - ".circleci/images/primary/Dockerfile-jruby-9.2"
312
384
  - ".dockerignore"
313
385
  - ".env"
314
386
  - ".github/CODEOWNERS"
315
387
  - ".gitignore"
388
+ - ".gitlab-ci.yml"
316
389
  - ".rspec"
317
390
  - ".rubocop.yml"
391
+ - ".simplecov"
318
392
  - ".yardopts"
319
393
  - Appraisals
320
394
  - CHANGELOG.md
321
395
  - CONTRIBUTING.md
322
396
  - Gemfile
323
397
  - LICENSE
398
+ - LICENSE.Apache
399
+ - LICENSE.BSD3
400
+ - NOTICE
324
401
  - README.md
325
402
  - Rakefile
326
403
  - benchmarks/postgres_database.yml
@@ -336,8 +413,10 @@ files:
336
413
  - lib/ddtrace/augmentation/method_wrapping.rb
337
414
  - lib/ddtrace/augmentation/shim.rb
338
415
  - lib/ddtrace/buffer.rb
416
+ - lib/ddtrace/chunker.rb
339
417
  - lib/ddtrace/configuration.rb
340
418
  - lib/ddtrace/configuration/base.rb
419
+ - lib/ddtrace/configuration/components.rb
341
420
  - lib/ddtrace/configuration/dependency_resolver.rb
342
421
  - lib/ddtrace/configuration/option.rb
343
422
  - lib/ddtrace/configuration/option_definition.rb
@@ -348,6 +427,17 @@ files:
348
427
  - lib/ddtrace/configuration/settings.rb
349
428
  - lib/ddtrace/context.rb
350
429
  - lib/ddtrace/context_flush.rb
430
+ - lib/ddtrace/context_provider.rb
431
+ - lib/ddtrace/contrib/action_cable/configuration/settings.rb
432
+ - lib/ddtrace/contrib/action_cable/event.rb
433
+ - lib/ddtrace/contrib/action_cable/events.rb
434
+ - lib/ddtrace/contrib/action_cable/events/broadcast.rb
435
+ - lib/ddtrace/contrib/action_cable/events/perform_action.rb
436
+ - lib/ddtrace/contrib/action_cable/events/transmit.rb
437
+ - lib/ddtrace/contrib/action_cable/ext.rb
438
+ - lib/ddtrace/contrib/action_cable/instrumentation.rb
439
+ - lib/ddtrace/contrib/action_cable/integration.rb
440
+ - lib/ddtrace/contrib/action_cable/patcher.rb
351
441
  - lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb
352
442
  - lib/ddtrace/contrib/action_pack/action_controller/patcher.rb
353
443
  - lib/ddtrace/contrib/action_pack/configuration/settings.rb
@@ -356,6 +446,10 @@ files:
356
446
  - lib/ddtrace/contrib/action_pack/patcher.rb
357
447
  - lib/ddtrace/contrib/action_pack/utils.rb
358
448
  - lib/ddtrace/contrib/action_view/configuration/settings.rb
449
+ - lib/ddtrace/contrib/action_view/event.rb
450
+ - lib/ddtrace/contrib/action_view/events.rb
451
+ - lib/ddtrace/contrib/action_view/events/render_partial.rb
452
+ - lib/ddtrace/contrib/action_view/events/render_template.rb
359
453
  - lib/ddtrace/contrib/action_view/ext.rb
360
454
  - lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb
361
455
  - lib/ddtrace/contrib/action_view/instrumentation/template_renderer.rb
@@ -406,6 +500,7 @@ files:
406
500
  - lib/ddtrace/contrib/concurrent_ruby/patcher.rb
407
501
  - lib/ddtrace/contrib/configurable.rb
408
502
  - lib/ddtrace/contrib/configuration/resolver.rb
503
+ - lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb
409
504
  - lib/ddtrace/contrib/configuration/settings.rb
410
505
  - lib/ddtrace/contrib/dalli/configuration/settings.rb
411
506
  - lib/ddtrace/contrib/dalli/ext.rb
@@ -436,6 +531,7 @@ files:
436
531
  - lib/ddtrace/contrib/excon/patcher.rb
437
532
  - lib/ddtrace/contrib/extensions.rb
438
533
  - lib/ddtrace/contrib/faraday/configuration/settings.rb
534
+ - lib/ddtrace/contrib/faraday/connection.rb
439
535
  - lib/ddtrace/contrib/faraday/ext.rb
440
536
  - lib/ddtrace/contrib/faraday/integration.rb
441
537
  - lib/ddtrace/contrib/faraday/middleware.rb
@@ -465,7 +561,30 @@ files:
465
561
  - lib/ddtrace/contrib/http/instrumentation.rb
466
562
  - lib/ddtrace/contrib/http/integration.rb
467
563
  - lib/ddtrace/contrib/http/patcher.rb
564
+ - lib/ddtrace/contrib/http_annotation_helper.rb
565
+ - lib/ddtrace/contrib/httprb/configuration/settings.rb
566
+ - lib/ddtrace/contrib/httprb/ext.rb
567
+ - lib/ddtrace/contrib/httprb/instrumentation.rb
568
+ - lib/ddtrace/contrib/httprb/integration.rb
569
+ - lib/ddtrace/contrib/httprb/patcher.rb
468
570
  - lib/ddtrace/contrib/integration.rb
571
+ - lib/ddtrace/contrib/kafka/configuration/settings.rb
572
+ - lib/ddtrace/contrib/kafka/consumer_event.rb
573
+ - lib/ddtrace/contrib/kafka/consumer_group_event.rb
574
+ - lib/ddtrace/contrib/kafka/event.rb
575
+ - lib/ddtrace/contrib/kafka/events.rb
576
+ - lib/ddtrace/contrib/kafka/events/connection/request.rb
577
+ - lib/ddtrace/contrib/kafka/events/consumer/process_batch.rb
578
+ - lib/ddtrace/contrib/kafka/events/consumer/process_message.rb
579
+ - lib/ddtrace/contrib/kafka/events/consumer_group/heartbeat.rb
580
+ - lib/ddtrace/contrib/kafka/events/consumer_group/join_group.rb
581
+ - lib/ddtrace/contrib/kafka/events/consumer_group/leave_group.rb
582
+ - lib/ddtrace/contrib/kafka/events/consumer_group/sync_group.rb
583
+ - lib/ddtrace/contrib/kafka/events/produce_operation/send_messages.rb
584
+ - lib/ddtrace/contrib/kafka/events/producer/deliver_messages.rb
585
+ - lib/ddtrace/contrib/kafka/ext.rb
586
+ - lib/ddtrace/contrib/kafka/integration.rb
587
+ - lib/ddtrace/contrib/kafka/patcher.rb
469
588
  - lib/ddtrace/contrib/mongodb/configuration/settings.rb
470
589
  - lib/ddtrace/contrib/mongodb/ext.rb
471
590
  - lib/ddtrace/contrib/mongodb/instrumentation.rb
@@ -480,10 +599,21 @@ files:
480
599
  - lib/ddtrace/contrib/mysql2/patcher.rb
481
600
  - lib/ddtrace/contrib/patchable.rb
482
601
  - lib/ddtrace/contrib/patcher.rb
602
+ - lib/ddtrace/contrib/presto/configuration/settings.rb
603
+ - lib/ddtrace/contrib/presto/ext.rb
604
+ - lib/ddtrace/contrib/presto/instrumentation.rb
605
+ - lib/ddtrace/contrib/presto/integration.rb
606
+ - lib/ddtrace/contrib/presto/patcher.rb
607
+ - lib/ddtrace/contrib/que/configuration/settings.rb
608
+ - lib/ddtrace/contrib/que/ext.rb
609
+ - lib/ddtrace/contrib/que/integration.rb
610
+ - lib/ddtrace/contrib/que/patcher.rb
611
+ - lib/ddtrace/contrib/que/tracer.rb
483
612
  - lib/ddtrace/contrib/racecar/configuration/settings.rb
484
613
  - lib/ddtrace/contrib/racecar/event.rb
485
614
  - lib/ddtrace/contrib/racecar/events.rb
486
615
  - lib/ddtrace/contrib/racecar/events/batch.rb
616
+ - lib/ddtrace/contrib/racecar/events/consume.rb
487
617
  - lib/ddtrace/contrib/racecar/events/message.rb
488
618
  - lib/ddtrace/contrib/racecar/ext.rb
489
619
  - lib/ddtrace/contrib/racecar/integration.rb
@@ -498,6 +628,7 @@ files:
498
628
  - lib/ddtrace/contrib/rails/ext.rb
499
629
  - lib/ddtrace/contrib/rails/framework.rb
500
630
  - lib/ddtrace/contrib/rails/integration.rb
631
+ - lib/ddtrace/contrib/rails/log_injection.rb
501
632
  - lib/ddtrace/contrib/rails/middlewares.rb
502
633
  - lib/ddtrace/contrib/rails/patcher.rb
503
634
  - lib/ddtrace/contrib/rails/railtie.rb
@@ -507,12 +638,14 @@ files:
507
638
  - lib/ddtrace/contrib/rake/instrumentation.rb
508
639
  - lib/ddtrace/contrib/rake/integration.rb
509
640
  - lib/ddtrace/contrib/rake/patcher.rb
641
+ - lib/ddtrace/contrib/redis/configuration/resolver.rb
510
642
  - lib/ddtrace/contrib/redis/configuration/settings.rb
511
643
  - lib/ddtrace/contrib/redis/ext.rb
512
644
  - lib/ddtrace/contrib/redis/integration.rb
513
645
  - lib/ddtrace/contrib/redis/patcher.rb
514
646
  - lib/ddtrace/contrib/redis/quantize.rb
515
647
  - lib/ddtrace/contrib/redis/tags.rb
648
+ - lib/ddtrace/contrib/redis/vendor/resolver.rb
516
649
  - lib/ddtrace/contrib/registerable.rb
517
650
  - lib/ddtrace/contrib/registry.rb
518
651
  - lib/ddtrace/contrib/resque/configuration/settings.rb
@@ -552,6 +685,11 @@ files:
552
685
  - lib/ddtrace/contrib/sinatra/patcher.rb
553
686
  - lib/ddtrace/contrib/sinatra/tracer.rb
554
687
  - lib/ddtrace/contrib/sinatra/tracer_middleware.rb
688
+ - lib/ddtrace/contrib/sneakers/configuration/settings.rb
689
+ - lib/ddtrace/contrib/sneakers/ext.rb
690
+ - lib/ddtrace/contrib/sneakers/integration.rb
691
+ - lib/ddtrace/contrib/sneakers/patcher.rb
692
+ - lib/ddtrace/contrib/sneakers/tracer.rb
555
693
  - lib/ddtrace/contrib/sucker_punch/configuration/settings.rb
556
694
  - lib/ddtrace/contrib/sucker_punch/exception_handler.rb
557
695
  - lib/ddtrace/contrib/sucker_punch/ext.rb
@@ -559,6 +697,7 @@ files:
559
697
  - lib/ddtrace/contrib/sucker_punch/integration.rb
560
698
  - lib/ddtrace/contrib/sucker_punch/patcher.rb
561
699
  - lib/ddtrace/correlation.rb
700
+ - lib/ddtrace/diagnostics/environment_logger.rb
562
701
  - lib/ddtrace/diagnostics/health.rb
563
702
  - lib/ddtrace/distributed_tracing/headers/b3.rb
564
703
  - lib/ddtrace/distributed_tracing/headers/b3_single.rb
@@ -568,10 +707,13 @@ files:
568
707
  - lib/ddtrace/encoding.rb
569
708
  - lib/ddtrace/environment.rb
570
709
  - lib/ddtrace/error.rb
710
+ - lib/ddtrace/event.rb
571
711
  - lib/ddtrace/ext/analytics.rb
572
712
  - lib/ddtrace/ext/app_types.rb
713
+ - lib/ddtrace/ext/correlation.rb
573
714
  - lib/ddtrace/ext/diagnostics.rb
574
715
  - lib/ddtrace/ext/distributed.rb
716
+ - lib/ddtrace/ext/environment.rb
575
717
  - lib/ddtrace/ext/errors.rb
576
718
  - lib/ddtrace/ext/forced_tracing.rb
577
719
  - lib/ddtrace/ext/http.rb
@@ -580,12 +722,15 @@ files:
580
722
  - lib/ddtrace/ext/net.rb
581
723
  - lib/ddtrace/ext/priority.rb
582
724
  - lib/ddtrace/ext/runtime.rb
725
+ - lib/ddtrace/ext/sampling.rb
583
726
  - lib/ddtrace/ext/sql.rb
584
727
  - lib/ddtrace/ext/transport.rb
585
728
  - lib/ddtrace/forced_tracing.rb
586
729
  - lib/ddtrace/logger.rb
587
730
  - lib/ddtrace/metrics.rb
588
731
  - lib/ddtrace/monkey.rb
732
+ - lib/ddtrace/opentelemetry/extensions.rb
733
+ - lib/ddtrace/opentelemetry/span.rb
589
734
  - lib/ddtrace/opentracer.rb
590
735
  - lib/ddtrace/opentracer/binary_propagator.rb
591
736
  - lib/ddtrace/opentracer/carrier.rb
@@ -609,7 +754,6 @@ files:
609
754
  - lib/ddtrace/pipeline/span_processor.rb
610
755
  - lib/ddtrace/propagation/grpc_propagator.rb
611
756
  - lib/ddtrace/propagation/http_propagator.rb
612
- - lib/ddtrace/provider.rb
613
757
  - lib/ddtrace/quantization/hash.rb
614
758
  - lib/ddtrace/quantization/http.rb
615
759
  - lib/ddtrace/runtime/cgroup.rb
@@ -622,6 +766,11 @@ files:
622
766
  - lib/ddtrace/runtime/socket.rb
623
767
  - lib/ddtrace/runtime/thread_count.rb
624
768
  - lib/ddtrace/sampler.rb
769
+ - lib/ddtrace/sampling.rb
770
+ - lib/ddtrace/sampling/matcher.rb
771
+ - lib/ddtrace/sampling/rate_limiter.rb
772
+ - lib/ddtrace/sampling/rule.rb
773
+ - lib/ddtrace/sampling/rule_sampler.rb
625
774
  - lib/ddtrace/span.rb
626
775
  - lib/ddtrace/sync_writer.rb
627
776
  - lib/ddtrace/tracer.rb
@@ -642,6 +791,10 @@ files:
642
791
  - lib/ddtrace/transport/http/response.rb
643
792
  - lib/ddtrace/transport/http/statistics.rb
644
793
  - lib/ddtrace/transport/http/traces.rb
794
+ - lib/ddtrace/transport/io.rb
795
+ - lib/ddtrace/transport/io/client.rb
796
+ - lib/ddtrace/transport/io/response.rb
797
+ - lib/ddtrace/transport/io/traces.rb
645
798
  - lib/ddtrace/transport/parcel.rb
646
799
  - lib/ddtrace/transport/request.rb
647
800
  - lib/ddtrace/transport/response.rb
@@ -652,7 +805,14 @@ files:
652
805
  - lib/ddtrace/utils/time.rb
653
806
  - lib/ddtrace/vendor/active_record/connection_specification.rb
654
807
  - lib/ddtrace/version.rb
808
+ - lib/ddtrace/worker.rb
655
809
  - lib/ddtrace/workers.rb
810
+ - lib/ddtrace/workers/async.rb
811
+ - lib/ddtrace/workers/loop.rb
812
+ - lib/ddtrace/workers/polling.rb
813
+ - lib/ddtrace/workers/queue.rb
814
+ - lib/ddtrace/workers/runtime_metrics.rb
815
+ - lib/ddtrace/workers/trace_writer.rb
656
816
  - lib/ddtrace/writer.rb
657
817
  - lib/ls-trace.rb
658
818
  - tasks/release_gem.rake
@@ -661,7 +821,7 @@ licenses:
661
821
  - BSD-3-Clause
662
822
  metadata:
663
823
  allowed_push_host: https://rubygems.org
664
- post_install_message:
824
+ post_install_message:
665
825
  rdoc_options: []
666
826
  require_paths:
667
827
  - lib
@@ -674,10 +834,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
674
834
  requirements:
675
835
  - - ">="
676
836
  - !ruby/object:Gem::Version
677
- version: '0'
837
+ version: 2.0.0
678
838
  requirements: []
679
839
  rubygems_version: 3.0.3
680
- signing_key:
840
+ signing_key:
681
841
  specification_version: 4
682
842
  summary: LightStep fork of dd-trace for tracing code for your Ruby applications
683
843
  test_files: []