ddtrace 0.40.0 → 0.50.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (852) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +502 -180
  3. data/.circleci/images/primary/Dockerfile-2.1.10 +11 -1
  4. data/.circleci/images/primary/Dockerfile-2.2.10 +11 -1
  5. data/.circleci/images/primary/Dockerfile-2.3.8 +10 -0
  6. data/.circleci/images/primary/Dockerfile-2.4.6 +10 -0
  7. data/.circleci/images/primary/Dockerfile-2.5.6 +10 -0
  8. data/.circleci/images/primary/Dockerfile-2.6.4 +10 -0
  9. data/.circleci/images/primary/Dockerfile-2.7.0 +10 -0
  10. data/.circleci/images/primary/{Dockerfile-2.0.0 → Dockerfile-3.0.0} +8 -8
  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.1.0 +73 -0
  14. data/.dockerignore +0 -1
  15. data/.github/workflows/add-milestone-to-pull-requests.yml +42 -0
  16. data/.github/workflows/create-next-milestone.yml +20 -0
  17. data/.gitignore +0 -1
  18. data/.gitlab-ci.yml +18 -18
  19. data/.rubocop.yml +273 -7
  20. data/.rubocop_todo.yml +438 -0
  21. data/.simplecov +9 -0
  22. data/Appraisals +483 -231
  23. data/CHANGELOG.md +1386 -342
  24. data/CONTRIBUTING.md +2 -2
  25. data/Gemfile +65 -3
  26. data/LICENSE-3rdparty.csv +2 -0
  27. data/README.md +1 -0
  28. data/Rakefile +486 -338
  29. data/benchmarks/data/profiler-submission-marshal.gz +0 -0
  30. data/benchmarks/profiler_sample_loop.rb +69 -0
  31. data/benchmarks/profiler_submission.rb +93 -0
  32. data/bin/ddtracerb +15 -0
  33. data/ddtrace.gemspec +8 -36
  34. data/docker-compose.yml +93 -49
  35. data/docs/DevelopmentGuide.md +40 -2
  36. data/docs/GettingStarted.md +299 -78
  37. data/docs/ProfilingDevelopment.md +88 -0
  38. data/gemfiles/jruby_9.2.0.0_contrib.gemfile +79 -0
  39. data/gemfiles/jruby_9.2.0.0_contrib.gemfile.lock +1518 -0
  40. data/gemfiles/jruby_9.2.0.0_contrib_old.gemfile +35 -0
  41. data/gemfiles/jruby_9.2.0.0_contrib_old.gemfile.lock +157 -0
  42. data/gemfiles/jruby_9.2.0.0_core_old.gemfile +34 -0
  43. data/gemfiles/jruby_9.2.0.0_core_old.gemfile.lock +153 -0
  44. data/gemfiles/jruby_9.2.0.0_cucumber3.gemfile +35 -0
  45. data/gemfiles/jruby_9.2.0.0_cucumber3.gemfile.lock +174 -0
  46. data/gemfiles/jruby_9.2.0.0_cucumber4.gemfile +35 -0
  47. data/gemfiles/jruby_9.2.0.0_cucumber4.gemfile.lock +206 -0
  48. data/gemfiles/jruby_9.2.0.0_cucumber5.gemfile +35 -0
  49. data/gemfiles/jruby_9.2.0.0_cucumber5.gemfile.lock +206 -0
  50. data/gemfiles/jruby_9.2.0.0_rails5_mysql2.gemfile +40 -0
  51. data/gemfiles/jruby_9.2.0.0_rails5_mysql2.gemfile.lock +271 -0
  52. data/gemfiles/jruby_9.2.0.0_rails5_postgres.gemfile +40 -0
  53. data/gemfiles/jruby_9.2.0.0_rails5_postgres.gemfile.lock +271 -0
  54. data/gemfiles/jruby_9.2.0.0_rails5_postgres_redis.gemfile +41 -0
  55. data/gemfiles/jruby_9.2.0.0_rails5_postgres_redis.gemfile.lock +273 -0
  56. data/gemfiles/jruby_9.2.0.0_rails5_postgres_redis_activesupport.gemfile +41 -0
  57. data/gemfiles/jruby_9.2.0.0_rails5_postgres_redis_activesupport.gemfile.lock +273 -0
  58. data/gemfiles/jruby_9.2.0.0_rails5_postgres_sidekiq.gemfile +42 -0
  59. data/gemfiles/jruby_9.2.0.0_rails5_postgres_sidekiq.gemfile.lock +279 -0
  60. data/gemfiles/jruby_9.2.0.0_rails61_mysql2.gemfile +40 -0
  61. data/gemfiles/jruby_9.2.0.0_rails61_mysql2.gemfile.lock +290 -0
  62. data/gemfiles/jruby_9.2.0.0_rails61_postgres.gemfile +40 -0
  63. data/gemfiles/jruby_9.2.0.0_rails61_postgres.gemfile.lock +290 -0
  64. data/gemfiles/jruby_9.2.0.0_rails61_postgres_redis.gemfile +41 -0
  65. data/gemfiles/jruby_9.2.0.0_rails61_postgres_redis.gemfile.lock +292 -0
  66. data/gemfiles/jruby_9.2.0.0_rails61_postgres_sidekiq.gemfile +41 -0
  67. data/gemfiles/jruby_9.2.0.0_rails61_postgres_sidekiq.gemfile.lock +297 -0
  68. data/gemfiles/jruby_9.2.0.0_rails6_mysql2.gemfile +40 -0
  69. data/gemfiles/jruby_9.2.0.0_rails6_mysql2.gemfile.lock +287 -0
  70. data/gemfiles/jruby_9.2.0.0_rails6_postgres.gemfile +40 -0
  71. data/gemfiles/jruby_9.2.0.0_rails6_postgres.gemfile.lock +287 -0
  72. data/gemfiles/jruby_9.2.0.0_rails6_postgres_redis.gemfile +41 -0
  73. data/gemfiles/jruby_9.2.0.0_rails6_postgres_redis.gemfile.lock +289 -0
  74. data/gemfiles/jruby_9.2.0.0_rails6_postgres_redis_activesupport.gemfile +41 -0
  75. data/gemfiles/jruby_9.2.0.0_rails6_postgres_redis_activesupport.gemfile.lock +289 -0
  76. data/gemfiles/jruby_9.2.0.0_rails6_postgres_sidekiq.gemfile +42 -0
  77. data/gemfiles/jruby_9.2.0.0_rails6_postgres_sidekiq.gemfile.lock +295 -0
  78. data/gemfiles/jruby_9.2.0.0_resque2_redis3.gemfile +36 -0
  79. data/gemfiles/jruby_9.2.0.0_resque2_redis3.gemfile.lock +180 -0
  80. data/gemfiles/jruby_9.2.0.0_resque2_redis4.gemfile +36 -0
  81. data/gemfiles/jruby_9.2.0.0_resque2_redis4.gemfile.lock +180 -0
  82. data/gemfiles/jruby_9.2.11.1_contrib.gemfile +79 -0
  83. data/gemfiles/jruby_9.2.11.1_contrib.gemfile.lock +1518 -0
  84. data/gemfiles/jruby_9.2.11.1_contrib_old.gemfile +35 -0
  85. data/gemfiles/jruby_9.2.11.1_contrib_old.gemfile.lock +157 -0
  86. data/gemfiles/jruby_9.2.11.1_core_old.gemfile +34 -0
  87. data/gemfiles/jruby_9.2.11.1_core_old.gemfile.lock +153 -0
  88. data/gemfiles/jruby_9.2.11.1_cucumber3.gemfile +35 -0
  89. data/gemfiles/jruby_9.2.11.1_cucumber3.gemfile.lock +174 -0
  90. data/gemfiles/jruby_9.2.11.1_cucumber4.gemfile +35 -0
  91. data/gemfiles/jruby_9.2.11.1_cucumber4.gemfile.lock +206 -0
  92. data/gemfiles/jruby_9.2.11.1_cucumber5.gemfile +35 -0
  93. data/gemfiles/jruby_9.2.11.1_cucumber5.gemfile.lock +206 -0
  94. data/gemfiles/jruby_9.2.11.1_rails5_mysql2.gemfile +40 -0
  95. data/gemfiles/jruby_9.2.11.1_rails5_mysql2.gemfile.lock +271 -0
  96. data/gemfiles/jruby_9.2.11.1_rails5_postgres.gemfile +40 -0
  97. data/gemfiles/jruby_9.2.11.1_rails5_postgres.gemfile.lock +271 -0
  98. data/gemfiles/jruby_9.2.11.1_rails5_postgres_redis.gemfile +41 -0
  99. data/gemfiles/jruby_9.2.11.1_rails5_postgres_redis.gemfile.lock +273 -0
  100. data/gemfiles/jruby_9.2.11.1_rails5_postgres_redis_activesupport.gemfile +41 -0
  101. data/gemfiles/jruby_9.2.11.1_rails5_postgres_redis_activesupport.gemfile.lock +273 -0
  102. data/gemfiles/jruby_9.2.11.1_rails5_postgres_sidekiq.gemfile +42 -0
  103. data/gemfiles/jruby_9.2.11.1_rails5_postgres_sidekiq.gemfile.lock +279 -0
  104. data/gemfiles/jruby_9.2.11.1_rails61_mysql2.gemfile +40 -0
  105. data/gemfiles/jruby_9.2.11.1_rails61_mysql2.gemfile.lock +290 -0
  106. data/gemfiles/jruby_9.2.11.1_rails61_postgres.gemfile +40 -0
  107. data/gemfiles/jruby_9.2.11.1_rails61_postgres.gemfile.lock +290 -0
  108. data/gemfiles/jruby_9.2.11.1_rails61_postgres_redis.gemfile +41 -0
  109. data/gemfiles/jruby_9.2.11.1_rails61_postgres_redis.gemfile.lock +292 -0
  110. data/gemfiles/jruby_9.2.11.1_rails61_postgres_sidekiq.gemfile +41 -0
  111. data/gemfiles/jruby_9.2.11.1_rails61_postgres_sidekiq.gemfile.lock +297 -0
  112. data/gemfiles/jruby_9.2.11.1_rails6_mysql2.gemfile +40 -0
  113. data/gemfiles/jruby_9.2.11.1_rails6_mysql2.gemfile.lock +287 -0
  114. data/gemfiles/jruby_9.2.11.1_rails6_postgres.gemfile +40 -0
  115. data/gemfiles/jruby_9.2.11.1_rails6_postgres.gemfile.lock +287 -0
  116. data/gemfiles/jruby_9.2.11.1_rails6_postgres_redis.gemfile +41 -0
  117. data/gemfiles/jruby_9.2.11.1_rails6_postgres_redis.gemfile.lock +289 -0
  118. data/gemfiles/jruby_9.2.11.1_rails6_postgres_redis_activesupport.gemfile +41 -0
  119. data/gemfiles/jruby_9.2.11.1_rails6_postgres_redis_activesupport.gemfile.lock +289 -0
  120. data/gemfiles/jruby_9.2.11.1_rails6_postgres_sidekiq.gemfile +42 -0
  121. data/gemfiles/jruby_9.2.11.1_rails6_postgres_sidekiq.gemfile.lock +295 -0
  122. data/gemfiles/jruby_9.2.11.1_resque2_redis3.gemfile +36 -0
  123. data/gemfiles/jruby_9.2.11.1_resque2_redis3.gemfile.lock +180 -0
  124. data/gemfiles/jruby_9.2.11.1_resque2_redis4.gemfile +36 -0
  125. data/gemfiles/jruby_9.2.11.1_resque2_redis4.gemfile.lock +180 -0
  126. data/gemfiles/ruby_2.1.10_contrib_old.gemfile +66 -0
  127. data/gemfiles/ruby_2.1.10_contrib_old.gemfile.lock +305 -0
  128. data/gemfiles/ruby_2.1.10_core_old.gemfile +33 -0
  129. data/gemfiles/ruby_2.1.10_core_old.gemfile.lock +118 -0
  130. data/gemfiles/ruby_2.1.10_rails30_postgres.gemfile +39 -0
  131. data/gemfiles/ruby_2.1.10_rails30_postgres.gemfile.lock +196 -0
  132. data/gemfiles/ruby_2.1.10_rails30_postgres_sidekiq.gemfile +40 -0
  133. data/gemfiles/ruby_2.1.10_rails30_postgres_sidekiq.gemfile.lock +205 -0
  134. data/gemfiles/ruby_2.1.10_rails32_mysql2.gemfile +42 -0
  135. data/gemfiles/ruby_2.1.10_rails32_mysql2.gemfile.lock +215 -0
  136. data/gemfiles/ruby_2.1.10_rails32_postgres.gemfile +39 -0
  137. data/gemfiles/ruby_2.1.10_rails32_postgres.gemfile.lock +204 -0
  138. data/gemfiles/ruby_2.1.10_rails32_postgres_redis.gemfile +41 -0
  139. data/gemfiles/ruby_2.1.10_rails32_postgres_redis.gemfile.lock +223 -0
  140. data/gemfiles/ruby_2.1.10_rails32_postgres_sidekiq.gemfile +40 -0
  141. data/gemfiles/ruby_2.1.10_rails32_postgres_sidekiq.gemfile.lock +213 -0
  142. data/gemfiles/ruby_2.1.10_rails4_mysql2.gemfile +38 -0
  143. data/gemfiles/ruby_2.1.10_rails4_mysql2.gemfile.lock +218 -0
  144. data/gemfiles/ruby_2.1.10_rails4_postgres.gemfile +38 -0
  145. data/gemfiles/ruby_2.1.10_rails4_postgres.gemfile.lock +218 -0
  146. data/gemfiles/ruby_2.1.10_rails4_postgres_redis.gemfile +40 -0
  147. data/gemfiles/ruby_2.1.10_rails4_postgres_redis.gemfile.lock +237 -0
  148. data/gemfiles/ruby_2.2.10_contrib.gemfile +73 -0
  149. data/gemfiles/ruby_2.2.10_contrib.gemfile.lock +1450 -0
  150. data/gemfiles/ruby_2.2.10_core_old.gemfile +33 -0
  151. data/gemfiles/ruby_2.2.10_core_old.gemfile.lock +118 -0
  152. data/gemfiles/ruby_2.2.10_rails30_postgres.gemfile +39 -0
  153. data/gemfiles/ruby_2.2.10_rails30_postgres.gemfile.lock +196 -0
  154. data/gemfiles/ruby_2.2.10_rails30_postgres_sidekiq.gemfile +40 -0
  155. data/gemfiles/ruby_2.2.10_rails30_postgres_sidekiq.gemfile.lock +205 -0
  156. data/gemfiles/ruby_2.2.10_rails32_mysql2.gemfile +41 -0
  157. data/gemfiles/ruby_2.2.10_rails32_mysql2.gemfile.lock +212 -0
  158. data/gemfiles/ruby_2.2.10_rails32_postgres.gemfile +39 -0
  159. data/gemfiles/ruby_2.2.10_rails32_postgres.gemfile.lock +204 -0
  160. data/gemfiles/ruby_2.2.10_rails32_postgres_redis.gemfile +41 -0
  161. data/gemfiles/ruby_2.2.10_rails32_postgres_redis.gemfile.lock +223 -0
  162. data/gemfiles/ruby_2.2.10_rails32_postgres_sidekiq.gemfile +40 -0
  163. data/gemfiles/ruby_2.2.10_rails32_postgres_sidekiq.gemfile.lock +213 -0
  164. data/gemfiles/ruby_2.2.10_rails4_mysql2.gemfile +38 -0
  165. data/gemfiles/ruby_2.2.10_rails4_mysql2.gemfile.lock +218 -0
  166. data/gemfiles/ruby_2.2.10_rails4_postgres.gemfile +38 -0
  167. data/gemfiles/ruby_2.2.10_rails4_postgres.gemfile.lock +218 -0
  168. data/gemfiles/ruby_2.2.10_rails4_postgres_redis.gemfile +40 -0
  169. data/gemfiles/ruby_2.2.10_rails4_postgres_redis.gemfile.lock +237 -0
  170. data/gemfiles/ruby_2.2.10_rails4_postgres_sidekiq.gemfile +40 -0
  171. data/gemfiles/ruby_2.2.10_rails4_postgres_sidekiq.gemfile.lock +229 -0
  172. data/gemfiles/ruby_2.2.10_rails5_mysql2.gemfile +38 -0
  173. data/gemfiles/ruby_2.2.10_rails5_mysql2.gemfile.lock +234 -0
  174. data/gemfiles/ruby_2.2.10_rails5_postgres.gemfile +38 -0
  175. data/gemfiles/ruby_2.2.10_rails5_postgres.gemfile.lock +234 -0
  176. data/gemfiles/ruby_2.2.10_rails5_postgres_redis.gemfile +39 -0
  177. data/gemfiles/ruby_2.2.10_rails5_postgres_redis.gemfile.lock +236 -0
  178. data/gemfiles/ruby_2.2.10_rails5_postgres_redis_activesupport.gemfile +39 -0
  179. data/gemfiles/ruby_2.2.10_rails5_postgres_redis_activesupport.gemfile.lock +236 -0
  180. data/gemfiles/ruby_2.2.10_rails5_postgres_sidekiq.gemfile +40 -0
  181. data/gemfiles/ruby_2.2.10_rails5_postgres_sidekiq.gemfile.lock +245 -0
  182. data/gemfiles/ruby_2.3.8_contrib.gemfile +73 -0
  183. data/gemfiles/ruby_2.3.8_contrib.gemfile.lock +1459 -0
  184. data/gemfiles/ruby_2.3.8_contrib_old.gemfile +34 -0
  185. data/gemfiles/ruby_2.3.8_contrib_old.gemfile.lock +127 -0
  186. data/gemfiles/ruby_2.3.8_core_old.gemfile +33 -0
  187. data/gemfiles/ruby_2.3.8_core_old.gemfile.lock +123 -0
  188. data/gemfiles/ruby_2.3.8_cucumber3.gemfile +34 -0
  189. data/gemfiles/ruby_2.3.8_cucumber3.gemfile.lock +144 -0
  190. data/gemfiles/ruby_2.3.8_cucumber4.gemfile +34 -0
  191. data/gemfiles/ruby_2.3.8_cucumber4.gemfile.lock +174 -0
  192. data/gemfiles/ruby_2.3.8_rails30_postgres.gemfile +39 -0
  193. data/gemfiles/ruby_2.3.8_rails30_postgres.gemfile.lock +201 -0
  194. data/gemfiles/ruby_2.3.8_rails30_postgres_sidekiq.gemfile +40 -0
  195. data/gemfiles/ruby_2.3.8_rails30_postgres_sidekiq.gemfile.lock +210 -0
  196. data/gemfiles/ruby_2.3.8_rails32_mysql2.gemfile +41 -0
  197. data/gemfiles/ruby_2.3.8_rails32_mysql2.gemfile.lock +217 -0
  198. data/gemfiles/ruby_2.3.8_rails32_postgres.gemfile +39 -0
  199. data/gemfiles/ruby_2.3.8_rails32_postgres.gemfile.lock +209 -0
  200. data/gemfiles/ruby_2.3.8_rails32_postgres_redis.gemfile +41 -0
  201. data/gemfiles/ruby_2.3.8_rails32_postgres_redis.gemfile.lock +228 -0
  202. data/gemfiles/ruby_2.3.8_rails32_postgres_sidekiq.gemfile +40 -0
  203. data/gemfiles/ruby_2.3.8_rails32_postgres_sidekiq.gemfile.lock +218 -0
  204. data/gemfiles/ruby_2.3.8_rails4_mysql2.gemfile +38 -0
  205. data/gemfiles/ruby_2.3.8_rails4_mysql2.gemfile.lock +223 -0
  206. data/gemfiles/ruby_2.3.8_rails4_postgres.gemfile +38 -0
  207. data/gemfiles/ruby_2.3.8_rails4_postgres.gemfile.lock +223 -0
  208. data/gemfiles/ruby_2.3.8_rails4_postgres_redis.gemfile +40 -0
  209. data/gemfiles/ruby_2.3.8_rails4_postgres_redis.gemfile.lock +242 -0
  210. data/gemfiles/ruby_2.3.8_rails4_postgres_sidekiq.gemfile +40 -0
  211. data/gemfiles/ruby_2.3.8_rails4_postgres_sidekiq.gemfile.lock +234 -0
  212. data/gemfiles/ruby_2.3.8_rails5_mysql2.gemfile +37 -0
  213. data/gemfiles/ruby_2.3.8_rails5_mysql2.gemfile.lock +234 -0
  214. data/gemfiles/ruby_2.3.8_rails5_postgres.gemfile +37 -0
  215. data/gemfiles/ruby_2.3.8_rails5_postgres.gemfile.lock +234 -0
  216. data/gemfiles/ruby_2.3.8_rails5_postgres_redis.gemfile +38 -0
  217. data/gemfiles/ruby_2.3.8_rails5_postgres_redis.gemfile.lock +236 -0
  218. data/gemfiles/ruby_2.3.8_rails5_postgres_redis_activesupport.gemfile +38 -0
  219. data/gemfiles/ruby_2.3.8_rails5_postgres_redis_activesupport.gemfile.lock +236 -0
  220. data/gemfiles/ruby_2.3.8_rails5_postgres_sidekiq.gemfile +39 -0
  221. data/gemfiles/ruby_2.3.8_rails5_postgres_sidekiq.gemfile.lock +245 -0
  222. data/gemfiles/ruby_2.3.8_resque2_redis3.gemfile +35 -0
  223. data/gemfiles/ruby_2.3.8_resque2_redis3.gemfile.lock +150 -0
  224. data/gemfiles/ruby_2.3.8_resque2_redis4.gemfile +35 -0
  225. data/gemfiles/ruby_2.3.8_resque2_redis4.gemfile.lock +150 -0
  226. data/gemfiles/ruby_2.4.6_contrib.gemfile +78 -0
  227. data/gemfiles/ruby_2.4.6_contrib.gemfile.lock +1513 -0
  228. data/gemfiles/ruby_2.4.6_contrib_old.gemfile +38 -0
  229. data/gemfiles/ruby_2.4.6_contrib_old.gemfile.lock +155 -0
  230. data/gemfiles/ruby_2.4.6_core_old.gemfile +37 -0
  231. data/gemfiles/ruby_2.4.6_core_old.gemfile.lock +151 -0
  232. data/gemfiles/ruby_2.4.6_cucumber3.gemfile +38 -0
  233. data/gemfiles/ruby_2.4.6_cucumber3.gemfile.lock +172 -0
  234. data/gemfiles/ruby_2.4.6_cucumber4.gemfile +38 -0
  235. data/gemfiles/ruby_2.4.6_cucumber4.gemfile.lock +202 -0
  236. data/gemfiles/ruby_2.4.6_rails5_mysql2.gemfile +41 -0
  237. data/gemfiles/ruby_2.4.6_rails5_mysql2.gemfile.lock +262 -0
  238. data/gemfiles/ruby_2.4.6_rails5_postgres.gemfile +41 -0
  239. data/gemfiles/ruby_2.4.6_rails5_postgres.gemfile.lock +262 -0
  240. data/gemfiles/ruby_2.4.6_rails5_postgres_redis.gemfile +42 -0
  241. data/gemfiles/ruby_2.4.6_rails5_postgres_redis.gemfile.lock +264 -0
  242. data/gemfiles/ruby_2.4.6_rails5_postgres_redis_activesupport.gemfile +42 -0
  243. data/gemfiles/ruby_2.4.6_rails5_postgres_redis_activesupport.gemfile.lock +264 -0
  244. data/gemfiles/ruby_2.4.6_rails5_postgres_sidekiq.gemfile +43 -0
  245. data/gemfiles/ruby_2.4.6_rails5_postgres_sidekiq.gemfile.lock +273 -0
  246. data/gemfiles/ruby_2.4.6_resque2_redis3.gemfile +39 -0
  247. data/gemfiles/ruby_2.4.6_resque2_redis3.gemfile.lock +178 -0
  248. data/gemfiles/ruby_2.4.6_resque2_redis4.gemfile +39 -0
  249. data/gemfiles/ruby_2.4.6_resque2_redis4.gemfile.lock +178 -0
  250. data/gemfiles/ruby_2.5.6_contrib.gemfile +83 -0
  251. data/gemfiles/ruby_2.5.6_contrib.gemfile.lock +1526 -0
  252. data/gemfiles/ruby_2.5.6_contrib_old.gemfile +39 -0
  253. data/gemfiles/ruby_2.5.6_contrib_old.gemfile.lock +165 -0
  254. data/gemfiles/ruby_2.5.6_core_old.gemfile +38 -0
  255. data/gemfiles/ruby_2.5.6_core_old.gemfile.lock +161 -0
  256. data/gemfiles/ruby_2.5.6_cucumber3.gemfile +39 -0
  257. data/gemfiles/ruby_2.5.6_cucumber3.gemfile.lock +182 -0
  258. data/gemfiles/ruby_2.5.6_cucumber4.gemfile +39 -0
  259. data/gemfiles/ruby_2.5.6_cucumber4.gemfile.lock +214 -0
  260. data/gemfiles/ruby_2.5.6_cucumber5.gemfile +39 -0
  261. data/gemfiles/ruby_2.5.6_cucumber5.gemfile.lock +214 -0
  262. data/gemfiles/ruby_2.5.6_rails5_mysql2.gemfile +44 -0
  263. data/gemfiles/ruby_2.5.6_rails5_mysql2.gemfile.lock +276 -0
  264. data/gemfiles/ruby_2.5.6_rails5_postgres.gemfile +44 -0
  265. data/gemfiles/ruby_2.5.6_rails5_postgres.gemfile.lock +276 -0
  266. data/gemfiles/ruby_2.5.6_rails5_postgres_redis.gemfile +45 -0
  267. data/gemfiles/ruby_2.5.6_rails5_postgres_redis.gemfile.lock +278 -0
  268. data/gemfiles/ruby_2.5.6_rails5_postgres_redis_activesupport.gemfile +45 -0
  269. data/gemfiles/ruby_2.5.6_rails5_postgres_redis_activesupport.gemfile.lock +278 -0
  270. data/gemfiles/ruby_2.5.6_rails5_postgres_sidekiq.gemfile +46 -0
  271. data/gemfiles/ruby_2.5.6_rails5_postgres_sidekiq.gemfile.lock +284 -0
  272. data/gemfiles/ruby_2.5.6_rails61_mysql2.gemfile +44 -0
  273. data/gemfiles/ruby_2.5.6_rails61_mysql2.gemfile.lock +295 -0
  274. data/gemfiles/ruby_2.5.6_rails61_postgres.gemfile +44 -0
  275. data/gemfiles/ruby_2.5.6_rails61_postgres.gemfile.lock +295 -0
  276. data/gemfiles/ruby_2.5.6_rails61_postgres_redis.gemfile +45 -0
  277. data/gemfiles/ruby_2.5.6_rails61_postgres_redis.gemfile.lock +297 -0
  278. data/gemfiles/ruby_2.5.6_rails61_postgres_sidekiq.gemfile +45 -0
  279. data/gemfiles/ruby_2.5.6_rails61_postgres_sidekiq.gemfile.lock +302 -0
  280. data/gemfiles/ruby_2.5.6_rails6_mysql2.gemfile +44 -0
  281. data/gemfiles/ruby_2.5.6_rails6_mysql2.gemfile.lock +292 -0
  282. data/gemfiles/ruby_2.5.6_rails6_postgres.gemfile +44 -0
  283. data/gemfiles/ruby_2.5.6_rails6_postgres.gemfile.lock +292 -0
  284. data/gemfiles/ruby_2.5.6_rails6_postgres_redis.gemfile +45 -0
  285. data/gemfiles/ruby_2.5.6_rails6_postgres_redis.gemfile.lock +294 -0
  286. data/gemfiles/ruby_2.5.6_rails6_postgres_redis_activesupport.gemfile +45 -0
  287. data/gemfiles/ruby_2.5.6_rails6_postgres_redis_activesupport.gemfile.lock +294 -0
  288. data/gemfiles/ruby_2.5.6_rails6_postgres_sidekiq.gemfile +46 -0
  289. data/gemfiles/ruby_2.5.6_rails6_postgres_sidekiq.gemfile.lock +300 -0
  290. data/gemfiles/ruby_2.5.6_resque2_redis3.gemfile +40 -0
  291. data/gemfiles/ruby_2.5.6_resque2_redis3.gemfile.lock +188 -0
  292. data/gemfiles/ruby_2.5.6_resque2_redis4.gemfile +40 -0
  293. data/gemfiles/ruby_2.5.6_resque2_redis4.gemfile.lock +188 -0
  294. data/gemfiles/ruby_2.6.4_contrib.gemfile +79 -0
  295. data/gemfiles/ruby_2.6.4_contrib.gemfile.lock +1524 -0
  296. data/gemfiles/ruby_2.6.4_contrib_old.gemfile +39 -0
  297. data/gemfiles/ruby_2.6.4_contrib_old.gemfile.lock +167 -0
  298. data/gemfiles/ruby_2.6.4_core_old.gemfile +38 -0
  299. data/gemfiles/ruby_2.6.4_core_old.gemfile.lock +163 -0
  300. data/gemfiles/ruby_2.6.4_cucumber3.gemfile +39 -0
  301. data/gemfiles/ruby_2.6.4_cucumber3.gemfile.lock +184 -0
  302. data/gemfiles/ruby_2.6.4_cucumber4.gemfile +39 -0
  303. data/gemfiles/ruby_2.6.4_cucumber4.gemfile.lock +216 -0
  304. data/gemfiles/ruby_2.6.4_cucumber5.gemfile +39 -0
  305. data/gemfiles/ruby_2.6.4_cucumber5.gemfile.lock +216 -0
  306. data/gemfiles/ruby_2.6.4_rails5_mysql2.gemfile +42 -0
  307. data/gemfiles/ruby_2.6.4_rails5_mysql2.gemfile.lock +276 -0
  308. data/gemfiles/ruby_2.6.4_rails5_postgres.gemfile +42 -0
  309. data/gemfiles/ruby_2.6.4_rails5_postgres.gemfile.lock +276 -0
  310. data/gemfiles/ruby_2.6.4_rails5_postgres_redis.gemfile +43 -0
  311. data/gemfiles/ruby_2.6.4_rails5_postgres_redis.gemfile.lock +278 -0
  312. data/gemfiles/ruby_2.6.4_rails5_postgres_redis_activesupport.gemfile +43 -0
  313. data/gemfiles/ruby_2.6.4_rails5_postgres_redis_activesupport.gemfile.lock +278 -0
  314. data/gemfiles/ruby_2.6.4_rails5_postgres_sidekiq.gemfile +44 -0
  315. data/gemfiles/ruby_2.6.4_rails5_postgres_sidekiq.gemfile.lock +284 -0
  316. data/gemfiles/ruby_2.6.4_rails61_mysql2.gemfile +42 -0
  317. data/gemfiles/ruby_2.6.4_rails61_mysql2.gemfile.lock +295 -0
  318. data/gemfiles/ruby_2.6.4_rails61_postgres.gemfile +42 -0
  319. data/gemfiles/ruby_2.6.4_rails61_postgres.gemfile.lock +295 -0
  320. data/gemfiles/ruby_2.6.4_rails61_postgres_redis.gemfile +43 -0
  321. data/gemfiles/ruby_2.6.4_rails61_postgres_redis.gemfile.lock +297 -0
  322. data/gemfiles/ruby_2.6.4_rails61_postgres_sidekiq.gemfile +43 -0
  323. data/gemfiles/ruby_2.6.4_rails61_postgres_sidekiq.gemfile.lock +302 -0
  324. data/gemfiles/ruby_2.6.4_rails6_mysql2.gemfile +42 -0
  325. data/gemfiles/ruby_2.6.4_rails6_mysql2.gemfile.lock +292 -0
  326. data/gemfiles/ruby_2.6.4_rails6_postgres.gemfile +42 -0
  327. data/gemfiles/ruby_2.6.4_rails6_postgres.gemfile.lock +292 -0
  328. data/gemfiles/ruby_2.6.4_rails6_postgres_redis.gemfile +43 -0
  329. data/gemfiles/ruby_2.6.4_rails6_postgres_redis.gemfile.lock +294 -0
  330. data/gemfiles/ruby_2.6.4_rails6_postgres_redis_activesupport.gemfile +43 -0
  331. data/gemfiles/ruby_2.6.4_rails6_postgres_redis_activesupport.gemfile.lock +294 -0
  332. data/gemfiles/ruby_2.6.4_rails6_postgres_sidekiq.gemfile +44 -0
  333. data/gemfiles/ruby_2.6.4_rails6_postgres_sidekiq.gemfile.lock +300 -0
  334. data/gemfiles/ruby_2.6.4_resque2_redis3.gemfile +40 -0
  335. data/gemfiles/ruby_2.6.4_resque2_redis3.gemfile.lock +190 -0
  336. data/gemfiles/ruby_2.6.4_resque2_redis4.gemfile +40 -0
  337. data/gemfiles/ruby_2.6.4_resque2_redis4.gemfile.lock +190 -0
  338. data/gemfiles/ruby_2.7.0_contrib.gemfile +78 -0
  339. data/gemfiles/ruby_2.7.0_contrib.gemfile.lock +1523 -0
  340. data/gemfiles/ruby_2.7.0_contrib_old.gemfile +39 -0
  341. data/gemfiles/ruby_2.7.0_contrib_old.gemfile.lock +167 -0
  342. data/gemfiles/ruby_2.7.0_core_old.gemfile +38 -0
  343. data/gemfiles/ruby_2.7.0_core_old.gemfile.lock +163 -0
  344. data/gemfiles/ruby_2.7.0_cucumber3.gemfile +39 -0
  345. data/gemfiles/ruby_2.7.0_cucumber3.gemfile.lock +184 -0
  346. data/gemfiles/ruby_2.7.0_cucumber4.gemfile +39 -0
  347. data/gemfiles/ruby_2.7.0_cucumber4.gemfile.lock +216 -0
  348. data/gemfiles/ruby_2.7.0_cucumber5.gemfile +39 -0
  349. data/gemfiles/ruby_2.7.0_cucumber5.gemfile.lock +216 -0
  350. data/gemfiles/ruby_2.7.0_rails5_mysql2.gemfile +42 -0
  351. data/gemfiles/ruby_2.7.0_rails5_mysql2.gemfile.lock +276 -0
  352. data/gemfiles/ruby_2.7.0_rails5_postgres.gemfile +42 -0
  353. data/gemfiles/ruby_2.7.0_rails5_postgres.gemfile.lock +276 -0
  354. data/gemfiles/ruby_2.7.0_rails5_postgres_redis.gemfile +44 -0
  355. data/gemfiles/ruby_2.7.0_rails5_postgres_redis.gemfile.lock +295 -0
  356. data/gemfiles/ruby_2.7.0_rails5_postgres_redis_activesupport.gemfile +44 -0
  357. data/gemfiles/ruby_2.7.0_rails5_postgres_redis_activesupport.gemfile.lock +295 -0
  358. data/gemfiles/ruby_2.7.0_rails5_postgres_sidekiq.gemfile +44 -0
  359. data/gemfiles/ruby_2.7.0_rails5_postgres_sidekiq.gemfile.lock +284 -0
  360. data/gemfiles/ruby_2.7.0_rails61_mysql2.gemfile +42 -0
  361. data/gemfiles/ruby_2.7.0_rails61_mysql2.gemfile.lock +295 -0
  362. data/gemfiles/ruby_2.7.0_rails61_postgres.gemfile +42 -0
  363. data/gemfiles/ruby_2.7.0_rails61_postgres.gemfile.lock +295 -0
  364. data/gemfiles/ruby_2.7.0_rails61_postgres_redis.gemfile +43 -0
  365. data/gemfiles/ruby_2.7.0_rails61_postgres_redis.gemfile.lock +297 -0
  366. data/gemfiles/ruby_2.7.0_rails61_postgres_sidekiq.gemfile +43 -0
  367. data/gemfiles/ruby_2.7.0_rails61_postgres_sidekiq.gemfile.lock +302 -0
  368. data/gemfiles/ruby_2.7.0_rails6_mysql2.gemfile +42 -0
  369. data/gemfiles/ruby_2.7.0_rails6_mysql2.gemfile.lock +292 -0
  370. data/gemfiles/ruby_2.7.0_rails6_postgres.gemfile +42 -0
  371. data/gemfiles/ruby_2.7.0_rails6_postgres.gemfile.lock +292 -0
  372. data/gemfiles/ruby_2.7.0_rails6_postgres_redis.gemfile +44 -0
  373. data/gemfiles/ruby_2.7.0_rails6_postgres_redis.gemfile.lock +311 -0
  374. data/gemfiles/ruby_2.7.0_rails6_postgres_redis_activesupport.gemfile +44 -0
  375. data/gemfiles/ruby_2.7.0_rails6_postgres_redis_activesupport.gemfile.lock +311 -0
  376. data/gemfiles/ruby_2.7.0_rails6_postgres_sidekiq.gemfile +44 -0
  377. data/gemfiles/ruby_2.7.0_rails6_postgres_sidekiq.gemfile.lock +300 -0
  378. data/gemfiles/ruby_2.7.0_resque2_redis3.gemfile +40 -0
  379. data/gemfiles/ruby_2.7.0_resque2_redis3.gemfile.lock +190 -0
  380. data/gemfiles/ruby_2.7.0_resque2_redis4.gemfile +40 -0
  381. data/gemfiles/ruby_2.7.0_resque2_redis4.gemfile.lock +190 -0
  382. data/gemfiles/ruby_3.0.0_contrib.gemfile +78 -0
  383. data/gemfiles/ruby_3.0.0_contrib.gemfile.lock +1540 -0
  384. data/gemfiles/ruby_3.0.0_core_old.gemfile +39 -0
  385. data/gemfiles/ruby_3.0.0_core_old.gemfile.lock +165 -0
  386. data/gemfiles/ruby_3.0.0_cucumber3.gemfile +40 -0
  387. data/gemfiles/ruby_3.0.0_cucumber3.gemfile.lock +186 -0
  388. data/gemfiles/ruby_3.0.0_cucumber4.gemfile +40 -0
  389. data/gemfiles/ruby_3.0.0_cucumber4.gemfile.lock +218 -0
  390. data/gemfiles/ruby_3.0.0_cucumber5.gemfile +40 -0
  391. data/gemfiles/ruby_3.0.0_cucumber5.gemfile.lock +218 -0
  392. data/gemfiles/ruby_3.0.0_rails61_mysql2.gemfile +43 -0
  393. data/gemfiles/ruby_3.0.0_rails61_mysql2.gemfile.lock +295 -0
  394. data/gemfiles/ruby_3.0.0_rails61_postgres.gemfile +43 -0
  395. data/gemfiles/ruby_3.0.0_rails61_postgres.gemfile.lock +295 -0
  396. data/gemfiles/ruby_3.0.0_rails61_postgres_redis.gemfile +44 -0
  397. data/gemfiles/ruby_3.0.0_rails61_postgres_redis.gemfile.lock +297 -0
  398. data/gemfiles/ruby_3.0.0_rails61_postgres_sidekiq.gemfile +44 -0
  399. data/gemfiles/ruby_3.0.0_rails61_postgres_sidekiq.gemfile.lock +302 -0
  400. data/gemfiles/ruby_3.0.0_resque2_redis3.gemfile +41 -0
  401. data/gemfiles/ruby_3.0.0_resque2_redis3.gemfile.lock +192 -0
  402. data/gemfiles/ruby_3.0.0_resque2_redis4.gemfile +41 -0
  403. data/gemfiles/ruby_3.0.0_resque2_redis4.gemfile.lock +192 -0
  404. data/integration/README.md +67 -0
  405. data/integration/apps/rack/.dockerignore +1 -0
  406. data/integration/apps/rack/.envrc.sample +1 -0
  407. data/integration/apps/rack/.gitignore +4 -0
  408. data/integration/apps/rack/.rspec +1 -0
  409. data/integration/apps/rack/Dockerfile +28 -0
  410. data/integration/apps/rack/Dockerfile-ci +11 -0
  411. data/integration/apps/rack/Gemfile +24 -0
  412. data/integration/apps/rack/README.md +93 -0
  413. data/integration/apps/rack/app/acme.rb +80 -0
  414. data/integration/apps/rack/app/datadog.rb +17 -0
  415. data/integration/apps/rack/bin/run +22 -0
  416. data/integration/apps/rack/bin/setup +17 -0
  417. data/integration/apps/rack/bin/test +24 -0
  418. data/integration/apps/rack/config.ru +6 -0
  419. data/integration/apps/rack/config/puma.rb +14 -0
  420. data/integration/apps/rack/config/unicorn.rb +23 -0
  421. data/integration/apps/rack/docker-compose.ci.yml +62 -0
  422. data/integration/apps/rack/docker-compose.yml +78 -0
  423. data/integration/apps/rack/script/build-images +38 -0
  424. data/integration/apps/rack/script/ci +51 -0
  425. data/integration/apps/rack/spec/integration/basic_spec.rb +10 -0
  426. data/integration/apps/rack/spec/spec_helper.rb +16 -0
  427. data/integration/apps/rack/spec/support/integration_helper.rb +22 -0
  428. data/integration/apps/rails-five/.dockerignore +1 -0
  429. data/integration/apps/rails-five/.env +3 -0
  430. data/integration/apps/rails-five/.envrc.sample +1 -0
  431. data/integration/apps/rails-five/.gitignore +30 -0
  432. data/integration/apps/rails-five/Dockerfile +25 -0
  433. data/integration/apps/rails-five/Dockerfile-ci +11 -0
  434. data/integration/apps/rails-five/Gemfile +104 -0
  435. data/integration/apps/rails-five/README.md +94 -0
  436. data/integration/apps/rails-five/Rakefile +6 -0
  437. data/integration/apps/rails-five/app/channels/application_cable/channel.rb +4 -0
  438. data/integration/apps/rails-five/app/channels/application_cable/connection.rb +4 -0
  439. data/integration/apps/rails-five/app/controllers/application_controller.rb +2 -0
  440. data/integration/apps/rails-five/app/controllers/basic_controller.rb +36 -0
  441. data/integration/apps/rails-five/app/controllers/concerns/.keep +0 -0
  442. data/integration/apps/rails-five/app/controllers/health_controller.rb +9 -0
  443. data/integration/apps/rails-five/app/controllers/jobs_controller.rb +12 -0
  444. data/integration/apps/rails-five/app/jobs/application_job.rb +2 -0
  445. data/integration/apps/rails-five/app/jobs/test_job.rb +12 -0
  446. data/integration/apps/rails-five/app/mailers/application_mailer.rb +4 -0
  447. data/integration/apps/rails-five/app/models/application_record.rb +3 -0
  448. data/integration/apps/rails-five/app/models/concerns/.keep +0 -0
  449. data/integration/apps/rails-five/app/models/test.rb +2 -0
  450. data/integration/apps/rails-five/app/views/layouts/mailer.html.erb +13 -0
  451. data/integration/apps/rails-five/app/views/layouts/mailer.text.erb +1 -0
  452. data/integration/apps/rails-five/bin/bundle +3 -0
  453. data/integration/apps/rails-five/bin/rails +9 -0
  454. data/integration/apps/rails-five/bin/rake +9 -0
  455. data/integration/apps/rails-five/bin/run +24 -0
  456. data/integration/apps/rails-five/bin/setup +27 -0
  457. data/integration/apps/rails-five/bin/spring +17 -0
  458. data/integration/apps/rails-five/bin/test +21 -0
  459. data/integration/apps/rails-five/bin/update +28 -0
  460. data/integration/apps/rails-five/config.ru +5 -0
  461. data/integration/apps/rails-five/config/application.rb +97 -0
  462. data/integration/apps/rails-five/config/boot.rb +4 -0
  463. data/integration/apps/rails-five/config/cable.yml +10 -0
  464. data/integration/apps/rails-five/config/credentials.yml.enc +1 -0
  465. data/integration/apps/rails-five/config/database.yml +28 -0
  466. data/integration/apps/rails-five/config/environment.rb +5 -0
  467. data/integration/apps/rails-five/config/environments/development.rb +51 -0
  468. data/integration/apps/rails-five/config/environments/production.rb +82 -0
  469. data/integration/apps/rails-five/config/environments/test.rb +43 -0
  470. data/integration/apps/rails-five/config/initializers/datadog.rb +18 -0
  471. data/integration/apps/rails-five/config/initializers/filter_parameter_logging.rb +4 -0
  472. data/integration/apps/rails-five/config/initializers/resque.rb +4 -0
  473. data/integration/apps/rails-five/config/initializers/rollbar.rb +5 -0
  474. data/integration/apps/rails-five/config/initializers/wrap_parameters.rb +14 -0
  475. data/integration/apps/rails-five/config/locales/en.yml +33 -0
  476. data/integration/apps/rails-five/config/puma.rb +24 -0
  477. data/integration/apps/rails-five/config/routes.rb +11 -0
  478. data/integration/apps/rails-five/config/spring.rb +6 -0
  479. data/integration/apps/rails-five/config/unicorn.rb +29 -0
  480. data/integration/apps/rails-five/db/migrate/20190927215052_create_tests.rb +11 -0
  481. data/integration/apps/rails-five/db/schema.rb +23 -0
  482. data/integration/apps/rails-five/db/seeds.rb +7 -0
  483. data/integration/apps/rails-five/docker-compose.ci.yml +98 -0
  484. data/integration/apps/rails-five/docker-compose.yml +100 -0
  485. data/integration/apps/rails-five/lib/tasks/.keep +0 -0
  486. data/integration/apps/rails-five/log/.keep +0 -0
  487. data/integration/apps/rails-five/public/robots.txt +1 -0
  488. data/integration/apps/rails-five/script/build-images +35 -0
  489. data/integration/apps/rails-five/script/ci +51 -0
  490. data/integration/apps/rails-five/spec/integration/basic_spec.rb +10 -0
  491. data/integration/apps/rails-five/spec/spec_helper.rb +16 -0
  492. data/integration/apps/rails-five/spec/support/integration_helper.rb +22 -0
  493. data/integration/apps/rails-five/storage/.keep +0 -0
  494. data/integration/apps/rails-five/tmp/.keep +0 -0
  495. data/integration/apps/rails-five/vendor/.keep +0 -0
  496. data/integration/apps/rspec/.dockerignore +1 -0
  497. data/integration/apps/rspec/.envrc.sample +1 -0
  498. data/integration/apps/rspec/.gitignore +2 -0
  499. data/integration/apps/rspec/.rspec +1 -0
  500. data/integration/apps/rspec/Dockerfile +25 -0
  501. data/integration/apps/rspec/Dockerfile-ci +11 -0
  502. data/integration/apps/rspec/Gemfile +14 -0
  503. data/integration/apps/rspec/README.md +70 -0
  504. data/integration/apps/rspec/agent.yaml +3 -0
  505. data/integration/apps/rspec/app/datadog.rb +13 -0
  506. data/integration/apps/rspec/app/fibonacci.rb +30 -0
  507. data/integration/apps/rspec/bin/run +20 -0
  508. data/integration/apps/rspec/bin/setup +17 -0
  509. data/integration/apps/rspec/bin/test +21 -0
  510. data/integration/apps/rspec/docker-compose.ci.yml +51 -0
  511. data/integration/apps/rspec/docker-compose.yml +63 -0
  512. data/integration/apps/rspec/script/build-images +37 -0
  513. data/integration/apps/rspec/script/ci +53 -0
  514. data/integration/apps/rspec/spec/fibonacci_spec.rb +16 -0
  515. data/integration/apps/rspec/spec/rspec_spec.rb +58 -0
  516. data/integration/apps/rspec/spec/spec_helper.rb +24 -0
  517. data/integration/apps/ruby/.dockerignore +1 -0
  518. data/integration/apps/ruby/.envrc.sample +1 -0
  519. data/integration/apps/ruby/.gitignore +2 -0
  520. data/integration/apps/ruby/Dockerfile +25 -0
  521. data/integration/apps/ruby/Dockerfile-ci +11 -0
  522. data/integration/apps/ruby/Gemfile +11 -0
  523. data/integration/apps/ruby/README.md +70 -0
  524. data/integration/apps/ruby/agent.yaml +3 -0
  525. data/integration/apps/ruby/app/datadog.rb +13 -0
  526. data/integration/apps/ruby/app/fibonacci.rb +58 -0
  527. data/integration/apps/ruby/bin/run +20 -0
  528. data/integration/apps/ruby/bin/setup +17 -0
  529. data/integration/apps/ruby/bin/test +21 -0
  530. data/integration/apps/ruby/docker-compose.ci.yml +51 -0
  531. data/integration/apps/ruby/docker-compose.yml +63 -0
  532. data/integration/apps/ruby/script/build-images +38 -0
  533. data/integration/apps/ruby/script/ci +51 -0
  534. data/integration/images/agent/Dockerfile +2 -0
  535. data/integration/images/agent/agent.yaml +3 -0
  536. data/integration/images/include/datadog/analyzer.rb +71 -0
  537. data/integration/images/include/datadog/demo_env.rb +101 -0
  538. data/integration/images/include/http-health-check +33 -0
  539. data/integration/images/ruby/2.1/Dockerfile +54 -0
  540. data/integration/images/ruby/2.2/Dockerfile +54 -0
  541. data/integration/images/ruby/2.3/Dockerfile +70 -0
  542. data/integration/images/ruby/2.4/Dockerfile +54 -0
  543. data/integration/images/ruby/2.5/Dockerfile +54 -0
  544. data/integration/images/ruby/2.6/Dockerfile +54 -0
  545. data/integration/images/ruby/2.7/Dockerfile +54 -0
  546. data/integration/images/ruby/3.0/Dockerfile +54 -0
  547. data/integration/images/wrk/Dockerfile +33 -0
  548. data/integration/images/wrk/scripts/entrypoint.sh +17 -0
  549. data/integration/images/wrk/scripts/scenarios/basic/default.lua +1 -0
  550. data/integration/images/wrk/scripts/scenarios/basic/fibonacci.lua +1 -0
  551. data/integration/script/build-images +43 -0
  552. data/lib/datadog/ci.rb +16 -0
  553. data/lib/datadog/ci/configuration/components.rb +30 -0
  554. data/lib/datadog/ci/configuration/settings.rb +36 -0
  555. data/lib/datadog/ci/context_flush.rb +28 -0
  556. data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +30 -0
  557. data/lib/datadog/ci/contrib/cucumber/ext.rb +19 -0
  558. data/lib/datadog/ci/contrib/cucumber/formatter.rb +97 -0
  559. data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +26 -0
  560. data/lib/datadog/ci/contrib/cucumber/integration.rb +47 -0
  561. data/lib/datadog/ci/contrib/cucumber/patcher.rb +25 -0
  562. data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +30 -0
  563. data/lib/datadog/ci/contrib/rspec/example.rb +73 -0
  564. data/lib/datadog/ci/contrib/rspec/ext.rb +18 -0
  565. data/lib/datadog/ci/contrib/rspec/integration.rb +48 -0
  566. data/lib/datadog/ci/contrib/rspec/patcher.rb +25 -0
  567. data/lib/datadog/ci/ext/app_types.rb +9 -0
  568. data/lib/datadog/ci/ext/environment.rb +303 -0
  569. data/lib/datadog/ci/ext/settings.rb +10 -0
  570. data/lib/datadog/ci/ext/test.rb +28 -0
  571. data/lib/datadog/ci/extensions.rb +17 -0
  572. data/lib/datadog/ci/test.rb +63 -0
  573. data/lib/ddtrace.rb +9 -5
  574. data/lib/ddtrace/analytics.rb +2 -0
  575. data/lib/ddtrace/auto_instrument.rb +3 -0
  576. data/lib/ddtrace/auto_instrument_base.rb +6 -0
  577. data/lib/ddtrace/buffer.rb +260 -53
  578. data/lib/ddtrace/configuration.rb +113 -21
  579. data/lib/ddtrace/configuration/agent_settings_resolver.rb +230 -0
  580. data/lib/ddtrace/configuration/base.rb +7 -10
  581. data/lib/ddtrace/configuration/components.rb +119 -21
  582. data/lib/ddtrace/configuration/option_definition.rb +1 -3
  583. data/lib/ddtrace/configuration/options.rb +9 -10
  584. data/lib/ddtrace/configuration/settings.rb +119 -10
  585. data/lib/ddtrace/context.rb +40 -20
  586. data/lib/ddtrace/context_flush.rb +14 -2
  587. data/lib/ddtrace/context_provider.rb +16 -5
  588. data/lib/ddtrace/contrib/action_cable/event.rb +5 -4
  589. data/lib/ddtrace/contrib/action_cable/integration.rb +7 -0
  590. data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +2 -4
  591. data/lib/ddtrace/contrib/action_pack/action_controller/patcher.rb +1 -1
  592. data/lib/ddtrace/contrib/action_pack/integration.rb +7 -0
  593. data/lib/ddtrace/contrib/action_pack/utils.rb +1 -1
  594. data/lib/ddtrace/contrib/action_view/event.rb +3 -7
  595. data/lib/ddtrace/contrib/action_view/events/render_partial.rb +1 -0
  596. data/lib/ddtrace/contrib/action_view/events/render_template.rb +1 -0
  597. data/lib/ddtrace/contrib/action_view/integration.rb +7 -0
  598. data/lib/ddtrace/contrib/action_view/patcher.rb +4 -4
  599. data/lib/ddtrace/contrib/action_view/utils.rb +1 -1
  600. data/lib/ddtrace/contrib/active_model_serializers/event.rb +2 -2
  601. data/lib/ddtrace/contrib/active_record/configuration/makara_resolver.rb +30 -0
  602. data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +107 -18
  603. data/lib/ddtrace/contrib/active_record/event.rb +2 -2
  604. data/lib/ddtrace/contrib/active_record/events/sql.rb +4 -0
  605. data/lib/ddtrace/contrib/active_record/integration.rb +7 -0
  606. data/lib/ddtrace/contrib/active_record/utils.rb +68 -21
  607. data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +104 -3
  608. data/lib/ddtrace/contrib/active_support/cache/patcher.rb +25 -4
  609. data/lib/ddtrace/contrib/active_support/cache/redis.rb +1 -5
  610. data/lib/ddtrace/contrib/active_support/ext.rb +3 -0
  611. data/lib/ddtrace/contrib/active_support/integration.rb +7 -1
  612. data/lib/ddtrace/contrib/active_support/notifications/event.rb +14 -3
  613. data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +2 -1
  614. data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +11 -7
  615. data/lib/ddtrace/contrib/auto_instrument.rb +48 -0
  616. data/lib/ddtrace/contrib/aws/instrumentation.rb +35 -1
  617. data/lib/ddtrace/contrib/aws/patcher.rb +5 -1
  618. data/lib/ddtrace/contrib/aws/services.rb +3 -0
  619. data/lib/ddtrace/contrib/concurrent_ruby/patcher.rb +1 -1
  620. data/lib/ddtrace/contrib/configurable.rb +64 -38
  621. data/lib/ddtrace/contrib/configuration/resolver.rb +70 -5
  622. data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +20 -20
  623. data/lib/ddtrace/contrib/configuration/settings.rb +7 -6
  624. data/lib/ddtrace/contrib/dalli/instrumentation.rb +5 -1
  625. data/lib/ddtrace/contrib/dalli/patcher.rb +1 -39
  626. data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +2 -0
  627. data/lib/ddtrace/contrib/delayed_job/ext.rb +2 -0
  628. data/lib/ddtrace/contrib/delayed_job/plugin.rb +38 -15
  629. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +5 -0
  630. data/lib/ddtrace/contrib/elasticsearch/quantize.rb +3 -2
  631. data/lib/ddtrace/contrib/ethon/easy_patch.rb +14 -11
  632. data/lib/ddtrace/contrib/ethon/ext.rb +1 -0
  633. data/lib/ddtrace/contrib/ethon/multi_patch.rb +5 -1
  634. data/lib/ddtrace/contrib/ethon/patcher.rb +2 -2
  635. data/lib/ddtrace/contrib/excon/middleware.rb +13 -7
  636. data/lib/ddtrace/contrib/extensions.rb +56 -6
  637. data/lib/ddtrace/contrib/faraday/middleware.rb +5 -3
  638. data/lib/ddtrace/contrib/faraday/patcher.rb +2 -38
  639. data/lib/ddtrace/contrib/grape/configuration/settings.rb +7 -0
  640. data/lib/ddtrace/contrib/grape/endpoint.rb +52 -24
  641. data/lib/ddtrace/contrib/grape/ext.rb +1 -0
  642. data/lib/ddtrace/contrib/grape/instrumentation.rb +2 -2
  643. data/lib/ddtrace/contrib/grape/patcher.rb +1 -43
  644. data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +8 -8
  645. data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +5 -1
  646. data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +5 -0
  647. data/lib/ddtrace/contrib/grpc/patcher.rb +1 -37
  648. data/lib/ddtrace/contrib/http/circuit_breaker.rb +1 -3
  649. data/lib/ddtrace/contrib/http/instrumentation.rb +12 -8
  650. data/lib/ddtrace/contrib/http/patcher.rb +1 -1
  651. data/lib/ddtrace/contrib/httpclient/configuration/settings.rb +32 -0
  652. data/lib/ddtrace/contrib/httpclient/ext.rb +17 -0
  653. data/lib/ddtrace/contrib/httpclient/instrumentation.rb +147 -0
  654. data/lib/ddtrace/contrib/httpclient/integration.rb +43 -0
  655. data/lib/ddtrace/contrib/httpclient/patcher.rb +38 -0
  656. data/lib/ddtrace/contrib/httprb/instrumentation.rb +19 -22
  657. data/lib/ddtrace/contrib/httprb/patcher.rb +6 -3
  658. data/lib/ddtrace/contrib/integration.rb +3 -3
  659. data/lib/ddtrace/contrib/kafka/event.rb +3 -3
  660. data/lib/ddtrace/contrib/mongodb/instrumentation.rb +4 -2
  661. data/lib/ddtrace/contrib/mongodb/patcher.rb +2 -2
  662. data/lib/ddtrace/contrib/mongodb/subscribers.rb +6 -3
  663. data/lib/ddtrace/contrib/mysql2/instrumentation.rb +5 -1
  664. data/lib/ddtrace/contrib/mysql2/patcher.rb +1 -1
  665. data/lib/ddtrace/contrib/patchable.rb +20 -9
  666. data/lib/ddtrace/contrib/patcher.rb +10 -7
  667. data/lib/ddtrace/contrib/presto/instrumentation.rb +4 -1
  668. data/lib/ddtrace/contrib/presto/patcher.rb +6 -3
  669. data/lib/ddtrace/contrib/qless/configuration/settings.rb +35 -0
  670. data/lib/ddtrace/contrib/qless/ext.rb +20 -0
  671. data/lib/ddtrace/contrib/qless/integration.rb +38 -0
  672. data/lib/ddtrace/contrib/qless/patcher.rb +33 -0
  673. data/lib/ddtrace/contrib/qless/qless_job.rb +73 -0
  674. data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +33 -0
  675. data/lib/ddtrace/contrib/que/configuration/settings.rb +1 -0
  676. data/lib/ddtrace/contrib/que/ext.rb +19 -19
  677. data/lib/ddtrace/contrib/que/tracer.rb +3 -2
  678. data/lib/ddtrace/contrib/racecar/event.rb +7 -2
  679. data/lib/ddtrace/contrib/rack/configuration/settings.rb +3 -3
  680. data/lib/ddtrace/contrib/rack/integration.rb +7 -0
  681. data/lib/ddtrace/contrib/rack/middlewares.rb +6 -11
  682. data/lib/ddtrace/contrib/rack/patcher.rb +1 -3
  683. data/lib/ddtrace/contrib/rack/request_queue.rb +6 -1
  684. data/lib/ddtrace/contrib/rails/auto_instrument_railtie.rb +10 -0
  685. data/lib/ddtrace/contrib/rails/patcher.rb +25 -7
  686. data/lib/ddtrace/contrib/rails/utils.rb +4 -0
  687. data/lib/ddtrace/contrib/rake/instrumentation.rb +5 -3
  688. data/lib/ddtrace/contrib/rake/integration.rb +1 -1
  689. data/lib/ddtrace/contrib/rake/patcher.rb +1 -1
  690. data/lib/ddtrace/contrib/redis/configuration/resolver.rb +14 -5
  691. data/lib/ddtrace/contrib/redis/configuration/settings.rb +5 -0
  692. data/lib/ddtrace/contrib/redis/ext.rb +1 -0
  693. data/lib/ddtrace/contrib/redis/patcher.rb +20 -3
  694. data/lib/ddtrace/contrib/redis/quantize.rb +28 -0
  695. data/lib/ddtrace/contrib/redis/tags.rb +9 -1
  696. data/lib/ddtrace/contrib/redis/vendor/LICENSE +20 -0
  697. data/lib/ddtrace/contrib/redis/vendor/resolver.rb +6 -7
  698. data/lib/ddtrace/contrib/registerable.rb +2 -2
  699. data/lib/ddtrace/contrib/registry.rb +2 -2
  700. data/lib/ddtrace/contrib/resque/configuration/settings.rb +18 -1
  701. data/lib/ddtrace/contrib/resque/integration.rb +2 -2
  702. data/lib/ddtrace/contrib/resque/patcher.rb +4 -4
  703. data/lib/ddtrace/contrib/resque/resque_job.rb +25 -2
  704. data/lib/ddtrace/contrib/rest_client/patcher.rb +1 -1
  705. data/lib/ddtrace/contrib/rest_client/request_patch.rb +6 -4
  706. data/lib/ddtrace/contrib/sequel/database.rb +4 -2
  707. data/lib/ddtrace/contrib/sequel/dataset.rb +4 -3
  708. data/lib/ddtrace/contrib/sequel/ext.rb +1 -0
  709. data/lib/ddtrace/contrib/sequel/patcher.rb +2 -2
  710. data/lib/ddtrace/contrib/sequel/utils.rb +15 -5
  711. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +2 -0
  712. data/lib/ddtrace/contrib/shoryuken/tracer.rb +8 -2
  713. data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +1 -0
  714. data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +5 -7
  715. data/lib/ddtrace/contrib/sidekiq/tracing.rb +0 -1
  716. data/lib/ddtrace/contrib/sinatra/env.rb +1 -3
  717. data/lib/ddtrace/contrib/sinatra/headers.rb +1 -3
  718. data/lib/ddtrace/contrib/sinatra/patcher.rb +1 -1
  719. data/lib/ddtrace/contrib/sinatra/tracer.rb +1 -3
  720. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +5 -5
  721. data/lib/ddtrace/contrib/sneakers/configuration/settings.rb +1 -0
  722. data/lib/ddtrace/contrib/sneakers/ext.rb +11 -11
  723. data/lib/ddtrace/contrib/sneakers/tracer.rb +16 -21
  724. data/lib/ddtrace/contrib/status_code_matcher.rb +69 -0
  725. data/lib/ddtrace/contrib/sucker_punch/exception_handler.rb +4 -6
  726. data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +4 -0
  727. data/lib/ddtrace/correlation.rb +1 -0
  728. data/lib/ddtrace/diagnostics/environment_logger.rb +5 -4
  729. data/lib/ddtrace/distributed_tracing/headers/headers.rb +1 -0
  730. data/lib/ddtrace/distributed_tracing/headers/helpers.rb +1 -3
  731. data/lib/ddtrace/error.rb +77 -8
  732. data/lib/ddtrace/ext/distributed.rb +8 -2
  733. data/lib/ddtrace/ext/git.rb +11 -0
  734. data/lib/ddtrace/ext/http.rb +1 -1
  735. data/lib/ddtrace/ext/integration.rb +8 -0
  736. data/lib/ddtrace/ext/profiling.rb +53 -0
  737. data/lib/ddtrace/ext/runtime.rb +5 -1
  738. data/lib/ddtrace/ext/test.rb +8 -0
  739. data/lib/ddtrace/ext/transport.rb +2 -0
  740. data/lib/ddtrace/forced_tracing.rb +2 -0
  741. data/lib/ddtrace/logger.rb +1 -1
  742. data/lib/ddtrace/metrics.rb +42 -9
  743. data/lib/ddtrace/opentelemetry/extensions.rb +1 -1
  744. data/lib/ddtrace/opentracer.rb +20 -39
  745. data/lib/ddtrace/opentracer/distributed_headers.rb +4 -1
  746. data/lib/ddtrace/opentracer/span.rb +2 -6
  747. data/lib/ddtrace/opentracer/thread_local_scope.rb +1 -0
  748. data/lib/ddtrace/patcher.rb +27 -6
  749. data/lib/ddtrace/pin.rb +8 -61
  750. data/lib/ddtrace/pipeline/span_filter.rb +1 -1
  751. data/lib/ddtrace/profiling.rb +107 -0
  752. data/lib/ddtrace/profiling/backtrace_location.rb +32 -0
  753. data/lib/ddtrace/profiling/buffer.rb +41 -0
  754. data/lib/ddtrace/profiling/collectors/stack.rb +262 -0
  755. data/lib/ddtrace/profiling/encoding/profile.rb +37 -0
  756. data/lib/ddtrace/profiling/event.rb +13 -0
  757. data/lib/ddtrace/profiling/events/stack.rb +102 -0
  758. data/lib/ddtrace/profiling/exporter.rb +23 -0
  759. data/lib/ddtrace/profiling/ext/cpu.rb +52 -0
  760. data/lib/ddtrace/profiling/ext/cthread.rb +155 -0
  761. data/lib/ddtrace/profiling/ext/forking.rb +97 -0
  762. data/lib/ddtrace/profiling/flush.rb +43 -0
  763. data/lib/ddtrace/profiling/pprof/builder.rb +119 -0
  764. data/lib/ddtrace/profiling/pprof/converter.rb +89 -0
  765. data/lib/ddtrace/profiling/pprof/message_set.rb +12 -0
  766. data/lib/ddtrace/profiling/pprof/payload.rb +18 -0
  767. data/lib/ddtrace/profiling/pprof/pprof.proto +212 -0
  768. data/lib/ddtrace/profiling/pprof/pprof_pb.rb +81 -0
  769. data/lib/ddtrace/profiling/pprof/stack_sample.rb +106 -0
  770. data/lib/ddtrace/profiling/pprof/string_table.rb +10 -0
  771. data/lib/ddtrace/profiling/pprof/template.rb +118 -0
  772. data/lib/ddtrace/profiling/preload.rb +3 -0
  773. data/lib/ddtrace/profiling/profiler.rb +30 -0
  774. data/lib/ddtrace/profiling/recorder.rb +95 -0
  775. data/lib/ddtrace/profiling/scheduler.rb +116 -0
  776. data/lib/ddtrace/profiling/tasks/setup.rb +77 -0
  777. data/lib/ddtrace/profiling/transport/client.rb +12 -0
  778. data/lib/ddtrace/profiling/transport/http.rb +118 -0
  779. data/lib/ddtrace/profiling/transport/http/api.rb +43 -0
  780. data/lib/ddtrace/profiling/transport/http/api/endpoint.rb +100 -0
  781. data/lib/ddtrace/profiling/transport/http/api/instance.rb +36 -0
  782. data/lib/ddtrace/profiling/transport/http/api/spec.rb +40 -0
  783. data/lib/ddtrace/profiling/transport/http/builder.rb +28 -0
  784. data/lib/ddtrace/profiling/transport/http/client.rb +33 -0
  785. data/lib/ddtrace/profiling/transport/http/response.rb +21 -0
  786. data/lib/ddtrace/profiling/transport/io.rb +30 -0
  787. data/lib/ddtrace/profiling/transport/io/client.rb +27 -0
  788. data/lib/ddtrace/profiling/transport/io/response.rb +16 -0
  789. data/lib/ddtrace/profiling/transport/parcel.rb +17 -0
  790. data/lib/ddtrace/profiling/transport/request.rb +15 -0
  791. data/lib/ddtrace/profiling/transport/response.rb +8 -0
  792. data/lib/ddtrace/propagation/grpc_propagator.rb +19 -6
  793. data/lib/ddtrace/propagation/http_propagator.rb +17 -2
  794. data/lib/ddtrace/quantization/http.rb +1 -0
  795. data/lib/ddtrace/runtime/cgroup.rb +2 -2
  796. data/lib/ddtrace/runtime/container.rb +43 -29
  797. data/lib/ddtrace/runtime/identity.rb +12 -5
  798. data/lib/ddtrace/runtime/metrics.rb +9 -7
  799. data/lib/ddtrace/sampler.rb +3 -3
  800. data/lib/ddtrace/sampling/rate_limiter.rb +65 -16
  801. data/lib/ddtrace/sampling/rule_sampler.rb +4 -9
  802. data/lib/ddtrace/span.rb +154 -29
  803. data/lib/ddtrace/sync_writer.rb +14 -13
  804. data/lib/ddtrace/tasks/exec.rb +48 -0
  805. data/lib/ddtrace/tasks/help.rb +14 -0
  806. data/lib/ddtrace/tracer.rb +68 -50
  807. data/lib/ddtrace/transport/http.rb +41 -31
  808. data/lib/ddtrace/transport/http/adapters/net.rb +34 -9
  809. data/lib/ddtrace/transport/http/adapters/registry.rb +1 -0
  810. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +2 -4
  811. data/lib/ddtrace/transport/http/builder.rb +7 -1
  812. data/lib/ddtrace/transport/http/env.rb +8 -0
  813. data/lib/ddtrace/transport/http/statistics.rb +16 -3
  814. data/lib/ddtrace/transport/http/traces.rb +5 -6
  815. data/lib/ddtrace/transport/io.rb +1 -1
  816. data/lib/ddtrace/transport/io/client.rb +15 -8
  817. data/lib/ddtrace/transport/io/response.rb +1 -3
  818. data/lib/ddtrace/transport/io/traces.rb +7 -1
  819. data/lib/ddtrace/transport/parcel.rb +4 -0
  820. data/lib/ddtrace/transport/traces.rb +25 -3
  821. data/lib/ddtrace/utils.rb +16 -13
  822. data/lib/ddtrace/utils/compression.rb +27 -0
  823. data/lib/ddtrace/utils/forking.rb +52 -0
  824. data/lib/ddtrace/utils/object_set.rb +39 -0
  825. data/lib/ddtrace/utils/only_once.rb +40 -0
  826. data/lib/ddtrace/utils/sequence.rb +17 -0
  827. data/lib/ddtrace/utils/string_table.rb +45 -0
  828. data/lib/ddtrace/utils/time.rb +32 -3
  829. data/lib/ddtrace/vendor/active_record/MIT-LICENSE +20 -0
  830. data/lib/ddtrace/vendor/multipart-post/LICENSE +11 -0
  831. data/lib/ddtrace/vendor/multipart-post/multipart.rb +12 -0
  832. data/lib/ddtrace/vendor/multipart-post/multipart/post.rb +8 -0
  833. data/lib/ddtrace/vendor/multipart-post/multipart/post/composite_read_io.rb +116 -0
  834. data/lib/ddtrace/vendor/multipart-post/multipart/post/multipartable.rb +57 -0
  835. data/lib/ddtrace/vendor/multipart-post/multipart/post/parts.rb +135 -0
  836. data/lib/ddtrace/vendor/multipart-post/multipart/post/version.rb +9 -0
  837. data/lib/ddtrace/vendor/multipart-post/net/http/post/multipart.rb +32 -0
  838. data/lib/ddtrace/version.rb +14 -2
  839. data/lib/ddtrace/workers.rb +6 -1
  840. data/lib/ddtrace/workers/async.rb +13 -4
  841. data/lib/ddtrace/workers/loop.rb +31 -5
  842. data/lib/ddtrace/workers/polling.rb +12 -5
  843. data/lib/ddtrace/workers/queue.rb +2 -1
  844. data/lib/ddtrace/workers/runtime_metrics.rb +21 -4
  845. data/lib/ddtrace/workers/trace_writer.rb +11 -14
  846. data/lib/ddtrace/writer.rb +30 -6
  847. metadata +642 -338
  848. data/lib/ddtrace/augmentation.rb +0 -13
  849. data/lib/ddtrace/augmentation/method_wrapper.rb +0 -20
  850. data/lib/ddtrace/augmentation/method_wrapping.rb +0 -38
  851. data/lib/ddtrace/augmentation/shim.rb +0 -102
  852. data/lib/ddtrace/monkey.rb +0 -58
@@ -1,8 +1,8 @@
1
- require 'thread'
2
1
  require 'ddtrace/diagnostics/health'
3
2
 
4
3
  require 'ddtrace/context_flush'
5
4
  require 'ddtrace/context_provider'
5
+ require 'ddtrace/utils/forking'
6
6
 
7
7
  module Datadog
8
8
  # \Context is used to keep track of a hierarchy of spans for the current
@@ -19,6 +19,8 @@ module Datadog
19
19
  # This data structure is thread-safe.
20
20
  # rubocop:disable Metrics/ClassLength
21
21
  class Context
22
+ include Datadog::Utils::Forking
23
+
22
24
  # 100k spans is about a 100Mb footprint
23
25
  DEFAULT_MAX_LENGTH = 100_000
24
26
 
@@ -123,6 +125,7 @@ module Datadog
123
125
  # on per-instrumentation code to retrieve handle parent/child relations.
124
126
  set_current_span(span.parent)
125
127
  return if span.tracer.nil?
128
+
126
129
  if span.parent.nil? && !all_spans_finished?
127
130
  if Datadog.configuration.diagnostics.debug
128
131
  opened_spans = @trace.length - @finished_spans
@@ -186,6 +189,9 @@ module Datadog
186
189
  # Root span is finished at this point, we can configure it
187
190
  annotate_for_flush!(@current_root_span)
188
191
 
192
+ # Allow caller to modify trace before context is reset
193
+ yield(trace) if block_given?
194
+
189
195
  reset
190
196
  [trace, sampled]
191
197
  end
@@ -224,14 +230,43 @@ module Datadog
224
230
  attach_origin(span) if @origin
225
231
  end
226
232
 
233
+ def attach_sampling_priority(span)
234
+ span.set_metric(
235
+ Ext::DistributedTracing::SAMPLING_PRIORITY_KEY,
236
+ @sampling_priority
237
+ )
238
+ end
239
+
240
+ def attach_origin(span)
241
+ span.set_tag(
242
+ Ext::DistributedTracing::ORIGIN_KEY,
243
+ @origin
244
+ )
245
+ end
246
+
227
247
  # Return a string representation of the context.
228
248
  def to_s
229
249
  @mutex.synchronize do
230
- # rubocop:disable Metrics/LineLength
250
+ # rubocop:disable Layout/LineLength
231
251
  "Context(trace.length:#{@trace.length},sampled:#{@sampled},finished_spans:#{@finished_spans},current_span:#{@current_span})"
232
252
  end
233
253
  end
234
254
 
255
+ # Generates equivalent context for forked processes.
256
+ #
257
+ # When Context from parent process is forked, child process
258
+ # should have a Context belonging to the same trace but not
259
+ # have the parent process spans.
260
+ def fork_clone
261
+ self.class.new(
262
+ trace_id: trace_id,
263
+ span_id: span_id,
264
+ sampled: sampled?,
265
+ sampling_priority: sampling_priority,
266
+ origin: origin
267
+ )
268
+ end
269
+
235
270
  private
236
271
 
237
272
  def reset(options = {})
@@ -264,24 +299,11 @@ module Datadog
264
299
  @finished_spans > 0 && @trace.length == @finished_spans
265
300
  end
266
301
 
267
- def attach_sampling_priority(span)
268
- span.set_metric(
269
- Ext::DistributedTracing::SAMPLING_PRIORITY_KEY,
270
- @sampling_priority
271
- )
272
- end
273
-
274
- def attach_origin(span)
275
- span.set_tag(
276
- Ext::DistributedTracing::ORIGIN_KEY,
277
- @origin
278
- )
279
- end
280
-
281
302
  # Return the start time of the root span, or nil if there are no spans or this is undefined.
282
303
  def start_time
283
304
  @mutex.synchronize do
284
305
  return nil if @trace.empty?
306
+
285
307
  @trace[0].start_time
286
308
  end
287
309
  end
@@ -294,11 +316,9 @@ module Datadog
294
316
  end
295
317
 
296
318
  # Iterate on each span within the trace. This is thread safe.
297
- def each_span
319
+ def each_span(&block)
298
320
  @mutex.synchronize do
299
- @trace.each do |span|
300
- yield span
301
- end
321
+ @trace.each(&block)
302
322
  end
303
323
  end
304
324
  end
@@ -9,9 +9,15 @@ module Datadog
9
9
  #
10
10
  # @return [Array<Span>] trace to be flushed, or +nil+ if the trace is not finished
11
11
  def consume!(context)
12
- trace, sampled = context.get
12
+ trace, sampled = get_trace(context)
13
13
  trace if sampled
14
14
  end
15
+
16
+ protected
17
+
18
+ def get_trace(context)
19
+ context.get
20
+ end
15
21
  end
16
22
 
17
23
  # Performs partial trace flushing to avoid large traces residing in memory for too long
@@ -34,7 +40,7 @@ module Datadog
34
40
  #
35
41
  # @return [Array<Span>] partial or complete trace to be flushed, or +nil+ if no spans are finished
36
42
  def consume!(context)
37
- trace, sampled = context.get
43
+ trace, sampled = get_trace(context)
38
44
 
39
45
  return nil unless sampled
40
46
  return trace if trace && !trace.empty?
@@ -42,6 +48,12 @@ module Datadog
42
48
  partial_trace(context)
43
49
  end
44
50
 
51
+ protected
52
+
53
+ def get_trace(context)
54
+ context.get
55
+ end
56
+
45
57
  private
46
58
 
47
59
  def partial_trace(context)
@@ -13,9 +13,20 @@ module Datadog
13
13
  @context.local = ctx
14
14
  end
15
15
 
16
- # Return the current context.
17
- def context
18
- @context.local
16
+ # Return the local context.
17
+ def context(key = nil)
18
+ current_context = key.nil? ? @context.local : @context.local(key)
19
+
20
+ # Rebuild/reset context after a fork
21
+ #
22
+ # We don't want forked processes to copy and retransmit spans
23
+ # that were generated from the parent process. Reset it such
24
+ # that it acts like a distributed trace.
25
+ current_context.after_fork! do
26
+ current_context = self.context = current_context.fork_clone
27
+ end
28
+
29
+ current_context
19
30
  end
20
31
  end
21
32
 
@@ -43,8 +54,8 @@ module Datadog
43
54
  end
44
55
 
45
56
  # Return the thread-local context.
46
- def local
47
- Thread.current[@key] ||= Datadog::Context.new
57
+ def local(thread = Thread.current)
58
+ thread[@key] ||= Datadog::Context.new
48
59
  end
49
60
  end
50
61
  end
@@ -8,8 +8,8 @@ module Datadog
8
8
  # Defines basic behaviors for an event.
9
9
  module Event
10
10
  def self.included(base)
11
- base.send(:include, ActiveSupport::Notifications::Event)
12
- base.send(:extend, ClassMethods)
11
+ base.include(ActiveSupport::Notifications::Event)
12
+ base.extend(ClassMethods)
13
13
  end
14
14
 
15
15
  # Class methods for events.
@@ -34,8 +34,8 @@ module Datadog
34
34
  # but to start a fresh tracing context.
35
35
  module RootContextEvent
36
36
  def self.included(base)
37
- base.send(:include, ActiveSupport::Notifications::Event)
38
- base.send(:extend, ClassMethods)
37
+ base.include(ActiveSupport::Notifications::Event)
38
+ base.extend(ClassMethods)
39
39
  end
40
40
 
41
41
  # Class methods for events.
@@ -56,6 +56,7 @@ module Datadog
56
56
  # preventing such a leak.
57
57
  def ensure_clean_context!
58
58
  return unless configuration[:tracer].call_context.current_span
59
+
59
60
  configuration[:tracer].provider.context = Context.new
60
61
  end
61
62
  end
@@ -1,6 +1,7 @@
1
1
  require 'ddtrace/contrib/integration'
2
2
  require 'ddtrace/contrib/action_cable/configuration/settings'
3
3
  require 'ddtrace/contrib/action_cable/patcher'
4
+ require 'ddtrace/contrib/rails/utils'
4
5
 
5
6
  module Datadog
6
7
  module Contrib
@@ -25,6 +26,12 @@ module Datadog
25
26
  super && version >= MINIMUM_VERSION
26
27
  end
27
28
 
29
+ # enabled by rails integration so should only auto instrument
30
+ # if detected that it is being used without rails
31
+ def auto_instrument?
32
+ !Datadog::Contrib::Rails::Utils.railtie_supported?
33
+ end
34
+
28
35
  def default_configuration
29
36
  Configuration::Settings.new
30
37
  end
@@ -36,9 +36,7 @@ module Datadog
36
36
 
37
37
  begin
38
38
  # Set the resource name, if it's still the default name
39
- if span.resource == span.name
40
- span.resource = "#{payload.fetch(:controller)}##{payload.fetch(:action)}"
41
- end
39
+ span.resource = "#{payload.fetch(:controller)}##{payload.fetch(:action)}" if span.resource == span.name
42
40
 
43
41
  # Set the resource name of the Rack request span unless this is an exception controller.
44
42
  unless exception_controller?(payload)
@@ -63,7 +61,7 @@ module Datadog
63
61
  # [christian] in some cases :status is not defined,
64
62
  # rather than firing an error, simply acknowledge we don't know it.
65
63
  status = payload.fetch(:status, '?').to_s
66
- span.status = 1 if status.starts_with?('5')
64
+ span.status = 1 if status.start_with?('5')
67
65
  elsif Utils.exception_is_error?(exception)
68
66
  span.set_error(exception)
69
67
  end
@@ -16,7 +16,7 @@ module Datadog
16
16
  end
17
17
 
18
18
  def patch
19
- ::ActionController::Metal.send(:prepend, ActionController::Instrumentation::Metal)
19
+ ::ActionController::Metal.prepend(ActionController::Instrumentation::Metal)
20
20
  end
21
21
  end
22
22
  end
@@ -1,6 +1,7 @@
1
1
  require 'ddtrace/contrib/integration'
2
2
  require 'ddtrace/contrib/action_pack/configuration/settings'
3
3
  require 'ddtrace/contrib/action_pack/patcher'
4
+ require 'ddtrace/contrib/rails/utils'
4
5
 
5
6
  module Datadog
6
7
  module Contrib
@@ -25,6 +26,12 @@ module Datadog
25
26
  super && version >= MINIMUM_VERSION
26
27
  end
27
28
 
29
+ # enabled by rails integration so should only auto instrument
30
+ # if detected that it is being used without rails
31
+ def auto_instrument?
32
+ !Datadog::Contrib::Rails::Utils.railtie_supported?
33
+ end
34
+
28
35
  def default_configuration
29
36
  Configuration::Settings.new
30
37
  end
@@ -11,7 +11,7 @@ module Datadog
11
11
  # You can add custom errors via `config.action_dispatch.rescue_responses`
12
12
  status = ::ActionDispatch::ExceptionWrapper.status_code_for_exception(exception.class.name)
13
13
  # Only 5XX exceptions are actually errors (e.g. don't flag 404s)
14
- status.to_s.starts_with?('5')
14
+ status.to_s.start_with?('5')
15
15
  else
16
16
  true
17
17
  end
@@ -6,16 +6,12 @@ module Datadog
6
6
  # Defines basic behavior for an ActionView event.
7
7
  module Event
8
8
  def self.included(base)
9
- base.send(:include, ActiveSupport::Notifications::Event)
10
- base.send(:extend, ClassMethods)
9
+ base.include(ActiveSupport::Notifications::Event)
10
+ base.extend(ClassMethods)
11
11
  end
12
12
 
13
13
  # Class methods for ActionView events.
14
14
  module ClassMethods
15
- def span_options
16
- { service: configuration[:service_name] }
17
- end
18
-
19
15
  def tracer
20
16
  -> { configuration[:tracer] }
21
17
  end
@@ -25,7 +21,7 @@ module Datadog
25
21
  end
26
22
 
27
23
  def record_exception(span, payload)
28
- if payload [:exception_object]
24
+ if payload[:exception_object]
29
25
  span.set_error(payload[:exception_object])
30
26
  elsif payload[:exception]
31
27
  # Fallback for ActiveSupport < 5.0
@@ -24,6 +24,7 @@ module Datadog
24
24
  end
25
25
 
26
26
  def process(span, _event, _id, payload)
27
+ span.service = configuration[:service_name]
27
28
  span.span_type = Datadog::Ext::HTTP::TEMPLATE
28
29
 
29
30
  if (template_name = Utils.normalize_template_name(payload[:identifier]))
@@ -24,6 +24,7 @@ module Datadog
24
24
  end
25
25
 
26
26
  def process(span, _event, _id, payload)
27
+ span.service = configuration[:service_name]
27
28
  span.span_type = Datadog::Ext::HTTP::TEMPLATE
28
29
 
29
30
  if (template_name = Utils.normalize_template_name(payload[:identifier]))
@@ -1,6 +1,7 @@
1
1
  require 'ddtrace/contrib/integration'
2
2
  require 'ddtrace/contrib/action_view/configuration/settings'
3
3
  require 'ddtrace/contrib/action_view/patcher'
4
+ require 'ddtrace/contrib/rails/utils'
4
5
 
5
6
  module Datadog
6
7
  module Contrib
@@ -32,6 +33,12 @@ module Datadog
32
33
  super && version >= MINIMUM_VERSION
33
34
  end
34
35
 
36
+ # enabled by rails integration so should only auto instrument
37
+ # if detected that it is being used without rails
38
+ def auto_instrument?
39
+ !Datadog::Contrib::Rails::Utils.railtie_supported?
40
+ end
41
+
35
42
  def default_configuration
36
43
  Configuration::Settings.new
37
44
  end
@@ -31,12 +31,12 @@ module Datadog
31
31
  # Rendering events are not nested in this version, creating
32
32
  # render_partial spans outside of the parent render_template span.
33
33
  # We fall back to manual patching instead.
34
- ::ActionView::TemplateRenderer.send(:prepend, Instrumentation::TemplateRenderer::RailsLessThan4)
35
- ::ActionView::PartialRenderer.send(:prepend, Instrumentation::PartialRenderer::RailsLessThan4)
34
+ ::ActionView::TemplateRenderer.prepend(Instrumentation::TemplateRenderer::RailsLessThan4)
35
+ ::ActionView::PartialRenderer.prepend(Instrumentation::PartialRenderer::RailsLessThan4)
36
36
  elsif defined?(::ActionView::Rendering) && defined?(::ActionView::Partials::PartialRenderer)
37
37
  # NOTE: Rails < 3.1 compatibility: different classes are used
38
- ::ActionView::Rendering.send(:prepend, Instrumentation::TemplateRenderer::Rails30)
39
- ::ActionView::Partials::PartialRenderer.send(:prepend, Instrumentation::PartialRenderer::RailsLessThan4)
38
+ ::ActionView::Rendering.prepend(Instrumentation::TemplateRenderer::Rails30)
39
+ ::ActionView::Partials::PartialRenderer.prepend(Instrumentation::PartialRenderer::RailsLessThan4)
40
40
  else
41
41
  Datadog.logger.debug('Expected Template/Partial classes not found; template rendering disabled')
42
42
  end
@@ -24,7 +24,7 @@ module Datadog
24
24
  sections_view[-1]
25
25
  end
26
26
  rescue
27
- return name.to_s
27
+ name.to_s
28
28
  end
29
29
  end
30
30
  end
@@ -9,8 +9,8 @@ module Datadog
9
9
  # Defines basic behaviors for an ActiveModelSerializers event.
10
10
  module Event
11
11
  def self.included(base)
12
- base.send(:include, ActiveSupport::Notifications::Event)
13
- base.send(:extend, ClassMethods)
12
+ base.include(ActiveSupport::Notifications::Event)
13
+ base.extend(ClassMethods)
14
14
  end
15
15
 
16
16
  # Class methods for ActiveModelSerializers events.
@@ -0,0 +1,30 @@
1
+ module Datadog
2
+ module Contrib
3
+ module ActiveRecord
4
+ module Configuration
5
+ # The `makara` gem has the concept of **role**, which can be
6
+ # inferred from the configuration `name`, in the form of:
7
+ # `master/0`, `replica/0`, `replica/1`, etc.
8
+ # The first part of this string is the database role.
9
+ #
10
+ # This allows the matching of a connection based on its role,
11
+ # instead of connection-specific information.
12
+ module MakaraResolver
13
+ def normalize_for_config(active_record_config)
14
+ hash = super
15
+ hash[:makara_role] = active_record_config[:makara_role]
16
+ hash
17
+ end
18
+
19
+ def normalize_for_resolve(active_record_config)
20
+ hash = super
21
+
22
+ hash[:makara_role] = active_record_config[:name].split('/')[0].to_s if active_record_config[:name].is_a?(String)
23
+
24
+ hash
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end