ddtrace 0.43.0 → 0.48.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (400) hide show
  1. checksums.yaml +5 -5
  2. data/.circleci/config.yml +278 -139
  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-3.0.0 +73 -0
  12. data/.circleci/images/primary/Dockerfile-jruby-9.2-latest +88 -0
  13. data/.circleci/images/primary/{Dockerfile-jruby-9.2 → Dockerfile-jruby-9.2.0.0} +1 -5
  14. data/.circleci/images/primary/Dockerfile-truffleruby-21.0.0 +73 -0
  15. data/.github/workflows/add-milestone-to-pull-requests.yml +1 -1
  16. data/.github/workflows/create-next-milestone.yml +2 -2
  17. data/.gitlab-ci.yml +18 -18
  18. data/.rubocop.yml +269 -7
  19. data/.rubocop_todo.yml +438 -0
  20. data/.simplecov +10 -1
  21. data/Appraisals +285 -15
  22. data/CHANGELOG.md +1243 -377
  23. data/Gemfile +65 -3
  24. data/LICENSE-3rdparty.csv +2 -0
  25. data/README.md +1 -0
  26. data/Rakefile +186 -29
  27. data/bin/ddtracerb +15 -0
  28. data/ddtrace.gemspec +7 -37
  29. data/docker-compose.yml +105 -7
  30. data/docs/DevelopmentGuide.md +28 -0
  31. data/docs/GettingStarted.md +208 -75
  32. data/docs/ProfilingDevelopment.md +88 -0
  33. data/integration/README.md +67 -0
  34. data/integration/apps/rack/.dockerignore +1 -0
  35. data/integration/apps/rack/.envrc.sample +1 -0
  36. data/integration/apps/rack/.gitignore +4 -0
  37. data/integration/apps/rack/.rspec +1 -0
  38. data/integration/apps/rack/Dockerfile +28 -0
  39. data/integration/apps/rack/Dockerfile-ci +11 -0
  40. data/integration/apps/rack/Gemfile +24 -0
  41. data/integration/apps/rack/README.md +93 -0
  42. data/integration/apps/rack/app/acme.rb +80 -0
  43. data/integration/apps/rack/app/datadog.rb +17 -0
  44. data/integration/apps/rack/bin/run +22 -0
  45. data/integration/apps/rack/bin/setup +17 -0
  46. data/integration/apps/rack/bin/test +24 -0
  47. data/integration/apps/rack/config.ru +6 -0
  48. data/integration/apps/rack/config/puma.rb +14 -0
  49. data/integration/apps/rack/config/unicorn.rb +23 -0
  50. data/integration/apps/rack/docker-compose.ci.yml +62 -0
  51. data/integration/apps/rack/docker-compose.yml +78 -0
  52. data/integration/apps/rack/script/build-images +38 -0
  53. data/integration/apps/rack/script/ci +50 -0
  54. data/integration/apps/rack/spec/integration/basic_spec.rb +10 -0
  55. data/integration/apps/rack/spec/spec_helper.rb +16 -0
  56. data/integration/apps/rack/spec/support/integration_helper.rb +22 -0
  57. data/integration/apps/rails-five/.dockerignore +1 -0
  58. data/integration/apps/rails-five/.env +3 -0
  59. data/integration/apps/rails-five/.envrc.sample +1 -0
  60. data/integration/apps/rails-five/.gitignore +30 -0
  61. data/integration/apps/rails-five/Dockerfile +25 -0
  62. data/integration/apps/rails-five/Dockerfile-ci +11 -0
  63. data/integration/apps/rails-five/Gemfile +104 -0
  64. data/integration/apps/rails-five/README.md +94 -0
  65. data/integration/apps/rails-five/Rakefile +6 -0
  66. data/integration/apps/rails-five/app/channels/application_cable/channel.rb +4 -0
  67. data/integration/apps/rails-five/app/channels/application_cable/connection.rb +4 -0
  68. data/integration/apps/rails-five/app/controllers/application_controller.rb +2 -0
  69. data/integration/apps/rails-five/app/controllers/basic_controller.rb +36 -0
  70. data/integration/apps/rails-five/app/controllers/concerns/.keep +0 -0
  71. data/integration/apps/rails-five/app/controllers/health_controller.rb +9 -0
  72. data/integration/apps/rails-five/app/controllers/jobs_controller.rb +12 -0
  73. data/integration/apps/rails-five/app/jobs/application_job.rb +2 -0
  74. data/integration/apps/rails-five/app/jobs/test_job.rb +12 -0
  75. data/integration/apps/rails-five/app/mailers/application_mailer.rb +4 -0
  76. data/integration/apps/rails-five/app/models/application_record.rb +3 -0
  77. data/integration/apps/rails-five/app/models/concerns/.keep +0 -0
  78. data/integration/apps/rails-five/app/models/test.rb +2 -0
  79. data/integration/apps/rails-five/app/views/layouts/mailer.html.erb +13 -0
  80. data/integration/apps/rails-five/app/views/layouts/mailer.text.erb +1 -0
  81. data/integration/apps/rails-five/bin/bundle +3 -0
  82. data/integration/apps/rails-five/bin/rails +9 -0
  83. data/integration/apps/rails-five/bin/rake +9 -0
  84. data/integration/apps/rails-five/bin/run +24 -0
  85. data/integration/apps/rails-five/bin/setup +27 -0
  86. data/integration/apps/rails-five/bin/spring +17 -0
  87. data/integration/apps/rails-five/bin/test +21 -0
  88. data/integration/apps/rails-five/bin/update +28 -0
  89. data/integration/apps/rails-five/config.ru +5 -0
  90. data/integration/apps/rails-five/config/application.rb +97 -0
  91. data/integration/apps/rails-five/config/boot.rb +4 -0
  92. data/integration/apps/rails-five/config/cable.yml +10 -0
  93. data/integration/apps/rails-five/config/credentials.yml.enc +1 -0
  94. data/integration/apps/rails-five/config/database.yml +28 -0
  95. data/integration/apps/rails-five/config/environment.rb +5 -0
  96. data/integration/apps/rails-five/config/environments/development.rb +51 -0
  97. data/integration/apps/rails-five/config/environments/production.rb +82 -0
  98. data/integration/apps/rails-five/config/environments/test.rb +43 -0
  99. data/integration/apps/rails-five/config/initializers/datadog.rb +18 -0
  100. data/integration/apps/rails-five/config/initializers/filter_parameter_logging.rb +4 -0
  101. data/integration/apps/rails-five/config/initializers/resque.rb +4 -0
  102. data/integration/apps/rails-five/config/initializers/rollbar.rb +5 -0
  103. data/integration/apps/rails-five/config/initializers/wrap_parameters.rb +14 -0
  104. data/integration/apps/rails-five/config/locales/en.yml +33 -0
  105. data/integration/apps/rails-five/config/puma.rb +24 -0
  106. data/integration/apps/rails-five/config/routes.rb +11 -0
  107. data/integration/apps/rails-five/config/spring.rb +6 -0
  108. data/integration/apps/rails-five/config/unicorn.rb +29 -0
  109. data/integration/apps/rails-five/db/migrate/20190927215052_create_tests.rb +11 -0
  110. data/integration/apps/rails-five/db/schema.rb +23 -0
  111. data/integration/apps/rails-five/db/seeds.rb +7 -0
  112. data/integration/apps/rails-five/docker-compose.ci.yml +98 -0
  113. data/integration/apps/rails-five/docker-compose.yml +100 -0
  114. data/integration/apps/rails-five/lib/tasks/.keep +0 -0
  115. data/integration/apps/rails-five/log/.keep +0 -0
  116. data/integration/apps/rails-five/public/robots.txt +1 -0
  117. data/integration/apps/rails-five/script/build-images +35 -0
  118. data/integration/apps/rails-five/script/ci +50 -0
  119. data/integration/apps/rails-five/spec/integration/basic_spec.rb +10 -0
  120. data/integration/apps/rails-five/spec/spec_helper.rb +16 -0
  121. data/integration/apps/rails-five/spec/support/integration_helper.rb +22 -0
  122. data/integration/apps/rails-five/storage/.keep +0 -0
  123. data/integration/apps/rails-five/tmp/.keep +0 -0
  124. data/integration/apps/rails-five/vendor/.keep +0 -0
  125. data/integration/apps/ruby/.dockerignore +1 -0
  126. data/integration/apps/ruby/.envrc.sample +1 -0
  127. data/integration/apps/ruby/.gitignore +2 -0
  128. data/integration/apps/ruby/Dockerfile +25 -0
  129. data/integration/apps/ruby/Dockerfile-ci +11 -0
  130. data/integration/apps/ruby/Gemfile +11 -0
  131. data/integration/apps/ruby/README.md +70 -0
  132. data/integration/apps/ruby/agent.yaml +3 -0
  133. data/integration/apps/ruby/app/datadog.rb +13 -0
  134. data/integration/apps/ruby/app/fibonacci.rb +58 -0
  135. data/integration/apps/ruby/bin/run +20 -0
  136. data/integration/apps/ruby/bin/setup +17 -0
  137. data/integration/apps/ruby/bin/test +21 -0
  138. data/integration/apps/ruby/docker-compose.ci.yml +51 -0
  139. data/integration/apps/ruby/docker-compose.yml +63 -0
  140. data/integration/apps/ruby/script/build-images +38 -0
  141. data/integration/apps/ruby/script/ci +50 -0
  142. data/integration/images/agent/Dockerfile +2 -0
  143. data/integration/images/agent/agent.yaml +3 -0
  144. data/integration/images/include/datadog/analyzer.rb +71 -0
  145. data/integration/images/include/datadog/demo_env.rb +101 -0
  146. data/integration/images/include/http-health-check +33 -0
  147. data/integration/images/ruby/2.0/Dockerfile +54 -0
  148. data/integration/images/ruby/2.1/Dockerfile +54 -0
  149. data/integration/images/ruby/2.2/Dockerfile +54 -0
  150. data/integration/images/ruby/2.3/Dockerfile +70 -0
  151. data/integration/images/ruby/2.4/Dockerfile +54 -0
  152. data/integration/images/ruby/2.5/Dockerfile +54 -0
  153. data/integration/images/ruby/2.6/Dockerfile +54 -0
  154. data/integration/images/ruby/2.7/Dockerfile +54 -0
  155. data/integration/images/ruby/3.0/Dockerfile +54 -0
  156. data/integration/images/wrk/Dockerfile +33 -0
  157. data/integration/images/wrk/scripts/entrypoint.sh +17 -0
  158. data/integration/images/wrk/scripts/scenarios/basic/default.lua +1 -0
  159. data/integration/images/wrk/scripts/scenarios/basic/fibonacci.lua +1 -0
  160. data/integration/script/build-images +43 -0
  161. data/lib/ddtrace.rb +9 -5
  162. data/lib/ddtrace/analytics.rb +2 -0
  163. data/lib/ddtrace/auto_instrument.rb +3 -0
  164. data/lib/ddtrace/auto_instrument_base.rb +6 -0
  165. data/lib/ddtrace/buffer.rb +4 -4
  166. data/lib/ddtrace/configuration.rb +121 -26
  167. data/lib/ddtrace/configuration/base.rb +1 -1
  168. data/lib/ddtrace/configuration/components.rb +87 -5
  169. data/lib/ddtrace/configuration/option_definition.rb +1 -3
  170. data/lib/ddtrace/configuration/options.rb +4 -7
  171. data/lib/ddtrace/configuration/settings.rb +48 -3
  172. data/lib/ddtrace/context.rb +5 -6
  173. data/lib/ddtrace/context_provider.rb +0 -1
  174. data/lib/ddtrace/contrib/action_cable/event.rb +1 -0
  175. data/lib/ddtrace/contrib/action_cable/integration.rb +7 -0
  176. data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +1 -3
  177. data/lib/ddtrace/contrib/action_pack/integration.rb +7 -0
  178. data/lib/ddtrace/contrib/action_view/event.rb +1 -5
  179. data/lib/ddtrace/contrib/action_view/events/render_partial.rb +1 -0
  180. data/lib/ddtrace/contrib/action_view/events/render_template.rb +1 -0
  181. data/lib/ddtrace/contrib/action_view/integration.rb +7 -0
  182. data/lib/ddtrace/contrib/action_view/utils.rb +1 -1
  183. data/lib/ddtrace/contrib/active_record/configuration/makara_resolver.rb +30 -0
  184. data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +107 -18
  185. data/lib/ddtrace/contrib/active_record/integration.rb +7 -0
  186. data/lib/ddtrace/contrib/active_record/utils.rb +68 -21
  187. data/lib/ddtrace/contrib/active_support/integration.rb +7 -1
  188. data/lib/ddtrace/contrib/active_support/notifications/event.rb +2 -1
  189. data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +1 -0
  190. data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +9 -5
  191. data/lib/ddtrace/contrib/auto_instrument.rb +49 -0
  192. data/lib/ddtrace/contrib/aws/patcher.rb +1 -0
  193. data/lib/ddtrace/contrib/aws/services.rb +3 -0
  194. data/lib/ddtrace/contrib/configurable.rb +63 -39
  195. data/lib/ddtrace/contrib/configuration/resolver.rb +70 -5
  196. data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +20 -19
  197. data/lib/ddtrace/contrib/configuration/settings.rb +7 -6
  198. data/lib/ddtrace/contrib/cucumber/configuration/settings.rb +0 -10
  199. data/lib/ddtrace/contrib/cucumber/ext.rb +0 -2
  200. data/lib/ddtrace/contrib/cucumber/formatter.rb +5 -11
  201. data/lib/ddtrace/contrib/cucumber/integration.rb +5 -0
  202. data/lib/ddtrace/contrib/dalli/patcher.rb +0 -38
  203. data/lib/ddtrace/contrib/delayed_job/plugin.rb +0 -1
  204. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +1 -0
  205. data/lib/ddtrace/contrib/elasticsearch/quantize.rb +3 -2
  206. data/lib/ddtrace/contrib/ethon/easy_patch.rb +11 -10
  207. data/lib/ddtrace/contrib/ethon/ext.rb +1 -0
  208. data/lib/ddtrace/contrib/excon/middleware.rb +2 -6
  209. data/lib/ddtrace/contrib/extensions.rb +53 -3
  210. data/lib/ddtrace/contrib/faraday/middleware.rb +1 -3
  211. data/lib/ddtrace/contrib/faraday/patcher.rb +0 -36
  212. data/lib/ddtrace/contrib/grape/endpoint.rb +37 -26
  213. data/lib/ddtrace/contrib/grape/ext.rb +1 -0
  214. data/lib/ddtrace/contrib/grape/patcher.rb +0 -42
  215. data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +8 -8
  216. data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +1 -0
  217. data/lib/ddtrace/contrib/grpc/patcher.rb +0 -36
  218. data/lib/ddtrace/contrib/http/circuit_breaker.rb +1 -3
  219. data/lib/ddtrace/contrib/http/instrumentation.rb +5 -5
  220. data/lib/ddtrace/contrib/httpclient/configuration/settings.rb +32 -0
  221. data/lib/ddtrace/contrib/httpclient/ext.rb +17 -0
  222. data/lib/ddtrace/contrib/httpclient/instrumentation.rb +147 -0
  223. data/lib/ddtrace/contrib/httpclient/integration.rb +43 -0
  224. data/lib/ddtrace/contrib/httpclient/patcher.rb +38 -0
  225. data/lib/ddtrace/contrib/httprb/instrumentation.rb +15 -21
  226. data/lib/ddtrace/contrib/httprb/patcher.rb +5 -2
  227. data/lib/ddtrace/contrib/mongodb/instrumentation.rb +2 -0
  228. data/lib/ddtrace/contrib/mongodb/subscribers.rb +2 -3
  229. data/lib/ddtrace/contrib/patchable.rb +18 -7
  230. data/lib/ddtrace/contrib/patcher.rb +9 -6
  231. data/lib/ddtrace/contrib/presto/patcher.rb +5 -2
  232. data/lib/ddtrace/contrib/qless/configuration/settings.rb +35 -0
  233. data/lib/ddtrace/contrib/qless/ext.rb +20 -0
  234. data/lib/ddtrace/contrib/qless/integration.rb +38 -0
  235. data/lib/ddtrace/contrib/qless/patcher.rb +35 -0
  236. data/lib/ddtrace/contrib/qless/qless_job.rb +73 -0
  237. data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +33 -0
  238. data/lib/ddtrace/contrib/que/ext.rb +19 -19
  239. data/lib/ddtrace/contrib/que/tracer.rb +1 -1
  240. data/lib/ddtrace/contrib/racecar/event.rb +1 -0
  241. data/lib/ddtrace/contrib/rack/configuration/settings.rb +3 -3
  242. data/lib/ddtrace/contrib/rack/integration.rb +7 -0
  243. data/lib/ddtrace/contrib/rack/middlewares.rb +6 -11
  244. data/lib/ddtrace/contrib/rack/patcher.rb +1 -3
  245. data/lib/ddtrace/contrib/rack/request_queue.rb +6 -1
  246. data/lib/ddtrace/contrib/rails/auto_instrument_railtie.rb +10 -0
  247. data/lib/ddtrace/contrib/rails/patcher.rb +6 -2
  248. data/lib/ddtrace/contrib/rails/utils.rb +4 -0
  249. data/lib/ddtrace/contrib/rake/instrumentation.rb +4 -2
  250. data/lib/ddtrace/contrib/rake/integration.rb +1 -1
  251. data/lib/ddtrace/contrib/redis/configuration/resolver.rb +14 -5
  252. data/lib/ddtrace/contrib/redis/configuration/settings.rb +5 -0
  253. data/lib/ddtrace/contrib/redis/ext.rb +1 -0
  254. data/lib/ddtrace/contrib/redis/patcher.rb +20 -3
  255. data/lib/ddtrace/contrib/redis/quantize.rb +28 -0
  256. data/lib/ddtrace/contrib/redis/tags.rb +5 -1
  257. data/lib/ddtrace/contrib/redis/vendor/LICENSE +20 -0
  258. data/lib/ddtrace/contrib/redis/vendor/resolver.rb +6 -7
  259. data/lib/ddtrace/contrib/registry.rb +2 -2
  260. data/lib/ddtrace/contrib/resque/configuration/settings.rb +17 -1
  261. data/lib/ddtrace/contrib/resque/integration.rb +1 -1
  262. data/lib/ddtrace/contrib/resque/patcher.rb +4 -4
  263. data/lib/ddtrace/contrib/resque/resque_job.rb +24 -1
  264. data/lib/ddtrace/contrib/rest_client/request_patch.rb +1 -3
  265. data/lib/ddtrace/contrib/rspec/configuration/settings.rb +0 -10
  266. data/lib/ddtrace/contrib/rspec/example.rb +24 -10
  267. data/lib/ddtrace/contrib/rspec/ext.rb +0 -3
  268. data/lib/ddtrace/contrib/rspec/integration.rb +6 -1
  269. data/lib/ddtrace/contrib/rspec/patcher.rb +0 -2
  270. data/lib/ddtrace/contrib/sequel/utils.rb +5 -6
  271. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +1 -0
  272. data/lib/ddtrace/contrib/shoryuken/tracer.rb +7 -4
  273. data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +2 -7
  274. data/lib/ddtrace/contrib/sidekiq/tracing.rb +0 -1
  275. data/lib/ddtrace/contrib/sinatra/env.rb +1 -3
  276. data/lib/ddtrace/contrib/sinatra/headers.rb +1 -3
  277. data/lib/ddtrace/contrib/sinatra/tracer.rb +1 -3
  278. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +5 -5
  279. data/lib/ddtrace/contrib/sneakers/ext.rb +11 -11
  280. data/lib/ddtrace/contrib/sneakers/tracer.rb +2 -4
  281. data/lib/ddtrace/contrib/status_code_matcher.rb +5 -3
  282. data/lib/ddtrace/correlation.rb +1 -0
  283. data/lib/ddtrace/diagnostics/environment_logger.rb +3 -2
  284. data/lib/ddtrace/distributed_tracing/headers/headers.rb +1 -0
  285. data/lib/ddtrace/distributed_tracing/headers/helpers.rb +1 -3
  286. data/lib/ddtrace/error.rb +2 -0
  287. data/lib/ddtrace/ext/ci.rb +43 -11
  288. data/lib/ddtrace/ext/distributed.rb +1 -1
  289. data/lib/ddtrace/ext/git.rb +0 -1
  290. data/lib/ddtrace/ext/http.rb +1 -1
  291. data/lib/ddtrace/ext/profiling.rb +52 -0
  292. data/lib/ddtrace/ext/runtime.rb +3 -1
  293. data/lib/ddtrace/ext/transport.rb +1 -0
  294. data/lib/ddtrace/forced_tracing.rb +2 -0
  295. data/lib/ddtrace/logger.rb +1 -1
  296. data/lib/ddtrace/metrics.rb +14 -6
  297. data/lib/ddtrace/opentracer/distributed_headers.rb +3 -0
  298. data/lib/ddtrace/opentracer/span.rb +2 -6
  299. data/lib/ddtrace/opentracer/thread_local_scope.rb +1 -0
  300. data/lib/ddtrace/patcher.rb +25 -4
  301. data/lib/ddtrace/pin.rb +8 -61
  302. data/lib/ddtrace/pipeline/span_filter.rb +1 -1
  303. data/lib/ddtrace/profiling.rb +54 -0
  304. data/lib/ddtrace/profiling/backtrace_location.rb +32 -0
  305. data/lib/ddtrace/profiling/buffer.rb +41 -0
  306. data/lib/ddtrace/profiling/collectors/stack.rb +253 -0
  307. data/lib/ddtrace/profiling/encoding/profile.rb +31 -0
  308. data/lib/ddtrace/profiling/event.rb +13 -0
  309. data/lib/ddtrace/profiling/events/stack.rb +102 -0
  310. data/lib/ddtrace/profiling/exporter.rb +23 -0
  311. data/lib/ddtrace/profiling/ext/cpu.rb +54 -0
  312. data/lib/ddtrace/profiling/ext/cthread.rb +134 -0
  313. data/lib/ddtrace/profiling/ext/forking.rb +97 -0
  314. data/lib/ddtrace/profiling/flush.rb +41 -0
  315. data/lib/ddtrace/profiling/pprof/builder.rb +121 -0
  316. data/lib/ddtrace/profiling/pprof/converter.rb +85 -0
  317. data/lib/ddtrace/profiling/pprof/message_set.rb +12 -0
  318. data/lib/ddtrace/profiling/pprof/payload.rb +18 -0
  319. data/lib/ddtrace/profiling/pprof/pprof.proto +212 -0
  320. data/lib/ddtrace/profiling/pprof/pprof_pb.rb +81 -0
  321. data/lib/ddtrace/profiling/pprof/stack_sample.rb +90 -0
  322. data/lib/ddtrace/profiling/pprof/string_table.rb +10 -0
  323. data/lib/ddtrace/profiling/pprof/template.rb +114 -0
  324. data/lib/ddtrace/profiling/preload.rb +3 -0
  325. data/lib/ddtrace/profiling/profiler.rb +28 -0
  326. data/lib/ddtrace/profiling/recorder.rb +87 -0
  327. data/lib/ddtrace/profiling/scheduler.rb +84 -0
  328. data/lib/ddtrace/profiling/tasks/setup.rb +77 -0
  329. data/lib/ddtrace/profiling/transport/client.rb +12 -0
  330. data/lib/ddtrace/profiling/transport/http.rb +122 -0
  331. data/lib/ddtrace/profiling/transport/http/api.rb +43 -0
  332. data/lib/ddtrace/profiling/transport/http/api/endpoint.rb +90 -0
  333. data/lib/ddtrace/profiling/transport/http/api/instance.rb +36 -0
  334. data/lib/ddtrace/profiling/transport/http/api/spec.rb +40 -0
  335. data/lib/ddtrace/profiling/transport/http/builder.rb +28 -0
  336. data/lib/ddtrace/profiling/transport/http/client.rb +33 -0
  337. data/lib/ddtrace/profiling/transport/http/response.rb +21 -0
  338. data/lib/ddtrace/profiling/transport/io.rb +30 -0
  339. data/lib/ddtrace/profiling/transport/io/client.rb +27 -0
  340. data/lib/ddtrace/profiling/transport/io/response.rb +16 -0
  341. data/lib/ddtrace/profiling/transport/parcel.rb +17 -0
  342. data/lib/ddtrace/profiling/transport/request.rb +15 -0
  343. data/lib/ddtrace/profiling/transport/response.rb +8 -0
  344. data/lib/ddtrace/propagation/grpc_propagator.rb +1 -0
  345. data/lib/ddtrace/propagation/http_propagator.rb +17 -2
  346. data/lib/ddtrace/quantization/http.rb +1 -0
  347. data/lib/ddtrace/runtime/cgroup.rb +2 -2
  348. data/lib/ddtrace/runtime/container.rb +32 -26
  349. data/lib/ddtrace/runtime/identity.rb +8 -0
  350. data/lib/ddtrace/sampler.rb +1 -1
  351. data/lib/ddtrace/sampling/rule_sampler.rb +4 -9
  352. data/lib/ddtrace/span.rb +7 -7
  353. data/lib/ddtrace/sync_writer.rb +12 -12
  354. data/lib/ddtrace/tasks/exec.rb +48 -0
  355. data/lib/ddtrace/tasks/help.rb +14 -0
  356. data/lib/ddtrace/tracer.rb +28 -5
  357. data/lib/ddtrace/transport/http.rb +15 -8
  358. data/lib/ddtrace/transport/http/adapters/net.rb +27 -8
  359. data/lib/ddtrace/transport/http/adapters/registry.rb +1 -0
  360. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +2 -4
  361. data/lib/ddtrace/transport/http/builder.rb +7 -1
  362. data/lib/ddtrace/transport/http/env.rb +8 -0
  363. data/lib/ddtrace/transport/http/traces.rb +2 -3
  364. data/lib/ddtrace/transport/io.rb +1 -1
  365. data/lib/ddtrace/transport/io/client.rb +15 -8
  366. data/lib/ddtrace/transport/io/response.rb +1 -3
  367. data/lib/ddtrace/transport/io/traces.rb +6 -0
  368. data/lib/ddtrace/transport/parcel.rb +4 -0
  369. data/lib/ddtrace/transport/traces.rb +18 -1
  370. data/lib/ddtrace/utils/compression.rb +27 -0
  371. data/lib/ddtrace/utils/object_set.rb +41 -0
  372. data/lib/ddtrace/utils/only_once.rb +40 -0
  373. data/lib/ddtrace/utils/sequence.rb +17 -0
  374. data/lib/ddtrace/utils/string_table.rb +45 -0
  375. data/lib/ddtrace/utils/time.rb +32 -1
  376. data/lib/ddtrace/vendor/active_record/MIT-LICENSE +20 -0
  377. data/lib/ddtrace/vendor/multipart-post/LICENSE +11 -0
  378. data/lib/ddtrace/vendor/multipart-post/multipart.rb +12 -0
  379. data/lib/ddtrace/vendor/multipart-post/multipart/post.rb +8 -0
  380. data/lib/ddtrace/vendor/multipart-post/multipart/post/composite_read_io.rb +116 -0
  381. data/lib/ddtrace/vendor/multipart-post/multipart/post/multipartable.rb +57 -0
  382. data/lib/ddtrace/vendor/multipart-post/multipart/post/parts.rb +135 -0
  383. data/lib/ddtrace/vendor/multipart-post/multipart/post/version.rb +9 -0
  384. data/lib/ddtrace/vendor/multipart-post/net/http/post/multipart.rb +32 -0
  385. data/lib/ddtrace/version.rb +3 -1
  386. data/lib/ddtrace/workers.rb +5 -0
  387. data/lib/ddtrace/workers/async.rb +11 -3
  388. data/lib/ddtrace/workers/loop.rb +17 -3
  389. data/lib/ddtrace/workers/polling.rb +1 -0
  390. data/lib/ddtrace/workers/queue.rb +1 -0
  391. data/lib/ddtrace/workers/runtime_metrics.rb +21 -4
  392. data/lib/ddtrace/workers/trace_writer.rb +10 -10
  393. data/lib/ddtrace/writer.rb +7 -4
  394. metadata +224 -342
  395. data/lib/ddtrace/augmentation.rb +0 -13
  396. data/lib/ddtrace/augmentation/method_wrapper.rb +0 -20
  397. data/lib/ddtrace/augmentation/method_wrapping.rb +0 -38
  398. data/lib/ddtrace/augmentation/shim.rb +0 -102
  399. data/lib/ddtrace/contrib/rspec/example_group.rb +0 -61
  400. 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 = 43
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
@@ -12,19 +12,23 @@ module Datadog
12
12
  extend Forwardable
13
13
  include Workers::Polling
14
14
 
15
+ # In seconds
16
+ DEFAULT_FLUSH_INTERVAL = 10
17
+ DEFAULT_BACK_OFF_MAX = 30
18
+
15
19
  attr_reader \
16
20
  :metrics
17
21
 
18
22
  def initialize(options = {})
19
- @metrics = options.fetch(:metrics, Runtime::Metrics.new)
23
+ @metrics = options.fetch(:metrics) { Runtime::Metrics.new }
20
24
 
21
25
  # Workers::Async::Thread settings
22
26
  self.fork_policy = options.fetch(:fork_policy, Workers::Async::Thread::FORK_POLICY_STOP)
23
27
 
24
28
  # 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)
29
+ self.loop_base_interval = options.fetch(:interval, DEFAULT_FLUSH_INTERVAL)
30
+ self.loop_back_off_ratio = options[:back_off_ratio] if options.key?(:back_off_ratio)
31
+ self.loop_back_off_max = options.fetch(:back_off_max, DEFAULT_BACK_OFF_MAX)
28
32
 
29
33
  self.enabled = options.fetch(:enabled, false)
30
34
  end
@@ -39,6 +43,19 @@ module Datadog
39
43
  metrics.associate_with_span(*args).tap { perform }
40
44
  end
41
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
+
42
59
  def_delegators \
43
60
  :metrics,
44
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.43.0
4
+ version: 0.48.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Datadog, Inc.
8
- autorequire:
9
- bindir: exe
8
+ autorequire:
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-18 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,348 +25,27 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: dogstatsd-ruby
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: minitest
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - '='
130
- - !ruby/object:Gem::Version
131
- version: 5.10.1
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - '='
137
- - !ruby/object:Gem::Version
138
- version: 5.10.1
139
- - !ruby/object:Gem::Dependency
140
- name: minitest-around
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - '='
144
- - !ruby/object:Gem::Version
145
- version: 0.5.0
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - '='
151
- - !ruby/object:Gem::Version
152
- version: 0.5.0
153
- - !ruby/object:Gem::Dependency
154
- name: minitest-stub_any_instance
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - '='
158
- - !ruby/object:Gem::Version
159
- version: 1.0.2
160
- type: :development
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - '='
165
- - !ruby/object:Gem::Version
166
- version: 1.0.2
167
- - !ruby/object:Gem::Dependency
168
- name: appraisal
169
- requirement: !ruby/object:Gem::Requirement
170
- requirements:
171
- - - "~>"
172
- - !ruby/object:Gem::Version
173
- version: '2.2'
174
- type: :development
175
- prerelease: false
176
- version_requirements: !ruby/object:Gem::Requirement
177
- requirements:
178
- - - "~>"
179
- - !ruby/object:Gem::Version
180
- version: '2.2'
181
- - !ruby/object:Gem::Dependency
182
- name: yard
183
- requirement: !ruby/object:Gem::Requirement
184
- requirements:
185
- - - "~>"
186
- - !ruby/object:Gem::Version
187
- version: '0.9'
188
- type: :development
189
- prerelease: false
190
- version_requirements: !ruby/object:Gem::Requirement
191
- requirements:
192
- - - "~>"
193
- - !ruby/object:Gem::Version
194
- version: '0.9'
195
- - !ruby/object:Gem::Dependency
196
- name: webmock
28
+ name: ffi
197
29
  requirement: !ruby/object:Gem::Requirement
198
30
  requirements:
199
31
  - - "~>"
200
32
  - !ruby/object:Gem::Version
201
- version: '2.0'
202
- type: :development
203
- prerelease: false
204
- version_requirements: !ruby/object:Gem::Requirement
205
- requirements:
206
- - - "~>"
207
- - !ruby/object:Gem::Version
208
- version: '2.0'
209
- - !ruby/object:Gem::Dependency
210
- name: builder
211
- requirement: !ruby/object:Gem::Requirement
212
- requirements:
213
- - - ">="
214
- - !ruby/object:Gem::Version
215
- version: '0'
216
- type: :development
217
- prerelease: false
218
- version_requirements: !ruby/object:Gem::Requirement
219
- requirements:
220
- - - ">="
221
- - !ruby/object:Gem::Version
222
- version: '0'
223
- - !ruby/object:Gem::Dependency
224
- name: sqlite3
225
- requirement: !ruby/object:Gem::Requirement
226
- requirements:
227
- - - "~>"
228
- - !ruby/object:Gem::Version
229
- version: 1.3.6
230
- type: :development
231
- prerelease: false
232
- version_requirements: !ruby/object:Gem::Requirement
233
- requirements:
234
- - - "~>"
235
- - !ruby/object:Gem::Version
236
- version: 1.3.6
237
- - !ruby/object:Gem::Dependency
238
- name: climate_control
239
- requirement: !ruby/object:Gem::Requirement
240
- requirements:
241
- - - "~>"
242
- - !ruby/object:Gem::Version
243
- version: 0.2.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.2.0
251
- - !ruby/object:Gem::Dependency
252
- name: addressable
253
- requirement: !ruby/object:Gem::Requirement
254
- requirements:
255
- - - "~>"
256
- - !ruby/object:Gem::Version
257
- version: 2.4.0
258
- type: :development
259
- prerelease: false
260
- version_requirements: !ruby/object:Gem::Requirement
261
- requirements:
262
- - - "~>"
263
- - !ruby/object:Gem::Version
264
- version: 2.4.0
265
- - !ruby/object:Gem::Dependency
266
- name: benchmark-ips
267
- requirement: !ruby/object:Gem::Requirement
268
- requirements:
269
- - - "~>"
270
- - !ruby/object:Gem::Version
271
- version: '2.8'
272
- type: :development
273
- prerelease: false
274
- version_requirements: !ruby/object:Gem::Requirement
275
- requirements:
276
- - - "~>"
277
- - !ruby/object:Gem::Version
278
- version: '2.8'
279
- - !ruby/object:Gem::Dependency
280
- name: benchmark-memory
281
- requirement: !ruby/object:Gem::Requirement
282
- requirements:
283
- - - "~>"
284
- - !ruby/object:Gem::Version
285
- version: '0.1'
286
- type: :development
287
- prerelease: false
288
- version_requirements: !ruby/object:Gem::Requirement
289
- requirements:
290
- - - "~>"
291
- - !ruby/object:Gem::Version
292
- version: '0.1'
293
- - !ruby/object:Gem::Dependency
294
- name: memory_profiler
295
- requirement: !ruby/object:Gem::Requirement
296
- requirements:
297
- - - "~>"
298
- - !ruby/object:Gem::Version
299
- version: '0.9'
300
- type: :development
301
- prerelease: false
302
- version_requirements: !ruby/object:Gem::Requirement
303
- requirements:
304
- - - "~>"
305
- - !ruby/object:Gem::Version
306
- version: '0.9'
307
- - !ruby/object:Gem::Dependency
308
- name: redcarpet
309
- requirement: !ruby/object:Gem::Requirement
310
- requirements:
311
- - - "~>"
312
- - !ruby/object:Gem::Version
313
- version: '3.4'
314
- type: :development
315
- prerelease: false
316
- version_requirements: !ruby/object:Gem::Requirement
317
- requirements:
318
- - - "~>"
319
- - !ruby/object:Gem::Version
320
- version: '3.4'
321
- - !ruby/object:Gem::Dependency
322
- name: pry
323
- requirement: !ruby/object:Gem::Requirement
324
- requirements:
325
- - - "~>"
326
- - !ruby/object:Gem::Version
327
- version: 0.10.4
328
- type: :development
329
- prerelease: false
330
- version_requirements: !ruby/object:Gem::Requirement
331
- requirements:
332
- - - "~>"
333
- - !ruby/object:Gem::Version
334
- version: 0.10.4
335
- - !ruby/object:Gem::Dependency
336
- name: pry-stack_explorer
337
- requirement: !ruby/object:Gem::Requirement
338
- requirements:
339
- - - "~>"
340
- - !ruby/object:Gem::Version
341
- version: 0.4.9.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.4.9.2
349
- - !ruby/object:Gem::Dependency
350
- name: simplecov
351
- requirement: !ruby/object:Gem::Requirement
352
- requirements:
353
- - - "~>"
354
- - !ruby/object:Gem::Version
355
- version: '0.17'
356
- type: :development
33
+ version: '1.0'
34
+ type: :runtime
357
35
  prerelease: false
358
36
  version_requirements: !ruby/object:Gem::Requirement
359
37
  requirements:
360
38
  - - "~>"
361
39
  - !ruby/object:Gem::Version
362
- version: '0.17'
40
+ version: '1.0'
363
41
  description: |
364
42
  ddtrace is Datadog’s tracing client for Ruby. It is used to trace requests
365
43
  as they flow across web servers, databases and microservices so that developers
366
44
  have great visiblity into bottlenecks and troublesome requests.
367
45
  email:
368
46
  - dev@datadoghq.com
369
- executables: []
47
+ executables:
48
+ - ddtracerb
370
49
  extensions: []
371
50
  extra_rdoc_files: []
372
51
  files:
@@ -379,7 +58,10 @@ files:
379
58
  - ".circleci/images/primary/Dockerfile-2.5.6"
380
59
  - ".circleci/images/primary/Dockerfile-2.6.4"
381
60
  - ".circleci/images/primary/Dockerfile-2.7.0"
382
- - ".circleci/images/primary/Dockerfile-jruby-9.2"
61
+ - ".circleci/images/primary/Dockerfile-3.0.0"
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"
383
65
  - ".dockerignore"
384
66
  - ".env"
385
67
  - ".github/CODEOWNERS"
@@ -389,6 +71,7 @@ files:
389
71
  - ".gitlab-ci.yml"
390
72
  - ".rspec"
391
73
  - ".rubocop.yml"
74
+ - ".rubocop_todo.yml"
392
75
  - ".simplecov"
393
76
  - ".yardopts"
394
77
  - Appraisals
@@ -396,6 +79,7 @@ files:
396
79
  - CONTRIBUTING.md
397
80
  - Gemfile
398
81
  - LICENSE
82
+ - LICENSE-3rdparty.csv
399
83
  - LICENSE.Apache
400
84
  - LICENSE.BSD3
401
85
  - NOTICE
@@ -403,16 +87,144 @@ files:
403
87
  - Rakefile
404
88
  - benchmarks/postgres_database.yml
405
89
  - benchmarks/sidekiq_test.rb
90
+ - bin/ddtracerb
406
91
  - ddtrace.gemspec
407
92
  - docker-compose.yml
408
93
  - docs/DevelopmentGuide.md
409
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
410
224
  - lib/ddtrace.rb
411
225
  - lib/ddtrace/analytics.rb
412
- - lib/ddtrace/augmentation.rb
413
- - lib/ddtrace/augmentation/method_wrapper.rb
414
- - lib/ddtrace/augmentation/method_wrapping.rb
415
- - lib/ddtrace/augmentation/shim.rb
226
+ - lib/ddtrace/auto_instrument.rb
227
+ - lib/ddtrace/auto_instrument_base.rb
416
228
  - lib/ddtrace/buffer.rb
417
229
  - lib/ddtrace/chunker.rb
418
230
  - lib/ddtrace/configuration.rb
@@ -465,6 +277,7 @@ files:
465
277
  - lib/ddtrace/contrib/active_model_serializers/ext.rb
466
278
  - lib/ddtrace/contrib/active_model_serializers/integration.rb
467
279
  - lib/ddtrace/contrib/active_model_serializers/patcher.rb
280
+ - lib/ddtrace/contrib/active_record/configuration/makara_resolver.rb
468
281
  - lib/ddtrace/contrib/active_record/configuration/resolver.rb
469
282
  - lib/ddtrace/contrib/active_record/configuration/settings.rb
470
283
  - lib/ddtrace/contrib/active_record/event.rb
@@ -486,6 +299,7 @@ files:
486
299
  - lib/ddtrace/contrib/active_support/notifications/subscription.rb
487
300
  - lib/ddtrace/contrib/active_support/patcher.rb
488
301
  - lib/ddtrace/contrib/analytics.rb
302
+ - lib/ddtrace/contrib/auto_instrument.rb
489
303
  - lib/ddtrace/contrib/aws/configuration/settings.rb
490
304
  - lib/ddtrace/contrib/aws/ext.rb
491
305
  - lib/ddtrace/contrib/aws/instrumentation.rb
@@ -569,6 +383,11 @@ files:
569
383
  - lib/ddtrace/contrib/http/integration.rb
570
384
  - lib/ddtrace/contrib/http/patcher.rb
571
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
572
391
  - lib/ddtrace/contrib/httprb/configuration/settings.rb
573
392
  - lib/ddtrace/contrib/httprb/ext.rb
574
393
  - lib/ddtrace/contrib/httprb/instrumentation.rb
@@ -611,6 +430,12 @@ files:
611
430
  - lib/ddtrace/contrib/presto/instrumentation.rb
612
431
  - lib/ddtrace/contrib/presto/integration.rb
613
432
  - lib/ddtrace/contrib/presto/patcher.rb
433
+ - lib/ddtrace/contrib/qless/configuration/settings.rb
434
+ - lib/ddtrace/contrib/qless/ext.rb
435
+ - lib/ddtrace/contrib/qless/integration.rb
436
+ - lib/ddtrace/contrib/qless/patcher.rb
437
+ - lib/ddtrace/contrib/qless/qless_job.rb
438
+ - lib/ddtrace/contrib/qless/tracer_cleaner.rb
614
439
  - lib/ddtrace/contrib/que/configuration/settings.rb
615
440
  - lib/ddtrace/contrib/que/ext.rb
616
441
  - lib/ddtrace/contrib/que/integration.rb
@@ -631,6 +456,7 @@ files:
631
456
  - lib/ddtrace/contrib/rack/middlewares.rb
632
457
  - lib/ddtrace/contrib/rack/patcher.rb
633
458
  - lib/ddtrace/contrib/rack/request_queue.rb
459
+ - lib/ddtrace/contrib/rails/auto_instrument_railtie.rb
634
460
  - lib/ddtrace/contrib/rails/configuration/settings.rb
635
461
  - lib/ddtrace/contrib/rails/ext.rb
636
462
  - lib/ddtrace/contrib/rails/framework.rb
@@ -652,6 +478,7 @@ files:
652
478
  - lib/ddtrace/contrib/redis/patcher.rb
653
479
  - lib/ddtrace/contrib/redis/quantize.rb
654
480
  - lib/ddtrace/contrib/redis/tags.rb
481
+ - lib/ddtrace/contrib/redis/vendor/LICENSE
655
482
  - lib/ddtrace/contrib/redis/vendor/resolver.rb
656
483
  - lib/ddtrace/contrib/registerable.rb
657
484
  - lib/ddtrace/contrib/registry.rb
@@ -667,7 +494,6 @@ files:
667
494
  - lib/ddtrace/contrib/rest_client/request_patch.rb
668
495
  - lib/ddtrace/contrib/rspec/configuration/settings.rb
669
496
  - lib/ddtrace/contrib/rspec/example.rb
670
- - lib/ddtrace/contrib/rspec/example_group.rb
671
497
  - lib/ddtrace/contrib/rspec/ext.rb
672
498
  - lib/ddtrace/contrib/rspec/integration.rb
673
499
  - lib/ddtrace/contrib/rspec/patcher.rb
@@ -738,6 +564,7 @@ files:
738
564
  - lib/ddtrace/ext/metrics.rb
739
565
  - lib/ddtrace/ext/net.rb
740
566
  - lib/ddtrace/ext/priority.rb
567
+ - lib/ddtrace/ext/profiling.rb
741
568
  - lib/ddtrace/ext/runtime.rb
742
569
  - lib/ddtrace/ext/sampling.rb
743
570
  - lib/ddtrace/ext/sql.rb
@@ -746,7 +573,6 @@ files:
746
573
  - lib/ddtrace/forced_tracing.rb
747
574
  - lib/ddtrace/logger.rb
748
575
  - lib/ddtrace/metrics.rb
749
- - lib/ddtrace/monkey.rb
750
576
  - lib/ddtrace/opentelemetry/extensions.rb
751
577
  - lib/ddtrace/opentelemetry/span.rb
752
578
  - lib/ddtrace/opentracer.rb
@@ -770,6 +596,47 @@ files:
770
596
  - lib/ddtrace/pipeline.rb
771
597
  - lib/ddtrace/pipeline/span_filter.rb
772
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
773
640
  - lib/ddtrace/propagation/grpc_propagator.rb
774
641
  - lib/ddtrace/propagation/http_propagator.rb
775
642
  - lib/ddtrace/quantization/hash.rb
@@ -791,6 +658,8 @@ files:
791
658
  - lib/ddtrace/sampling/rule_sampler.rb
792
659
  - lib/ddtrace/span.rb
793
660
  - lib/ddtrace/sync_writer.rb
661
+ - lib/ddtrace/tasks/exec.rb
662
+ - lib/ddtrace/tasks/help.rb
794
663
  - lib/ddtrace/tracer.rb
795
664
  - lib/ddtrace/transport/http.rb
796
665
  - lib/ddtrace/transport/http/adapters/net.rb
@@ -819,10 +688,24 @@ files:
819
688
  - lib/ddtrace/transport/statistics.rb
820
689
  - lib/ddtrace/transport/traces.rb
821
690
  - lib/ddtrace/utils.rb
691
+ - lib/ddtrace/utils/compression.rb
822
692
  - lib/ddtrace/utils/database.rb
823
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
824
698
  - lib/ddtrace/utils/time.rb
699
+ - lib/ddtrace/vendor/active_record/MIT-LICENSE
825
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
826
709
  - lib/ddtrace/version.rb
827
710
  - lib/ddtrace/worker.rb
828
711
  - lib/ddtrace/workers.rb
@@ -839,7 +722,7 @@ licenses:
839
722
  - BSD-3-Clause
840
723
  metadata:
841
724
  allowed_push_host: https://rubygems.org
842
- post_install_message:
725
+ post_install_message:
843
726
  rdoc_options: []
844
727
  require_paths:
845
728
  - lib
@@ -854,9 +737,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
854
737
  - !ruby/object:Gem::Version
855
738
  version: 2.0.0
856
739
  requirements: []
857
- rubyforge_project:
858
- rubygems_version: 2.2.5
859
- signing_key:
740
+ rubygems_version: 3.2.3
741
+ signing_key:
860
742
  specification_version: 4
861
743
  summary: Datadog tracing code for your Ruby applications
862
744
  test_files: []