ddtrace 0.44.0 → 0.48.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (386) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +183 -15
  3. data/.circleci/images/primary/Dockerfile-2.0.0 +11 -1
  4. data/.circleci/images/primary/Dockerfile-2.1.10 +11 -1
  5. data/.circleci/images/primary/Dockerfile-2.2.10 +11 -1
  6. data/.circleci/images/primary/Dockerfile-2.3.8 +10 -0
  7. data/.circleci/images/primary/Dockerfile-2.4.6 +10 -0
  8. data/.circleci/images/primary/Dockerfile-2.5.6 +10 -0
  9. data/.circleci/images/primary/Dockerfile-2.6.4 +10 -0
  10. data/.circleci/images/primary/Dockerfile-2.7.0 +10 -0
  11. data/.circleci/images/primary/Dockerfile-jruby-9.2-latest +88 -0
  12. data/.circleci/images/primary/{Dockerfile-jruby-9.2 → Dockerfile-jruby-9.2.0.0} +1 -5
  13. data/.circleci/images/primary/Dockerfile-truffleruby-21.0.0 +73 -0
  14. data/.github/workflows/create-next-milestone.yml +2 -2
  15. data/.gitlab-ci.yml +18 -18
  16. data/.rubocop.yml +269 -7
  17. data/.rubocop_todo.yml +438 -0
  18. data/.simplecov +6 -0
  19. data/Appraisals +87 -9
  20. data/CHANGELOG.md +238 -1
  21. data/Gemfile +63 -3
  22. data/LICENSE-3rdparty.csv +2 -0
  23. data/README.md +1 -0
  24. data/Rakefile +65 -25
  25. data/bin/ddtracerb +15 -0
  26. data/ddtrace.gemspec +9 -36
  27. data/docker-compose.yml +75 -7
  28. data/docs/DevelopmentGuide.md +28 -0
  29. data/docs/GettingStarted.md +162 -68
  30. data/docs/ProfilingDevelopment.md +88 -0
  31. data/integration/README.md +67 -0
  32. data/integration/apps/rack/.dockerignore +1 -0
  33. data/integration/apps/rack/.envrc.sample +1 -0
  34. data/integration/apps/rack/.gitignore +4 -0
  35. data/integration/apps/rack/.rspec +1 -0
  36. data/integration/apps/rack/Dockerfile +28 -0
  37. data/integration/apps/rack/Dockerfile-ci +11 -0
  38. data/integration/apps/rack/Gemfile +24 -0
  39. data/integration/apps/rack/README.md +93 -0
  40. data/integration/apps/rack/app/acme.rb +80 -0
  41. data/integration/apps/rack/app/datadog.rb +17 -0
  42. data/integration/apps/rack/bin/run +22 -0
  43. data/integration/apps/rack/bin/setup +17 -0
  44. data/integration/apps/rack/bin/test +24 -0
  45. data/integration/apps/rack/config.ru +6 -0
  46. data/integration/apps/rack/config/puma.rb +14 -0
  47. data/integration/apps/rack/config/unicorn.rb +23 -0
  48. data/integration/apps/rack/docker-compose.ci.yml +62 -0
  49. data/integration/apps/rack/docker-compose.yml +78 -0
  50. data/integration/apps/rack/script/build-images +38 -0
  51. data/integration/apps/rack/script/ci +50 -0
  52. data/integration/apps/rack/spec/integration/basic_spec.rb +10 -0
  53. data/integration/apps/rack/spec/spec_helper.rb +16 -0
  54. data/integration/apps/rack/spec/support/integration_helper.rb +22 -0
  55. data/integration/apps/rails-five/.dockerignore +1 -0
  56. data/integration/apps/rails-five/.env +3 -0
  57. data/integration/apps/rails-five/.envrc.sample +1 -0
  58. data/integration/apps/rails-five/.gitignore +30 -0
  59. data/integration/apps/rails-five/Dockerfile +25 -0
  60. data/integration/apps/rails-five/Dockerfile-ci +11 -0
  61. data/integration/apps/rails-five/Gemfile +104 -0
  62. data/integration/apps/rails-five/README.md +94 -0
  63. data/integration/apps/rails-five/Rakefile +6 -0
  64. data/integration/apps/rails-five/app/channels/application_cable/channel.rb +4 -0
  65. data/integration/apps/rails-five/app/channels/application_cable/connection.rb +4 -0
  66. data/integration/apps/rails-five/app/controllers/application_controller.rb +2 -0
  67. data/integration/apps/rails-five/app/controllers/basic_controller.rb +36 -0
  68. data/integration/apps/rails-five/app/controllers/concerns/.keep +0 -0
  69. data/integration/apps/rails-five/app/controllers/health_controller.rb +9 -0
  70. data/integration/apps/rails-five/app/controllers/jobs_controller.rb +12 -0
  71. data/integration/apps/rails-five/app/jobs/application_job.rb +2 -0
  72. data/integration/apps/rails-five/app/jobs/test_job.rb +12 -0
  73. data/integration/apps/rails-five/app/mailers/application_mailer.rb +4 -0
  74. data/integration/apps/rails-five/app/models/application_record.rb +3 -0
  75. data/integration/apps/rails-five/app/models/concerns/.keep +0 -0
  76. data/integration/apps/rails-five/app/models/test.rb +2 -0
  77. data/integration/apps/rails-five/app/views/layouts/mailer.html.erb +13 -0
  78. data/integration/apps/rails-five/app/views/layouts/mailer.text.erb +1 -0
  79. data/integration/apps/rails-five/bin/bundle +3 -0
  80. data/integration/apps/rails-five/bin/rails +9 -0
  81. data/integration/apps/rails-five/bin/rake +9 -0
  82. data/integration/apps/rails-five/bin/run +24 -0
  83. data/integration/apps/rails-five/bin/setup +27 -0
  84. data/integration/apps/rails-five/bin/spring +17 -0
  85. data/integration/apps/rails-five/bin/test +21 -0
  86. data/integration/apps/rails-five/bin/update +28 -0
  87. data/integration/apps/rails-five/config.ru +5 -0
  88. data/integration/apps/rails-five/config/application.rb +97 -0
  89. data/integration/apps/rails-five/config/boot.rb +4 -0
  90. data/integration/apps/rails-five/config/cable.yml +10 -0
  91. data/integration/apps/rails-five/config/credentials.yml.enc +1 -0
  92. data/integration/apps/rails-five/config/database.yml +28 -0
  93. data/integration/apps/rails-five/config/environment.rb +5 -0
  94. data/integration/apps/rails-five/config/environments/development.rb +51 -0
  95. data/integration/apps/rails-five/config/environments/production.rb +82 -0
  96. data/integration/apps/rails-five/config/environments/test.rb +43 -0
  97. data/integration/apps/rails-five/config/initializers/datadog.rb +18 -0
  98. data/integration/apps/rails-five/config/initializers/filter_parameter_logging.rb +4 -0
  99. data/integration/apps/rails-five/config/initializers/resque.rb +4 -0
  100. data/integration/apps/rails-five/config/initializers/rollbar.rb +5 -0
  101. data/integration/apps/rails-five/config/initializers/wrap_parameters.rb +14 -0
  102. data/integration/apps/rails-five/config/locales/en.yml +33 -0
  103. data/integration/apps/rails-five/config/puma.rb +24 -0
  104. data/integration/apps/rails-five/config/routes.rb +11 -0
  105. data/integration/apps/rails-five/config/spring.rb +6 -0
  106. data/integration/apps/rails-five/config/unicorn.rb +29 -0
  107. data/integration/apps/rails-five/db/migrate/20190927215052_create_tests.rb +11 -0
  108. data/integration/apps/rails-five/db/schema.rb +23 -0
  109. data/integration/apps/rails-five/db/seeds.rb +7 -0
  110. data/integration/apps/rails-five/docker-compose.ci.yml +98 -0
  111. data/integration/apps/rails-five/docker-compose.yml +100 -0
  112. data/integration/apps/rails-five/lib/tasks/.keep +0 -0
  113. data/integration/apps/rails-five/log/.keep +0 -0
  114. data/integration/apps/rails-five/public/robots.txt +1 -0
  115. data/integration/apps/rails-five/script/build-images +35 -0
  116. data/integration/apps/rails-five/script/ci +50 -0
  117. data/integration/apps/rails-five/spec/integration/basic_spec.rb +10 -0
  118. data/integration/apps/rails-five/spec/spec_helper.rb +16 -0
  119. data/integration/apps/rails-five/spec/support/integration_helper.rb +22 -0
  120. data/integration/apps/rails-five/storage/.keep +0 -0
  121. data/integration/apps/rails-five/tmp/.keep +0 -0
  122. data/integration/apps/rails-five/vendor/.keep +0 -0
  123. data/integration/apps/ruby/.dockerignore +1 -0
  124. data/integration/apps/ruby/.envrc.sample +1 -0
  125. data/integration/apps/ruby/.gitignore +2 -0
  126. data/integration/apps/ruby/Dockerfile +25 -0
  127. data/integration/apps/ruby/Dockerfile-ci +11 -0
  128. data/integration/apps/ruby/Gemfile +11 -0
  129. data/integration/apps/ruby/README.md +70 -0
  130. data/integration/apps/ruby/agent.yaml +3 -0
  131. data/integration/apps/ruby/app/datadog.rb +13 -0
  132. data/integration/apps/ruby/app/fibonacci.rb +58 -0
  133. data/integration/apps/ruby/bin/run +20 -0
  134. data/integration/apps/ruby/bin/setup +17 -0
  135. data/integration/apps/ruby/bin/test +21 -0
  136. data/integration/apps/ruby/docker-compose.ci.yml +51 -0
  137. data/integration/apps/ruby/docker-compose.yml +63 -0
  138. data/integration/apps/ruby/script/build-images +38 -0
  139. data/integration/apps/ruby/script/ci +50 -0
  140. data/integration/images/agent/Dockerfile +2 -0
  141. data/integration/images/agent/agent.yaml +3 -0
  142. data/integration/images/include/datadog/analyzer.rb +71 -0
  143. data/integration/images/include/datadog/demo_env.rb +101 -0
  144. data/integration/images/include/http-health-check +33 -0
  145. data/integration/images/ruby/2.0/Dockerfile +54 -0
  146. data/integration/images/ruby/2.1/Dockerfile +54 -0
  147. data/integration/images/ruby/2.2/Dockerfile +54 -0
  148. data/integration/images/ruby/2.3/Dockerfile +70 -0
  149. data/integration/images/ruby/2.4/Dockerfile +54 -0
  150. data/integration/images/ruby/2.5/Dockerfile +54 -0
  151. data/integration/images/ruby/2.6/Dockerfile +54 -0
  152. data/integration/images/ruby/2.7/Dockerfile +54 -0
  153. data/integration/images/ruby/3.0/Dockerfile +54 -0
  154. data/integration/images/wrk/Dockerfile +33 -0
  155. data/integration/images/wrk/scripts/entrypoint.sh +17 -0
  156. data/integration/images/wrk/scripts/scenarios/basic/default.lua +1 -0
  157. data/integration/images/wrk/scripts/scenarios/basic/fibonacci.lua +1 -0
  158. data/integration/script/build-images +43 -0
  159. data/lib/ddtrace.rb +8 -5
  160. data/lib/ddtrace/analytics.rb +2 -0
  161. data/lib/ddtrace/auto_instrument.rb +3 -0
  162. data/lib/ddtrace/auto_instrument_base.rb +6 -0
  163. data/lib/ddtrace/buffer.rb +4 -4
  164. data/lib/ddtrace/configuration.rb +121 -26
  165. data/lib/ddtrace/configuration/base.rb +1 -1
  166. data/lib/ddtrace/configuration/components.rb +87 -5
  167. data/lib/ddtrace/configuration/option_definition.rb +1 -3
  168. data/lib/ddtrace/configuration/options.rb +4 -7
  169. data/lib/ddtrace/configuration/settings.rb +48 -3
  170. data/lib/ddtrace/context.rb +5 -6
  171. data/lib/ddtrace/context_provider.rb +0 -1
  172. data/lib/ddtrace/contrib/action_cable/event.rb +1 -0
  173. data/lib/ddtrace/contrib/action_cable/integration.rb +7 -0
  174. data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +1 -3
  175. data/lib/ddtrace/contrib/action_pack/integration.rb +7 -0
  176. data/lib/ddtrace/contrib/action_view/event.rb +1 -1
  177. data/lib/ddtrace/contrib/action_view/integration.rb +7 -0
  178. data/lib/ddtrace/contrib/action_view/utils.rb +1 -1
  179. data/lib/ddtrace/contrib/active_record/configuration/makara_resolver.rb +30 -0
  180. data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +107 -18
  181. data/lib/ddtrace/contrib/active_record/integration.rb +7 -0
  182. data/lib/ddtrace/contrib/active_record/utils.rb +57 -20
  183. data/lib/ddtrace/contrib/active_support/integration.rb +7 -1
  184. data/lib/ddtrace/contrib/active_support/notifications/event.rb +2 -1
  185. data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +1 -0
  186. data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +9 -5
  187. data/lib/ddtrace/contrib/auto_instrument.rb +49 -0
  188. data/lib/ddtrace/contrib/aws/patcher.rb +1 -0
  189. data/lib/ddtrace/contrib/aws/services.rb +2 -0
  190. data/lib/ddtrace/contrib/configurable.rb +63 -39
  191. data/lib/ddtrace/contrib/configuration/resolver.rb +70 -5
  192. data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +19 -20
  193. data/lib/ddtrace/contrib/configuration/settings.rb +7 -6
  194. data/lib/ddtrace/contrib/cucumber/configuration/settings.rb +0 -10
  195. data/lib/ddtrace/contrib/cucumber/ext.rb +0 -2
  196. data/lib/ddtrace/contrib/cucumber/formatter.rb +5 -11
  197. data/lib/ddtrace/contrib/cucumber/integration.rb +5 -0
  198. data/lib/ddtrace/contrib/dalli/patcher.rb +0 -38
  199. data/lib/ddtrace/contrib/delayed_job/plugin.rb +0 -1
  200. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +1 -0
  201. data/lib/ddtrace/contrib/elasticsearch/quantize.rb +3 -2
  202. data/lib/ddtrace/contrib/ethon/easy_patch.rb +10 -9
  203. data/lib/ddtrace/contrib/excon/middleware.rb +2 -6
  204. data/lib/ddtrace/contrib/extensions.rb +53 -3
  205. data/lib/ddtrace/contrib/faraday/middleware.rb +1 -3
  206. data/lib/ddtrace/contrib/faraday/patcher.rb +0 -36
  207. data/lib/ddtrace/contrib/grape/endpoint.rb +8 -15
  208. data/lib/ddtrace/contrib/grape/patcher.rb +0 -42
  209. data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +8 -8
  210. data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +1 -0
  211. data/lib/ddtrace/contrib/grpc/patcher.rb +0 -36
  212. data/lib/ddtrace/contrib/http/circuit_breaker.rb +1 -3
  213. data/lib/ddtrace/contrib/http/instrumentation.rb +5 -5
  214. data/lib/ddtrace/contrib/httpclient/configuration/settings.rb +32 -0
  215. data/lib/ddtrace/contrib/httpclient/ext.rb +17 -0
  216. data/lib/ddtrace/contrib/httpclient/instrumentation.rb +147 -0
  217. data/lib/ddtrace/contrib/httpclient/integration.rb +43 -0
  218. data/lib/ddtrace/contrib/httpclient/patcher.rb +38 -0
  219. data/lib/ddtrace/contrib/httprb/instrumentation.rb +14 -20
  220. data/lib/ddtrace/contrib/httprb/patcher.rb +5 -2
  221. data/lib/ddtrace/contrib/mongodb/instrumentation.rb +2 -0
  222. data/lib/ddtrace/contrib/mongodb/subscribers.rb +2 -3
  223. data/lib/ddtrace/contrib/patchable.rb +18 -7
  224. data/lib/ddtrace/contrib/patcher.rb +9 -6
  225. data/lib/ddtrace/contrib/presto/patcher.rb +5 -2
  226. data/lib/ddtrace/contrib/qless/qless_job.rb +1 -0
  227. data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +1 -0
  228. data/lib/ddtrace/contrib/que/ext.rb +19 -19
  229. data/lib/ddtrace/contrib/que/tracer.rb +1 -1
  230. data/lib/ddtrace/contrib/racecar/event.rb +1 -0
  231. data/lib/ddtrace/contrib/rack/configuration/settings.rb +3 -3
  232. data/lib/ddtrace/contrib/rack/integration.rb +7 -0
  233. data/lib/ddtrace/contrib/rack/middlewares.rb +6 -11
  234. data/lib/ddtrace/contrib/rack/patcher.rb +1 -3
  235. data/lib/ddtrace/contrib/rack/request_queue.rb +6 -1
  236. data/lib/ddtrace/contrib/rails/auto_instrument_railtie.rb +10 -0
  237. data/lib/ddtrace/contrib/rails/patcher.rb +6 -2
  238. data/lib/ddtrace/contrib/rails/utils.rb +4 -0
  239. data/lib/ddtrace/contrib/rake/instrumentation.rb +4 -2
  240. data/lib/ddtrace/contrib/rake/integration.rb +1 -1
  241. data/lib/ddtrace/contrib/redis/configuration/resolver.rb +11 -4
  242. data/lib/ddtrace/contrib/redis/quantize.rb +1 -0
  243. data/lib/ddtrace/contrib/redis/vendor/LICENSE +20 -0
  244. data/lib/ddtrace/contrib/redis/vendor/resolver.rb +6 -7
  245. data/lib/ddtrace/contrib/registry.rb +2 -2
  246. data/lib/ddtrace/contrib/resque/configuration/settings.rb +17 -1
  247. data/lib/ddtrace/contrib/resque/integration.rb +1 -1
  248. data/lib/ddtrace/contrib/resque/patcher.rb +4 -4
  249. data/lib/ddtrace/contrib/resque/resque_job.rb +24 -1
  250. data/lib/ddtrace/contrib/rest_client/request_patch.rb +1 -3
  251. data/lib/ddtrace/contrib/rspec/configuration/settings.rb +0 -10
  252. data/lib/ddtrace/contrib/rspec/example.rb +24 -10
  253. data/lib/ddtrace/contrib/rspec/ext.rb +0 -3
  254. data/lib/ddtrace/contrib/rspec/integration.rb +6 -1
  255. data/lib/ddtrace/contrib/rspec/patcher.rb +0 -2
  256. data/lib/ddtrace/contrib/sequel/utils.rb +5 -6
  257. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +1 -0
  258. data/lib/ddtrace/contrib/shoryuken/tracer.rb +7 -4
  259. data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +2 -7
  260. data/lib/ddtrace/contrib/sidekiq/tracing.rb +0 -1
  261. data/lib/ddtrace/contrib/sinatra/env.rb +1 -3
  262. data/lib/ddtrace/contrib/sinatra/headers.rb +1 -3
  263. data/lib/ddtrace/contrib/sinatra/tracer.rb +1 -3
  264. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +3 -3
  265. data/lib/ddtrace/contrib/sneakers/ext.rb +11 -11
  266. data/lib/ddtrace/contrib/sneakers/tracer.rb +2 -4
  267. data/lib/ddtrace/contrib/status_code_matcher.rb +5 -3
  268. data/lib/ddtrace/correlation.rb +1 -0
  269. data/lib/ddtrace/diagnostics/environment_logger.rb +3 -2
  270. data/lib/ddtrace/distributed_tracing/headers/headers.rb +1 -0
  271. data/lib/ddtrace/distributed_tracing/headers/helpers.rb +1 -3
  272. data/lib/ddtrace/error.rb +2 -0
  273. data/lib/ddtrace/ext/ci.rb +43 -10
  274. data/lib/ddtrace/ext/distributed.rb +1 -1
  275. data/lib/ddtrace/ext/git.rb +0 -1
  276. data/lib/ddtrace/ext/http.rb +1 -1
  277. data/lib/ddtrace/ext/profiling.rb +52 -0
  278. data/lib/ddtrace/ext/runtime.rb +3 -1
  279. data/lib/ddtrace/ext/transport.rb +1 -0
  280. data/lib/ddtrace/forced_tracing.rb +2 -0
  281. data/lib/ddtrace/logger.rb +1 -1
  282. data/lib/ddtrace/metrics.rb +14 -6
  283. data/lib/ddtrace/opentracer/distributed_headers.rb +3 -0
  284. data/lib/ddtrace/opentracer/span.rb +2 -6
  285. data/lib/ddtrace/opentracer/thread_local_scope.rb +1 -0
  286. data/lib/ddtrace/patcher.rb +25 -4
  287. data/lib/ddtrace/pin.rb +8 -61
  288. data/lib/ddtrace/pipeline/span_filter.rb +1 -1
  289. data/lib/ddtrace/profiling.rb +54 -0
  290. data/lib/ddtrace/profiling/backtrace_location.rb +32 -0
  291. data/lib/ddtrace/profiling/buffer.rb +41 -0
  292. data/lib/ddtrace/profiling/collectors/stack.rb +253 -0
  293. data/lib/ddtrace/profiling/encoding/profile.rb +31 -0
  294. data/lib/ddtrace/profiling/event.rb +13 -0
  295. data/lib/ddtrace/profiling/events/stack.rb +102 -0
  296. data/lib/ddtrace/profiling/exporter.rb +23 -0
  297. data/lib/ddtrace/profiling/ext/cpu.rb +54 -0
  298. data/lib/ddtrace/profiling/ext/cthread.rb +134 -0
  299. data/lib/ddtrace/profiling/ext/forking.rb +97 -0
  300. data/lib/ddtrace/profiling/flush.rb +41 -0
  301. data/lib/ddtrace/profiling/pprof/builder.rb +121 -0
  302. data/lib/ddtrace/profiling/pprof/converter.rb +85 -0
  303. data/lib/ddtrace/profiling/pprof/message_set.rb +12 -0
  304. data/lib/ddtrace/profiling/pprof/payload.rb +18 -0
  305. data/lib/ddtrace/profiling/pprof/pprof.proto +212 -0
  306. data/lib/ddtrace/profiling/pprof/pprof_pb.rb +81 -0
  307. data/lib/ddtrace/profiling/pprof/stack_sample.rb +90 -0
  308. data/lib/ddtrace/profiling/pprof/string_table.rb +10 -0
  309. data/lib/ddtrace/profiling/pprof/template.rb +114 -0
  310. data/lib/ddtrace/profiling/preload.rb +3 -0
  311. data/lib/ddtrace/profiling/profiler.rb +28 -0
  312. data/lib/ddtrace/profiling/recorder.rb +87 -0
  313. data/lib/ddtrace/profiling/scheduler.rb +84 -0
  314. data/lib/ddtrace/profiling/tasks/setup.rb +77 -0
  315. data/lib/ddtrace/profiling/transport/client.rb +12 -0
  316. data/lib/ddtrace/profiling/transport/http.rb +122 -0
  317. data/lib/ddtrace/profiling/transport/http/api.rb +43 -0
  318. data/lib/ddtrace/profiling/transport/http/api/endpoint.rb +90 -0
  319. data/lib/ddtrace/profiling/transport/http/api/instance.rb +36 -0
  320. data/lib/ddtrace/profiling/transport/http/api/spec.rb +40 -0
  321. data/lib/ddtrace/profiling/transport/http/builder.rb +28 -0
  322. data/lib/ddtrace/profiling/transport/http/client.rb +33 -0
  323. data/lib/ddtrace/profiling/transport/http/response.rb +21 -0
  324. data/lib/ddtrace/profiling/transport/io.rb +30 -0
  325. data/lib/ddtrace/profiling/transport/io/client.rb +27 -0
  326. data/lib/ddtrace/profiling/transport/io/response.rb +16 -0
  327. data/lib/ddtrace/profiling/transport/parcel.rb +17 -0
  328. data/lib/ddtrace/profiling/transport/request.rb +15 -0
  329. data/lib/ddtrace/profiling/transport/response.rb +8 -0
  330. data/lib/ddtrace/propagation/grpc_propagator.rb +1 -0
  331. data/lib/ddtrace/propagation/http_propagator.rb +17 -2
  332. data/lib/ddtrace/quantization/http.rb +1 -0
  333. data/lib/ddtrace/runtime/cgroup.rb +2 -2
  334. data/lib/ddtrace/runtime/container.rb +32 -26
  335. data/lib/ddtrace/runtime/identity.rb +8 -0
  336. data/lib/ddtrace/sampler.rb +1 -1
  337. data/lib/ddtrace/sampling/rule_sampler.rb +4 -9
  338. data/lib/ddtrace/span.rb +7 -7
  339. data/lib/ddtrace/sync_writer.rb +12 -12
  340. data/lib/ddtrace/tasks/exec.rb +48 -0
  341. data/lib/ddtrace/tasks/help.rb +14 -0
  342. data/lib/ddtrace/tracer.rb +28 -5
  343. data/lib/ddtrace/transport/http.rb +15 -8
  344. data/lib/ddtrace/transport/http/adapters/net.rb +27 -8
  345. data/lib/ddtrace/transport/http/adapters/registry.rb +1 -0
  346. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +2 -4
  347. data/lib/ddtrace/transport/http/builder.rb +7 -1
  348. data/lib/ddtrace/transport/http/env.rb +8 -0
  349. data/lib/ddtrace/transport/http/traces.rb +2 -3
  350. data/lib/ddtrace/transport/io.rb +1 -1
  351. data/lib/ddtrace/transport/io/client.rb +15 -8
  352. data/lib/ddtrace/transport/io/response.rb +1 -3
  353. data/lib/ddtrace/transport/io/traces.rb +6 -0
  354. data/lib/ddtrace/transport/parcel.rb +4 -0
  355. data/lib/ddtrace/transport/traces.rb +18 -1
  356. data/lib/ddtrace/utils/compression.rb +27 -0
  357. data/lib/ddtrace/utils/object_set.rb +41 -0
  358. data/lib/ddtrace/utils/only_once.rb +40 -0
  359. data/lib/ddtrace/utils/sequence.rb +17 -0
  360. data/lib/ddtrace/utils/string_table.rb +45 -0
  361. data/lib/ddtrace/utils/time.rb +32 -1
  362. data/lib/ddtrace/vendor/active_record/MIT-LICENSE +20 -0
  363. data/lib/ddtrace/vendor/multipart-post/LICENSE +11 -0
  364. data/lib/ddtrace/vendor/multipart-post/multipart.rb +12 -0
  365. data/lib/ddtrace/vendor/multipart-post/multipart/post.rb +8 -0
  366. data/lib/ddtrace/vendor/multipart-post/multipart/post/composite_read_io.rb +116 -0
  367. data/lib/ddtrace/vendor/multipart-post/multipart/post/multipartable.rb +57 -0
  368. data/lib/ddtrace/vendor/multipart-post/multipart/post/parts.rb +135 -0
  369. data/lib/ddtrace/vendor/multipart-post/multipart/post/version.rb +9 -0
  370. data/lib/ddtrace/vendor/multipart-post/net/http/post/multipart.rb +32 -0
  371. data/lib/ddtrace/version.rb +3 -1
  372. data/lib/ddtrace/workers.rb +5 -0
  373. data/lib/ddtrace/workers/async.rb +11 -3
  374. data/lib/ddtrace/workers/loop.rb +17 -3
  375. data/lib/ddtrace/workers/polling.rb +1 -0
  376. data/lib/ddtrace/workers/queue.rb +1 -0
  377. data/lib/ddtrace/workers/runtime_metrics.rb +14 -1
  378. data/lib/ddtrace/workers/trace_writer.rb +10 -10
  379. data/lib/ddtrace/writer.rb +7 -4
  380. metadata +213 -379
  381. data/lib/ddtrace/augmentation.rb +0 -13
  382. data/lib/ddtrace/augmentation/method_wrapper.rb +0 -20
  383. data/lib/ddtrace/augmentation/method_wrapping.rb +0 -38
  384. data/lib/ddtrace/augmentation/shim.rb +0 -102
  385. data/lib/ddtrace/contrib/rspec/example_group.rb +0 -61
  386. data/lib/ddtrace/monkey.rb +0 -58
@@ -0,0 +1,9 @@
1
+ module Datadog
2
+ module Vendor
3
+ module Multipart
4
+ module Post
5
+ VERSION = "2.1.1"
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,32 @@
1
+ #--
2
+ # Copyright (c) 2007-2012 Nick Sieger.
3
+ # See the file README.txt included with the distribution for
4
+ # software license details.
5
+ #++
6
+
7
+ require 'net/http'
8
+ require 'stringio'
9
+ require 'cgi'
10
+ require 'ddtrace/vendor/multipart-post/multipart/post/parts'
11
+ require 'ddtrace/vendor/multipart-post/multipart/post/composite_read_io'
12
+ require 'ddtrace/vendor/multipart-post/multipart/post/multipartable'
13
+
14
+ module Datadog
15
+ module Vendor
16
+ module Net
17
+ class HTTP
18
+ class Put
19
+ class Multipart < ::Net::HTTP::Put
20
+ include ::Datadog::Vendor::Multipart::Post::Multipartable
21
+ end
22
+ end
23
+
24
+ class Post
25
+ class Multipart < ::Net::HTTP::Post
26
+ include ::Datadog::Vendor::Multipart::Post::Multipartable
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -1,12 +1,14 @@
1
1
  module Datadog
2
2
  module VERSION
3
3
  MAJOR = 0
4
- MINOR = 44
4
+ MINOR = 48
5
5
  PATCH = 0
6
6
  PRE = nil
7
7
 
8
8
  STRING = [MAJOR, MINOR, PATCH, PRE].compact.join('.')
9
9
 
10
+ # Support for Ruby < 2.1 is currently deprecated in the tracer.
11
+ # Support will be dropped in the near future.
10
12
  MINIMUM_RUBY_VERSION = '2.0.0'.freeze
11
13
  end
12
14
  end
@@ -67,9 +67,13 @@ module Datadog
67
67
  def start
68
68
  @mutex.synchronize do
69
69
  return if @run
70
+
70
71
  @run = true
71
72
  Datadog.logger.debug("Starting thread in the process: #{Process.pid}")
72
73
  @worker = Thread.new { perform }
74
+ @worker.name = self.class.name unless Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.3')
75
+
76
+ nil
73
77
  end
74
78
  end
75
79
 
@@ -108,6 +112,7 @@ module Datadog
108
112
 
109
113
  @mutex.synchronize do
110
114
  return if !@run && @trace_buffer.empty?
115
+
111
116
  @shutdown.wait(@mutex, @back_off) if @run # do not wait when shutting down
112
117
  end
113
118
  end
@@ -18,7 +18,7 @@ module Datadog
18
18
  # Methods that must be prepended
19
19
  module PrependedMethods
20
20
  def perform(*args)
21
- start { self.result = super(*args) } unless started?
21
+ start_async { self.result = super(*args) } unless started?
22
22
  end
23
23
  end
24
24
 
@@ -31,11 +31,13 @@ module Datadog
31
31
 
32
32
  def join(timeout = nil)
33
33
  return true unless running?
34
+
34
35
  !worker.join(timeout).nil?
35
36
  end
36
37
 
37
38
  def terminate
38
39
  return false unless running?
40
+
39
41
  @run_async = false
40
42
  worker.terminate
41
43
  true
@@ -43,6 +45,7 @@ module Datadog
43
45
 
44
46
  def run_async?
45
47
  return false unless instance_variable_defined?(:@run_async)
48
+
46
49
  @run_async == true
47
50
  end
48
51
 
@@ -56,6 +59,7 @@ module Datadog
56
59
 
57
60
  def error?
58
61
  return false unless instance_variable_defined?(:@error)
62
+
59
63
  !@error.nil?
60
64
  end
61
65
 
@@ -101,9 +105,10 @@ module Datadog
101
105
  @worker ||= nil
102
106
  end
103
107
 
104
- def start(&block)
108
+ def start_async(&block)
105
109
  mutex.synchronize do
106
110
  return if running?
111
+
107
112
  if forked?
108
113
  case fork_policy
109
114
  when FORK_POLICY_STOP
@@ -121,7 +126,7 @@ module Datadog
121
126
  @run_async = true
122
127
  @pid = Process.pid
123
128
  @error = nil
124
- Datadog.logger.debug("Starting thread in the process: #{Process.pid}")
129
+ Datadog.logger.debug("Starting thread in the process: #{Process.pid} for: #{self}")
125
130
 
126
131
  @worker = ::Thread.new do
127
132
  begin
@@ -133,6 +138,9 @@ module Datadog
133
138
  raise
134
139
  end
135
140
  end
141
+ @worker.name = self.class.name unless Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.3')
142
+
143
+ nil
136
144
  end
137
145
 
138
146
  def stop_fork
@@ -21,6 +21,7 @@ module Datadog
21
21
  def stop_loop
22
22
  mutex.synchronize do
23
23
  return false unless run_loop?
24
+
24
25
  @run_loop = false
25
26
  shutdown.signal
26
27
  end
@@ -34,6 +35,7 @@ module Datadog
34
35
 
35
36
  def run_loop?
36
37
  return false unless instance_variable_defined?(:@run_loop)
38
+
37
39
  @run_loop == true
38
40
  end
39
41
 
@@ -53,12 +55,21 @@ module Datadog
53
55
  @loop_wait_time ||= loop_base_interval
54
56
  end
55
57
 
58
+ def loop_wait_time=(value)
59
+ @loop_wait_time = value
60
+ end
61
+
62
+ def reset_loop_wait_time
63
+ self.loop_wait_time = loop_base_interval
64
+ end
65
+
66
+ # Should the loop "back off" when there's no work?
56
67
  def loop_back_off?
57
68
  false
58
69
  end
59
70
 
60
- def loop_back_off!(amount = nil)
61
- @loop_wait_time = amount || [loop_wait_time * BACK_OFF_RATIO, BACK_OFF_MAX].min
71
+ def loop_back_off!
72
+ self.loop_wait_time = [loop_wait_time * BACK_OFF_RATIO, BACK_OFF_MAX].min
62
73
  end
63
74
 
64
75
  protected
@@ -79,12 +90,14 @@ module Datadog
79
90
 
80
91
  loop do
81
92
  if work_pending?
93
+ # There's work to do...
82
94
  # Run the task
83
95
  yield
84
96
 
85
97
  # Reset the wait interval
86
- loop_back_off!(loop_base_interval)
98
+ reset_loop_wait_time if loop_back_off?
87
99
  elsif loop_back_off?
100
+ # There's no work to do...
88
101
  # Back off the wait interval a bit
89
102
  loop_back_off!
90
103
  end
@@ -92,6 +105,7 @@ module Datadog
92
105
  # Wait for an interval, unless shutdown has been signaled.
93
106
  mutex.synchronize do
94
107
  return unless run_loop? || work_pending?
108
+
95
109
  shutdown.wait(mutex, loop_wait_time) if run_loop?
96
110
  end
97
111
  end
@@ -35,6 +35,7 @@ module Datadog
35
35
 
36
36
  def enabled?
37
37
  return true unless instance_variable_defined?(:@enabled)
38
+
38
39
  @enabled
39
40
  end
40
41
 
@@ -26,6 +26,7 @@ module Datadog
26
26
  buffer.shift
27
27
  end
28
28
 
29
+ # Are there more items to be processed next?
29
30
  def work_pending?
30
31
  !buffer.empty?
31
32
  end
@@ -20,7 +20,7 @@ module Datadog
20
20
  :metrics
21
21
 
22
22
  def initialize(options = {})
23
- @metrics = options.fetch(:metrics, Runtime::Metrics.new)
23
+ @metrics = options.fetch(:metrics) { Runtime::Metrics.new }
24
24
 
25
25
  # Workers::Async::Thread settings
26
26
  self.fork_policy = options.fetch(:fork_policy, Workers::Async::Thread::FORK_POLICY_STOP)
@@ -43,6 +43,19 @@ module Datadog
43
43
  metrics.associate_with_span(*args).tap { perform }
44
44
  end
45
45
 
46
+ # TODO: `close_metrics` is only needed because
47
+ # Datadog::Components directly manipulates the lifecycle of
48
+ # Runtime::Metrics.statsd instances.
49
+ # This should be avoided, as it prevents this class from
50
+ # ensuring correct resource decommission of its internal
51
+ # dependencies.
52
+ def stop(*args, close_metrics: true)
53
+ self.enabled = false
54
+ result = super(*args)
55
+ @metrics.close if close_metrics
56
+ result
57
+ end
58
+
46
59
  def_delegators \
47
60
  :metrics,
48
61
  :register_service
@@ -16,9 +16,7 @@ module Datadog
16
16
  def initialize(options = {})
17
17
  transport_options = options.fetch(:transport_options, {})
18
18
 
19
- if transport_options.is_a?(Proc)
20
- transport_options = { on_build: transport_options }
21
- end
19
+ transport_options = { on_build: transport_options } if transport_options.is_a?(Proc)
22
20
 
23
21
  transport_options[:hostname] = options[:hostname] if options.key?(:hostname)
24
22
  transport_options[:port] = options[:port] if options.key?(:port)
@@ -66,9 +64,7 @@ module Datadog
66
64
  next if trace.first.nil?
67
65
 
68
66
  hostname = Datadog::Runtime::Socket.hostname
69
- unless hostname.nil? || hostname.empty?
70
- trace.first.set_tag(Ext::NET::TAG_HOSTNAME, hostname)
71
- end
67
+ trace.first.set_tag(Ext::NET::TAG_HOSTNAME, hostname) unless hostname.nil? || hostname.empty?
72
68
  end
73
69
  end
74
70
 
@@ -84,10 +80,6 @@ module Datadog
84
80
  def initialize
85
81
  super(:flush_completed)
86
82
  end
87
-
88
- def publish(response)
89
- super(response)
90
- end
91
83
  end
92
84
  end
93
85
 
@@ -127,10 +119,15 @@ module Datadog
127
119
 
128
120
  # NOTE: #perform is wrapped by other modules:
129
121
  # Polling --> Async --> IntervalLoop --> AsyncTraceWriter --> TraceWriter
122
+ #
123
+ # WARNING: This method breaks the Liskov Substitution Principle -- TraceWriter#perform is spec'd to return the
124
+ # result from the writer, whereas this method always returns nil.
130
125
  def perform(traces)
131
126
  super(traces).tap do |responses|
132
127
  loop_back_off! if responses.find(&:server_error?)
133
128
  end
129
+
130
+ nil
134
131
  end
135
132
 
136
133
  def stop(*args)
@@ -148,6 +145,7 @@ module Datadog
148
145
  [buffer.pop]
149
146
  end
150
147
 
148
+ # Are there more traces to be processed next?
151
149
  def work_pending?
152
150
  !buffer.empty?
153
151
  end
@@ -187,6 +185,8 @@ module Datadog
187
185
  @async = false if @writer_fork_policy == FORK_POLICY_SYNC
188
186
  end
189
187
 
188
+ # WARNING: This method breaks the Liskov Substitution Principle -- TraceWriter#write is spec'd to return the
189
+ # result from the writer, whereas this method returns something else when running in async mode.
190
190
  def write(trace)
191
191
  # Start worker thread. If the process has forked, it will trigger #after_fork to
192
192
  # reconfigure the worker accordingly.
@@ -8,10 +8,13 @@ require 'ddtrace/transport/io'
8
8
  require 'ddtrace/encoding'
9
9
  require 'ddtrace/workers'
10
10
  require 'ddtrace/diagnostics/environment_logger'
11
+ require 'ddtrace/utils/only_once'
11
12
 
12
13
  module Datadog
13
14
  # Processor that sends traces and metadata to the agent
14
15
  class Writer
16
+ DEPRECATION_WARN_ONLY_ONCE = Datadog::Utils::OnlyOnce.new
17
+
15
18
  attr_reader \
16
19
  :priority_sampler,
17
20
  :transport,
@@ -56,6 +59,7 @@ module Datadog
56
59
 
57
60
  pid = Process.pid
58
61
  return if @worker && pid == @pid
62
+
59
63
  @pid = pid
60
64
 
61
65
  start_worker
@@ -90,6 +94,7 @@ module Datadog
90
94
  @stopped = true
91
95
 
92
96
  return if @worker.nil?
97
+
93
98
  @worker.stop
94
99
  @worker = nil
95
100
 
@@ -125,7 +130,7 @@ module Datadog
125
130
  # enqueue the trace for submission to the API
126
131
  def write(trace, services = nil)
127
132
  unless services.nil?
128
- Datadog::Patcher.do_once('Writer#write') do
133
+ DEPRECATION_WARN_ONLY_ONCE.run do
129
134
  Datadog.logger.warn(%(
130
135
  write: Writing services has been deprecated and no longer need to be provided.
131
136
  write(traces, services) can be updated to write(traces)
@@ -174,9 +179,7 @@ module Datadog
174
179
  next if trace.first.nil?
175
180
 
176
181
  hostname = Datadog::Runtime::Socket.hostname
177
- unless hostname.nil? || hostname.empty?
178
- trace.first.set_tag(Ext::NET::TAG_HOSTNAME, hostname)
179
- end
182
+ trace.first.set_tag(Ext::NET::TAG_HOSTNAME, hostname) unless hostname.nil? || hostname.empty?
180
183
  end
181
184
  end
182
185
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ddtrace
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.44.0
4
+ version: 0.48.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Datadog, Inc.
8
8
  autorequire:
9
- bindir: exe
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-06 00:00:00.000000000 Z
11
+ date: 2021-04-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack
@@ -25,390 +25,27 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: dogstatsd-ruby
28
+ name: ffi
29
29
  requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: 3.3.0
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: 3.3.0
41
- - !ruby/object:Gem::Dependency
42
- name: opentracing
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: 0.4.1
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: 0.4.1
55
- - !ruby/object:Gem::Dependency
56
- name: concurrent-ruby
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: rake
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '10.5'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '10.5'
83
- - !ruby/object:Gem::Dependency
84
- name: rubocop
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - '='
88
- - !ruby/object:Gem::Version
89
- version: 0.49.1
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - '='
95
- - !ruby/object:Gem::Version
96
- version: 0.49.1
97
- - !ruby/object:Gem::Dependency
98
- name: rspec
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '3.0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '3.0'
111
- - !ruby/object:Gem::Dependency
112
- name: rspec-collection_matchers
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '1.1'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '1.1'
125
- - !ruby/object:Gem::Dependency
126
- name: ruby-prof
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: '1.4'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: '1.4'
139
- - !ruby/object:Gem::Dependency
140
- name: minitest
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - '='
144
- - !ruby/object:Gem::Version
145
- version: 5.10.1
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - '='
151
- - !ruby/object:Gem::Version
152
- version: 5.10.1
153
- - !ruby/object:Gem::Dependency
154
- name: minitest-around
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - '='
158
- - !ruby/object:Gem::Version
159
- version: 0.5.0
160
- type: :development
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - '='
165
- - !ruby/object:Gem::Version
166
- version: 0.5.0
167
- - !ruby/object:Gem::Dependency
168
- name: minitest-stub_any_instance
169
- requirement: !ruby/object:Gem::Requirement
170
- requirements:
171
- - - '='
172
- - !ruby/object:Gem::Version
173
- version: 1.0.2
174
- type: :development
175
- prerelease: false
176
- version_requirements: !ruby/object:Gem::Requirement
177
- requirements:
178
- - - '='
179
- - !ruby/object:Gem::Version
180
- version: 1.0.2
181
- - !ruby/object:Gem::Dependency
182
- name: pimpmychangelog
183
- requirement: !ruby/object:Gem::Requirement
184
- requirements:
185
- - - ">="
186
- - !ruby/object:Gem::Version
187
- version: 0.1.2
188
- type: :development
189
- prerelease: false
190
- version_requirements: !ruby/object:Gem::Requirement
191
- requirements:
192
- - - ">="
193
- - !ruby/object:Gem::Version
194
- version: 0.1.2
195
- - !ruby/object:Gem::Dependency
196
- name: appraisal
197
- requirement: !ruby/object:Gem::Requirement
198
- requirements:
199
- - - "~>"
200
- - !ruby/object:Gem::Version
201
- version: '2.2'
202
- type: :development
203
- prerelease: false
204
- version_requirements: !ruby/object:Gem::Requirement
205
- requirements:
206
- - - "~>"
207
- - !ruby/object:Gem::Version
208
- version: '2.2'
209
- - !ruby/object:Gem::Dependency
210
- name: yard
211
- requirement: !ruby/object:Gem::Requirement
212
- requirements:
213
- - - "~>"
214
- - !ruby/object:Gem::Version
215
- version: '0.9'
216
- type: :development
217
- prerelease: false
218
- version_requirements: !ruby/object:Gem::Requirement
219
30
  requirements:
220
31
  - - "~>"
221
32
  - !ruby/object:Gem::Version
222
- version: '0.9'
223
- - !ruby/object:Gem::Dependency
224
- name: webmock
225
- requirement: !ruby/object:Gem::Requirement
226
- requirements:
227
- - - ">="
228
- - !ruby/object:Gem::Version
229
- version: 3.10.0
230
- type: :development
231
- prerelease: false
232
- version_requirements: !ruby/object:Gem::Requirement
233
- requirements:
234
- - - ">="
235
- - !ruby/object:Gem::Version
236
- version: 3.10.0
237
- - !ruby/object:Gem::Dependency
238
- name: builder
239
- requirement: !ruby/object:Gem::Requirement
240
- requirements:
241
- - - ">="
242
- - !ruby/object:Gem::Version
243
- version: '0'
244
- type: :development
245
- prerelease: false
246
- version_requirements: !ruby/object:Gem::Requirement
247
- requirements:
248
- - - ">="
249
- - !ruby/object:Gem::Version
250
- version: '0'
251
- - !ruby/object:Gem::Dependency
252
- name: climate_control
253
- requirement: !ruby/object:Gem::Requirement
254
- requirements:
255
- - - "~>"
256
- - !ruby/object:Gem::Version
257
- version: 0.2.0
258
- type: :development
259
- prerelease: false
260
- version_requirements: !ruby/object:Gem::Requirement
261
- requirements:
262
- - - "~>"
263
- - !ruby/object:Gem::Version
264
- version: 0.2.0
265
- - !ruby/object:Gem::Dependency
266
- name: addressable
267
- requirement: !ruby/object:Gem::Requirement
268
- requirements:
269
- - - "~>"
270
- - !ruby/object:Gem::Version
271
- version: 2.4.0
272
- type: :development
273
- prerelease: false
274
- version_requirements: !ruby/object:Gem::Requirement
275
- requirements:
276
- - - "~>"
277
- - !ruby/object:Gem::Version
278
- version: 2.4.0
279
- - !ruby/object:Gem::Dependency
280
- name: benchmark-ips
281
- requirement: !ruby/object:Gem::Requirement
282
- requirements:
283
- - - "~>"
284
- - !ruby/object:Gem::Version
285
- version: '2.8'
286
- type: :development
287
- prerelease: false
288
- version_requirements: !ruby/object:Gem::Requirement
289
- requirements:
290
- - - "~>"
291
- - !ruby/object:Gem::Version
292
- version: '2.8'
293
- - !ruby/object:Gem::Dependency
294
- name: benchmark-memory
295
- requirement: !ruby/object:Gem::Requirement
296
- requirements:
297
- - - "~>"
298
- - !ruby/object:Gem::Version
299
- version: '0.1'
300
- type: :development
301
- prerelease: false
302
- version_requirements: !ruby/object:Gem::Requirement
303
- requirements:
304
- - - "~>"
305
- - !ruby/object:Gem::Version
306
- version: '0.1'
307
- - !ruby/object:Gem::Dependency
308
- name: memory_profiler
309
- requirement: !ruby/object:Gem::Requirement
310
- requirements:
311
- - - "~>"
312
- - !ruby/object:Gem::Version
313
- version: '0.9'
314
- type: :development
315
- prerelease: false
316
- version_requirements: !ruby/object:Gem::Requirement
317
- requirements:
318
- - - "~>"
319
- - !ruby/object:Gem::Version
320
- version: '0.9'
321
- - !ruby/object:Gem::Dependency
322
- name: redcarpet
323
- requirement: !ruby/object:Gem::Requirement
324
- requirements:
325
- - - "~>"
326
- - !ruby/object:Gem::Version
327
- version: '3.4'
328
- type: :development
329
- prerelease: false
330
- version_requirements: !ruby/object:Gem::Requirement
331
- requirements:
332
- - - "~>"
333
- - !ruby/object:Gem::Version
334
- version: '3.4'
335
- - !ruby/object:Gem::Dependency
336
- name: pry
337
- requirement: !ruby/object:Gem::Requirement
338
- requirements:
339
- - - "~>"
340
- - !ruby/object:Gem::Version
341
- version: 0.12.2
342
- type: :development
343
- prerelease: false
344
- version_requirements: !ruby/object:Gem::Requirement
345
- requirements:
346
- - - "~>"
347
- - !ruby/object:Gem::Version
348
- version: 0.12.2
349
- - !ruby/object:Gem::Dependency
350
- name: pry-nav
351
- requirement: !ruby/object:Gem::Requirement
352
- requirements:
353
- - - "~>"
354
- - !ruby/object:Gem::Version
355
- version: 0.3.0
356
- type: :development
357
- prerelease: false
358
- version_requirements: !ruby/object:Gem::Requirement
359
- requirements:
360
- - - "~>"
361
- - !ruby/object:Gem::Version
362
- version: 0.3.0
363
- - !ruby/object:Gem::Dependency
364
- name: pry-stack_explorer
365
- requirement: !ruby/object:Gem::Requirement
366
- requirements:
367
- - - "~>"
368
- - !ruby/object:Gem::Version
369
- version: 0.4.9
370
- type: :development
371
- prerelease: false
372
- version_requirements: !ruby/object:Gem::Requirement
373
- requirements:
374
- - - "~>"
375
- - !ruby/object:Gem::Version
376
- version: 0.4.9
377
- - !ruby/object:Gem::Dependency
378
- name: simplecov
379
- requirement: !ruby/object:Gem::Requirement
380
- requirements:
381
- - - "~>"
382
- - !ruby/object:Gem::Version
383
- version: '0.17'
384
- type: :development
385
- prerelease: false
386
- version_requirements: !ruby/object:Gem::Requirement
387
- requirements:
388
- - - "~>"
389
- - !ruby/object:Gem::Version
390
- version: '0.17'
391
- - !ruby/object:Gem::Dependency
392
- name: warning
393
- requirement: !ruby/object:Gem::Requirement
394
- requirements:
395
- - - "~>"
396
- - !ruby/object:Gem::Version
397
- version: '1'
398
- type: :development
33
+ version: '1.0'
34
+ type: :runtime
399
35
  prerelease: false
400
36
  version_requirements: !ruby/object:Gem::Requirement
401
37
  requirements:
402
38
  - - "~>"
403
39
  - !ruby/object:Gem::Version
404
- version: '1'
40
+ version: '1.0'
405
41
  description: |
406
42
  ddtrace is Datadog’s tracing client for Ruby. It is used to trace requests
407
43
  as they flow across web servers, databases and microservices so that developers
408
44
  have great visiblity into bottlenecks and troublesome requests.
409
45
  email:
410
46
  - dev@datadoghq.com
411
- executables: []
47
+ executables:
48
+ - ddtracerb
412
49
  extensions: []
413
50
  extra_rdoc_files: []
414
51
  files:
@@ -422,7 +59,9 @@ files:
422
59
  - ".circleci/images/primary/Dockerfile-2.6.4"
423
60
  - ".circleci/images/primary/Dockerfile-2.7.0"
424
61
  - ".circleci/images/primary/Dockerfile-3.0.0"
425
- - ".circleci/images/primary/Dockerfile-jruby-9.2"
62
+ - ".circleci/images/primary/Dockerfile-jruby-9.2-latest"
63
+ - ".circleci/images/primary/Dockerfile-jruby-9.2.0.0"
64
+ - ".circleci/images/primary/Dockerfile-truffleruby-21.0.0"
426
65
  - ".dockerignore"
427
66
  - ".env"
428
67
  - ".github/CODEOWNERS"
@@ -432,6 +71,7 @@ files:
432
71
  - ".gitlab-ci.yml"
433
72
  - ".rspec"
434
73
  - ".rubocop.yml"
74
+ - ".rubocop_todo.yml"
435
75
  - ".simplecov"
436
76
  - ".yardopts"
437
77
  - Appraisals
@@ -439,6 +79,7 @@ files:
439
79
  - CONTRIBUTING.md
440
80
  - Gemfile
441
81
  - LICENSE
82
+ - LICENSE-3rdparty.csv
442
83
  - LICENSE.Apache
443
84
  - LICENSE.BSD3
444
85
  - NOTICE
@@ -446,16 +87,144 @@ files:
446
87
  - Rakefile
447
88
  - benchmarks/postgres_database.yml
448
89
  - benchmarks/sidekiq_test.rb
90
+ - bin/ddtracerb
449
91
  - ddtrace.gemspec
450
92
  - docker-compose.yml
451
93
  - docs/DevelopmentGuide.md
452
94
  - docs/GettingStarted.md
95
+ - docs/ProfilingDevelopment.md
96
+ - integration/README.md
97
+ - integration/apps/rack/.dockerignore
98
+ - integration/apps/rack/.envrc.sample
99
+ - integration/apps/rack/.gitignore
100
+ - integration/apps/rack/.rspec
101
+ - integration/apps/rack/Dockerfile
102
+ - integration/apps/rack/Dockerfile-ci
103
+ - integration/apps/rack/Gemfile
104
+ - integration/apps/rack/README.md
105
+ - integration/apps/rack/app/acme.rb
106
+ - integration/apps/rack/app/datadog.rb
107
+ - integration/apps/rack/bin/run
108
+ - integration/apps/rack/bin/setup
109
+ - integration/apps/rack/bin/test
110
+ - integration/apps/rack/config.ru
111
+ - integration/apps/rack/config/puma.rb
112
+ - integration/apps/rack/config/unicorn.rb
113
+ - integration/apps/rack/docker-compose.ci.yml
114
+ - integration/apps/rack/docker-compose.yml
115
+ - integration/apps/rack/script/build-images
116
+ - integration/apps/rack/script/ci
117
+ - integration/apps/rack/spec/integration/basic_spec.rb
118
+ - integration/apps/rack/spec/spec_helper.rb
119
+ - integration/apps/rack/spec/support/integration_helper.rb
120
+ - integration/apps/rails-five/.dockerignore
121
+ - integration/apps/rails-five/.env
122
+ - integration/apps/rails-five/.envrc.sample
123
+ - integration/apps/rails-five/.gitignore
124
+ - integration/apps/rails-five/Dockerfile
125
+ - integration/apps/rails-five/Dockerfile-ci
126
+ - integration/apps/rails-five/Gemfile
127
+ - integration/apps/rails-five/README.md
128
+ - integration/apps/rails-five/Rakefile
129
+ - integration/apps/rails-five/app/channels/application_cable/channel.rb
130
+ - integration/apps/rails-five/app/channels/application_cable/connection.rb
131
+ - integration/apps/rails-five/app/controllers/application_controller.rb
132
+ - integration/apps/rails-five/app/controllers/basic_controller.rb
133
+ - integration/apps/rails-five/app/controllers/concerns/.keep
134
+ - integration/apps/rails-five/app/controllers/health_controller.rb
135
+ - integration/apps/rails-five/app/controllers/jobs_controller.rb
136
+ - integration/apps/rails-five/app/jobs/application_job.rb
137
+ - integration/apps/rails-five/app/jobs/test_job.rb
138
+ - integration/apps/rails-five/app/mailers/application_mailer.rb
139
+ - integration/apps/rails-five/app/models/application_record.rb
140
+ - integration/apps/rails-five/app/models/concerns/.keep
141
+ - integration/apps/rails-five/app/models/test.rb
142
+ - integration/apps/rails-five/app/views/layouts/mailer.html.erb
143
+ - integration/apps/rails-five/app/views/layouts/mailer.text.erb
144
+ - integration/apps/rails-five/bin/bundle
145
+ - integration/apps/rails-five/bin/rails
146
+ - integration/apps/rails-five/bin/rake
147
+ - integration/apps/rails-five/bin/run
148
+ - integration/apps/rails-five/bin/setup
149
+ - integration/apps/rails-five/bin/spring
150
+ - integration/apps/rails-five/bin/test
151
+ - integration/apps/rails-five/bin/update
152
+ - integration/apps/rails-five/config.ru
153
+ - integration/apps/rails-five/config/application.rb
154
+ - integration/apps/rails-five/config/boot.rb
155
+ - integration/apps/rails-five/config/cable.yml
156
+ - integration/apps/rails-five/config/credentials.yml.enc
157
+ - integration/apps/rails-five/config/database.yml
158
+ - integration/apps/rails-five/config/environment.rb
159
+ - integration/apps/rails-five/config/environments/development.rb
160
+ - integration/apps/rails-five/config/environments/production.rb
161
+ - integration/apps/rails-five/config/environments/test.rb
162
+ - integration/apps/rails-five/config/initializers/datadog.rb
163
+ - integration/apps/rails-five/config/initializers/filter_parameter_logging.rb
164
+ - integration/apps/rails-five/config/initializers/resque.rb
165
+ - integration/apps/rails-five/config/initializers/rollbar.rb
166
+ - integration/apps/rails-five/config/initializers/wrap_parameters.rb
167
+ - integration/apps/rails-five/config/locales/en.yml
168
+ - integration/apps/rails-five/config/puma.rb
169
+ - integration/apps/rails-five/config/routes.rb
170
+ - integration/apps/rails-five/config/spring.rb
171
+ - integration/apps/rails-five/config/unicorn.rb
172
+ - integration/apps/rails-five/db/migrate/20190927215052_create_tests.rb
173
+ - integration/apps/rails-five/db/schema.rb
174
+ - integration/apps/rails-five/db/seeds.rb
175
+ - integration/apps/rails-five/docker-compose.ci.yml
176
+ - integration/apps/rails-five/docker-compose.yml
177
+ - integration/apps/rails-five/lib/tasks/.keep
178
+ - integration/apps/rails-five/log/.keep
179
+ - integration/apps/rails-five/public/robots.txt
180
+ - integration/apps/rails-five/script/build-images
181
+ - integration/apps/rails-five/script/ci
182
+ - integration/apps/rails-five/spec/integration/basic_spec.rb
183
+ - integration/apps/rails-five/spec/spec_helper.rb
184
+ - integration/apps/rails-five/spec/support/integration_helper.rb
185
+ - integration/apps/rails-five/storage/.keep
186
+ - integration/apps/rails-five/tmp/.keep
187
+ - integration/apps/rails-five/vendor/.keep
188
+ - integration/apps/ruby/.dockerignore
189
+ - integration/apps/ruby/.envrc.sample
190
+ - integration/apps/ruby/.gitignore
191
+ - integration/apps/ruby/Dockerfile
192
+ - integration/apps/ruby/Dockerfile-ci
193
+ - integration/apps/ruby/Gemfile
194
+ - integration/apps/ruby/README.md
195
+ - integration/apps/ruby/agent.yaml
196
+ - integration/apps/ruby/app/datadog.rb
197
+ - integration/apps/ruby/app/fibonacci.rb
198
+ - integration/apps/ruby/bin/run
199
+ - integration/apps/ruby/bin/setup
200
+ - integration/apps/ruby/bin/test
201
+ - integration/apps/ruby/docker-compose.ci.yml
202
+ - integration/apps/ruby/docker-compose.yml
203
+ - integration/apps/ruby/script/build-images
204
+ - integration/apps/ruby/script/ci
205
+ - integration/images/agent/Dockerfile
206
+ - integration/images/agent/agent.yaml
207
+ - integration/images/include/datadog/analyzer.rb
208
+ - integration/images/include/datadog/demo_env.rb
209
+ - integration/images/include/http-health-check
210
+ - integration/images/ruby/2.0/Dockerfile
211
+ - integration/images/ruby/2.1/Dockerfile
212
+ - integration/images/ruby/2.2/Dockerfile
213
+ - integration/images/ruby/2.3/Dockerfile
214
+ - integration/images/ruby/2.4/Dockerfile
215
+ - integration/images/ruby/2.5/Dockerfile
216
+ - integration/images/ruby/2.6/Dockerfile
217
+ - integration/images/ruby/2.7/Dockerfile
218
+ - integration/images/ruby/3.0/Dockerfile
219
+ - integration/images/wrk/Dockerfile
220
+ - integration/images/wrk/scripts/entrypoint.sh
221
+ - integration/images/wrk/scripts/scenarios/basic/default.lua
222
+ - integration/images/wrk/scripts/scenarios/basic/fibonacci.lua
223
+ - integration/script/build-images
453
224
  - lib/ddtrace.rb
454
225
  - lib/ddtrace/analytics.rb
455
- - lib/ddtrace/augmentation.rb
456
- - lib/ddtrace/augmentation/method_wrapper.rb
457
- - lib/ddtrace/augmentation/method_wrapping.rb
458
- - lib/ddtrace/augmentation/shim.rb
226
+ - lib/ddtrace/auto_instrument.rb
227
+ - lib/ddtrace/auto_instrument_base.rb
459
228
  - lib/ddtrace/buffer.rb
460
229
  - lib/ddtrace/chunker.rb
461
230
  - lib/ddtrace/configuration.rb
@@ -508,6 +277,7 @@ files:
508
277
  - lib/ddtrace/contrib/active_model_serializers/ext.rb
509
278
  - lib/ddtrace/contrib/active_model_serializers/integration.rb
510
279
  - lib/ddtrace/contrib/active_model_serializers/patcher.rb
280
+ - lib/ddtrace/contrib/active_record/configuration/makara_resolver.rb
511
281
  - lib/ddtrace/contrib/active_record/configuration/resolver.rb
512
282
  - lib/ddtrace/contrib/active_record/configuration/settings.rb
513
283
  - lib/ddtrace/contrib/active_record/event.rb
@@ -529,6 +299,7 @@ files:
529
299
  - lib/ddtrace/contrib/active_support/notifications/subscription.rb
530
300
  - lib/ddtrace/contrib/active_support/patcher.rb
531
301
  - lib/ddtrace/contrib/analytics.rb
302
+ - lib/ddtrace/contrib/auto_instrument.rb
532
303
  - lib/ddtrace/contrib/aws/configuration/settings.rb
533
304
  - lib/ddtrace/contrib/aws/ext.rb
534
305
  - lib/ddtrace/contrib/aws/instrumentation.rb
@@ -612,6 +383,11 @@ files:
612
383
  - lib/ddtrace/contrib/http/integration.rb
613
384
  - lib/ddtrace/contrib/http/patcher.rb
614
385
  - lib/ddtrace/contrib/http_annotation_helper.rb
386
+ - lib/ddtrace/contrib/httpclient/configuration/settings.rb
387
+ - lib/ddtrace/contrib/httpclient/ext.rb
388
+ - lib/ddtrace/contrib/httpclient/instrumentation.rb
389
+ - lib/ddtrace/contrib/httpclient/integration.rb
390
+ - lib/ddtrace/contrib/httpclient/patcher.rb
615
391
  - lib/ddtrace/contrib/httprb/configuration/settings.rb
616
392
  - lib/ddtrace/contrib/httprb/ext.rb
617
393
  - lib/ddtrace/contrib/httprb/instrumentation.rb
@@ -680,6 +456,7 @@ files:
680
456
  - lib/ddtrace/contrib/rack/middlewares.rb
681
457
  - lib/ddtrace/contrib/rack/patcher.rb
682
458
  - lib/ddtrace/contrib/rack/request_queue.rb
459
+ - lib/ddtrace/contrib/rails/auto_instrument_railtie.rb
683
460
  - lib/ddtrace/contrib/rails/configuration/settings.rb
684
461
  - lib/ddtrace/contrib/rails/ext.rb
685
462
  - lib/ddtrace/contrib/rails/framework.rb
@@ -701,6 +478,7 @@ files:
701
478
  - lib/ddtrace/contrib/redis/patcher.rb
702
479
  - lib/ddtrace/contrib/redis/quantize.rb
703
480
  - lib/ddtrace/contrib/redis/tags.rb
481
+ - lib/ddtrace/contrib/redis/vendor/LICENSE
704
482
  - lib/ddtrace/contrib/redis/vendor/resolver.rb
705
483
  - lib/ddtrace/contrib/registerable.rb
706
484
  - lib/ddtrace/contrib/registry.rb
@@ -716,7 +494,6 @@ files:
716
494
  - lib/ddtrace/contrib/rest_client/request_patch.rb
717
495
  - lib/ddtrace/contrib/rspec/configuration/settings.rb
718
496
  - lib/ddtrace/contrib/rspec/example.rb
719
- - lib/ddtrace/contrib/rspec/example_group.rb
720
497
  - lib/ddtrace/contrib/rspec/ext.rb
721
498
  - lib/ddtrace/contrib/rspec/integration.rb
722
499
  - lib/ddtrace/contrib/rspec/patcher.rb
@@ -787,6 +564,7 @@ files:
787
564
  - lib/ddtrace/ext/metrics.rb
788
565
  - lib/ddtrace/ext/net.rb
789
566
  - lib/ddtrace/ext/priority.rb
567
+ - lib/ddtrace/ext/profiling.rb
790
568
  - lib/ddtrace/ext/runtime.rb
791
569
  - lib/ddtrace/ext/sampling.rb
792
570
  - lib/ddtrace/ext/sql.rb
@@ -795,7 +573,6 @@ files:
795
573
  - lib/ddtrace/forced_tracing.rb
796
574
  - lib/ddtrace/logger.rb
797
575
  - lib/ddtrace/metrics.rb
798
- - lib/ddtrace/monkey.rb
799
576
  - lib/ddtrace/opentelemetry/extensions.rb
800
577
  - lib/ddtrace/opentelemetry/span.rb
801
578
  - lib/ddtrace/opentracer.rb
@@ -819,6 +596,47 @@ files:
819
596
  - lib/ddtrace/pipeline.rb
820
597
  - lib/ddtrace/pipeline/span_filter.rb
821
598
  - lib/ddtrace/pipeline/span_processor.rb
599
+ - lib/ddtrace/profiling.rb
600
+ - lib/ddtrace/profiling/backtrace_location.rb
601
+ - lib/ddtrace/profiling/buffer.rb
602
+ - lib/ddtrace/profiling/collectors/stack.rb
603
+ - lib/ddtrace/profiling/encoding/profile.rb
604
+ - lib/ddtrace/profiling/event.rb
605
+ - lib/ddtrace/profiling/events/stack.rb
606
+ - lib/ddtrace/profiling/exporter.rb
607
+ - lib/ddtrace/profiling/ext/cpu.rb
608
+ - lib/ddtrace/profiling/ext/cthread.rb
609
+ - lib/ddtrace/profiling/ext/forking.rb
610
+ - lib/ddtrace/profiling/flush.rb
611
+ - lib/ddtrace/profiling/pprof/builder.rb
612
+ - lib/ddtrace/profiling/pprof/converter.rb
613
+ - lib/ddtrace/profiling/pprof/message_set.rb
614
+ - lib/ddtrace/profiling/pprof/payload.rb
615
+ - lib/ddtrace/profiling/pprof/pprof.proto
616
+ - lib/ddtrace/profiling/pprof/pprof_pb.rb
617
+ - lib/ddtrace/profiling/pprof/stack_sample.rb
618
+ - lib/ddtrace/profiling/pprof/string_table.rb
619
+ - lib/ddtrace/profiling/pprof/template.rb
620
+ - lib/ddtrace/profiling/preload.rb
621
+ - lib/ddtrace/profiling/profiler.rb
622
+ - lib/ddtrace/profiling/recorder.rb
623
+ - lib/ddtrace/profiling/scheduler.rb
624
+ - lib/ddtrace/profiling/tasks/setup.rb
625
+ - lib/ddtrace/profiling/transport/client.rb
626
+ - lib/ddtrace/profiling/transport/http.rb
627
+ - lib/ddtrace/profiling/transport/http/api.rb
628
+ - lib/ddtrace/profiling/transport/http/api/endpoint.rb
629
+ - lib/ddtrace/profiling/transport/http/api/instance.rb
630
+ - lib/ddtrace/profiling/transport/http/api/spec.rb
631
+ - lib/ddtrace/profiling/transport/http/builder.rb
632
+ - lib/ddtrace/profiling/transport/http/client.rb
633
+ - lib/ddtrace/profiling/transport/http/response.rb
634
+ - lib/ddtrace/profiling/transport/io.rb
635
+ - lib/ddtrace/profiling/transport/io/client.rb
636
+ - lib/ddtrace/profiling/transport/io/response.rb
637
+ - lib/ddtrace/profiling/transport/parcel.rb
638
+ - lib/ddtrace/profiling/transport/request.rb
639
+ - lib/ddtrace/profiling/transport/response.rb
822
640
  - lib/ddtrace/propagation/grpc_propagator.rb
823
641
  - lib/ddtrace/propagation/http_propagator.rb
824
642
  - lib/ddtrace/quantization/hash.rb
@@ -840,6 +658,8 @@ files:
840
658
  - lib/ddtrace/sampling/rule_sampler.rb
841
659
  - lib/ddtrace/span.rb
842
660
  - lib/ddtrace/sync_writer.rb
661
+ - lib/ddtrace/tasks/exec.rb
662
+ - lib/ddtrace/tasks/help.rb
843
663
  - lib/ddtrace/tracer.rb
844
664
  - lib/ddtrace/transport/http.rb
845
665
  - lib/ddtrace/transport/http/adapters/net.rb
@@ -868,10 +688,24 @@ files:
868
688
  - lib/ddtrace/transport/statistics.rb
869
689
  - lib/ddtrace/transport/traces.rb
870
690
  - lib/ddtrace/utils.rb
691
+ - lib/ddtrace/utils/compression.rb
871
692
  - lib/ddtrace/utils/database.rb
872
693
  - lib/ddtrace/utils/forking.rb
694
+ - lib/ddtrace/utils/object_set.rb
695
+ - lib/ddtrace/utils/only_once.rb
696
+ - lib/ddtrace/utils/sequence.rb
697
+ - lib/ddtrace/utils/string_table.rb
873
698
  - lib/ddtrace/utils/time.rb
699
+ - lib/ddtrace/vendor/active_record/MIT-LICENSE
874
700
  - lib/ddtrace/vendor/active_record/connection_specification.rb
701
+ - lib/ddtrace/vendor/multipart-post/LICENSE
702
+ - lib/ddtrace/vendor/multipart-post/multipart.rb
703
+ - lib/ddtrace/vendor/multipart-post/multipart/post.rb
704
+ - lib/ddtrace/vendor/multipart-post/multipart/post/composite_read_io.rb
705
+ - lib/ddtrace/vendor/multipart-post/multipart/post/multipartable.rb
706
+ - lib/ddtrace/vendor/multipart-post/multipart/post/parts.rb
707
+ - lib/ddtrace/vendor/multipart-post/multipart/post/version.rb
708
+ - lib/ddtrace/vendor/multipart-post/net/http/post/multipart.rb
875
709
  - lib/ddtrace/version.rb
876
710
  - lib/ddtrace/worker.rb
877
711
  - lib/ddtrace/workers.rb