ls-trace 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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: []