ddtrace 0.51.1 → 0.54.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1154) hide show
  1. checksums.yaml +4 -4
  2. data/.editorconfig +22 -0
  3. data/.gitignore +7 -0
  4. data/CHANGELOG.md +230 -11
  5. data/CONTRIBUTING.md +1 -5
  6. data/ddtrace.gemspec +15 -3
  7. data/docs/DevelopmentGuide.md +16 -6
  8. data/docs/GettingStarted.md +116 -18
  9. data/docs/ProfilingDevelopment.md +33 -14
  10. data/ext/ddtrace_profiling_native_extension/NativeExtensionDesign.md +86 -0
  11. data/ext/ddtrace_profiling_native_extension/clock_id.h +4 -0
  12. data/ext/ddtrace_profiling_native_extension/clock_id_from_pthread.c +52 -0
  13. data/ext/ddtrace_profiling_native_extension/clock_id_noop.c +14 -0
  14. data/ext/ddtrace_profiling_native_extension/extconf.rb +197 -0
  15. data/ext/ddtrace_profiling_native_extension/private_vm_api_access.c +35 -0
  16. data/ext/ddtrace_profiling_native_extension/private_vm_api_access.h +3 -0
  17. data/ext/ddtrace_profiling_native_extension/profiling.c +22 -0
  18. data/lib/datadog/ci/configuration/components.rb +1 -0
  19. data/lib/datadog/ci/configuration/settings.rb +1 -0
  20. data/lib/datadog/ci/context_flush.rb +1 -0
  21. data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +1 -0
  22. data/lib/datadog/ci/contrib/cucumber/ext.rb +1 -0
  23. data/lib/datadog/ci/contrib/cucumber/formatter.rb +2 -0
  24. data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +1 -0
  25. data/lib/datadog/ci/contrib/cucumber/integration.rb +1 -0
  26. data/lib/datadog/ci/contrib/cucumber/patcher.rb +1 -0
  27. data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +1 -0
  28. data/lib/datadog/ci/contrib/rspec/example.rb +2 -0
  29. data/lib/datadog/ci/contrib/rspec/ext.rb +1 -0
  30. data/lib/datadog/ci/contrib/rspec/integration.rb +3 -2
  31. data/lib/datadog/ci/contrib/rspec/patcher.rb +1 -0
  32. data/lib/datadog/ci/ext/app_types.rb +1 -0
  33. data/lib/datadog/ci/ext/environment.rb +77 -30
  34. data/lib/datadog/ci/ext/settings.rb +1 -0
  35. data/lib/datadog/ci/ext/test.rb +2 -0
  36. data/lib/datadog/ci/extensions.rb +1 -0
  37. data/lib/datadog/ci/test.rb +6 -1
  38. data/lib/datadog/ci.rb +1 -0
  39. data/lib/datadog/contrib.rb +71 -0
  40. data/lib/datadog/core/environment/cgroup.rb +4 -1
  41. data/lib/datadog/core/environment/class_count.rb +1 -0
  42. data/lib/datadog/core/environment/container.rb +6 -3
  43. data/lib/datadog/core/environment/ext.rb +1 -0
  44. data/lib/datadog/core/environment/gc.rb +1 -0
  45. data/lib/datadog/core/environment/identity.rb +1 -0
  46. data/lib/datadog/core/environment/socket.rb +1 -0
  47. data/lib/datadog/core/environment/thread_count.rb +1 -0
  48. data/lib/datadog/core/environment/variable_helpers.rb +3 -0
  49. data/lib/datadog/core/environment/vm_cache.rb +46 -0
  50. data/lib/ddtrace/analytics.rb +1 -0
  51. data/lib/ddtrace/auto_instrument.rb +1 -0
  52. data/lib/ddtrace/auto_instrument_base.rb +1 -0
  53. data/lib/ddtrace/buffer.rb +34 -20
  54. data/lib/ddtrace/chunker.rb +1 -0
  55. data/lib/ddtrace/configuration/agent_settings_resolver.rb +132 -53
  56. data/lib/ddtrace/configuration/base.rb +1 -0
  57. data/lib/ddtrace/configuration/components.rb +21 -7
  58. data/lib/ddtrace/configuration/dependency_resolver.rb +1 -0
  59. data/lib/ddtrace/configuration/option.rb +1 -0
  60. data/lib/ddtrace/configuration/option_definition.rb +1 -0
  61. data/lib/ddtrace/configuration/option_definition_set.rb +1 -0
  62. data/lib/ddtrace/configuration/option_set.rb +1 -0
  63. data/lib/ddtrace/configuration/options.rb +1 -0
  64. data/lib/ddtrace/configuration/pin_setup.rb +1 -0
  65. data/lib/ddtrace/configuration/settings.rb +23 -6
  66. data/lib/ddtrace/configuration.rb +21 -2
  67. data/lib/ddtrace/context.rb +11 -2
  68. data/lib/ddtrace/context_flush.rb +1 -0
  69. data/lib/ddtrace/context_provider.rb +1 -0
  70. data/lib/ddtrace/contrib/action_cable/configuration/settings.rb +1 -0
  71. data/lib/ddtrace/contrib/action_cable/event.rb +1 -0
  72. data/lib/ddtrace/contrib/action_cable/events/broadcast.rb +1 -0
  73. data/lib/ddtrace/contrib/action_cable/events/perform_action.rb +1 -0
  74. data/lib/ddtrace/contrib/action_cable/events/transmit.rb +1 -0
  75. data/lib/ddtrace/contrib/action_cable/events.rb +1 -0
  76. data/lib/ddtrace/contrib/action_cable/ext.rb +1 -0
  77. data/lib/ddtrace/contrib/action_cable/instrumentation.rb +47 -0
  78. data/lib/ddtrace/contrib/action_cable/integration.rb +1 -0
  79. data/lib/ddtrace/contrib/action_cable/patcher.rb +2 -0
  80. data/lib/ddtrace/contrib/action_mailer/configuration/settings.rb +32 -0
  81. data/lib/ddtrace/contrib/action_mailer/event.rb +50 -0
  82. data/lib/ddtrace/contrib/action_mailer/events/deliver.rb +54 -0
  83. data/lib/ddtrace/contrib/action_mailer/events/process.rb +41 -0
  84. data/lib/ddtrace/contrib/action_mailer/events.rb +31 -0
  85. data/lib/ddtrace/contrib/action_mailer/ext.rb +32 -0
  86. data/lib/ddtrace/contrib/action_mailer/integration.rb +45 -0
  87. data/lib/ddtrace/contrib/action_mailer/patcher.rb +27 -0
  88. data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +21 -10
  89. data/lib/ddtrace/contrib/action_pack/action_controller/patcher.rb +1 -0
  90. data/lib/ddtrace/contrib/action_pack/configuration/settings.rb +1 -0
  91. data/lib/ddtrace/contrib/action_pack/ext.rb +1 -0
  92. data/lib/ddtrace/contrib/action_pack/integration.rb +1 -0
  93. data/lib/ddtrace/contrib/action_pack/patcher.rb +1 -0
  94. data/lib/ddtrace/contrib/action_pack/utils.rb +1 -0
  95. data/lib/ddtrace/contrib/action_view/configuration/settings.rb +1 -0
  96. data/lib/ddtrace/contrib/action_view/event.rb +1 -0
  97. data/lib/ddtrace/contrib/action_view/events/render_partial.rb +1 -0
  98. data/lib/ddtrace/contrib/action_view/events/render_template.rb +1 -0
  99. data/lib/ddtrace/contrib/action_view/events.rb +1 -0
  100. data/lib/ddtrace/contrib/action_view/ext.rb +1 -0
  101. data/lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb +1 -0
  102. data/lib/ddtrace/contrib/action_view/instrumentation/template_renderer.rb +1 -0
  103. data/lib/ddtrace/contrib/action_view/integration.rb +1 -0
  104. data/lib/ddtrace/contrib/action_view/patcher.rb +1 -0
  105. data/lib/ddtrace/contrib/action_view/utils.rb +1 -0
  106. data/lib/ddtrace/contrib/active_job/configuration/settings.rb +33 -0
  107. data/lib/ddtrace/contrib/active_job/event.rb +54 -0
  108. data/lib/ddtrace/contrib/active_job/events/discard.rb +46 -0
  109. data/lib/ddtrace/contrib/active_job/events/enqueue.rb +45 -0
  110. data/lib/ddtrace/contrib/active_job/events/enqueue_at.rb +45 -0
  111. data/lib/ddtrace/contrib/active_job/events/enqueue_retry.rb +47 -0
  112. data/lib/ddtrace/contrib/active_job/events/perform.rb +45 -0
  113. data/lib/ddtrace/contrib/active_job/events/retry_stopped.rb +46 -0
  114. data/lib/ddtrace/contrib/active_job/events.rb +39 -0
  115. data/lib/ddtrace/contrib/active_job/ext.rb +32 -0
  116. data/lib/ddtrace/contrib/active_job/integration.rb +46 -0
  117. data/lib/ddtrace/contrib/active_job/log_injection.rb +21 -0
  118. data/lib/ddtrace/contrib/active_job/patcher.rb +33 -0
  119. data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +1 -0
  120. data/lib/ddtrace/contrib/active_model_serializers/event.rb +1 -0
  121. data/lib/ddtrace/contrib/active_model_serializers/events/render.rb +1 -0
  122. data/lib/ddtrace/contrib/active_model_serializers/events/serialize.rb +1 -0
  123. data/lib/ddtrace/contrib/active_model_serializers/events.rb +1 -0
  124. data/lib/ddtrace/contrib/active_model_serializers/ext.rb +1 -0
  125. data/lib/ddtrace/contrib/active_model_serializers/integration.rb +1 -0
  126. data/lib/ddtrace/contrib/active_model_serializers/patcher.rb +1 -0
  127. data/lib/ddtrace/contrib/active_record/configuration/makara_resolver.rb +1 -0
  128. data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +3 -2
  129. data/lib/ddtrace/contrib/active_record/configuration/settings.rb +1 -0
  130. data/lib/ddtrace/contrib/active_record/event.rb +1 -0
  131. data/lib/ddtrace/contrib/active_record/events/instantiation.rb +1 -0
  132. data/lib/ddtrace/contrib/active_record/events/sql.rb +1 -0
  133. data/lib/ddtrace/contrib/active_record/events.rb +1 -0
  134. data/lib/ddtrace/contrib/active_record/ext.rb +1 -0
  135. data/lib/ddtrace/contrib/active_record/integration.rb +1 -0
  136. data/lib/ddtrace/contrib/active_record/patcher.rb +1 -0
  137. data/lib/ddtrace/contrib/active_record/utils.rb +2 -1
  138. data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +1 -0
  139. data/lib/ddtrace/contrib/active_support/cache/patcher.rb +1 -0
  140. data/lib/ddtrace/contrib/active_support/cache/redis.rb +1 -0
  141. data/lib/ddtrace/contrib/active_support/configuration/settings.rb +1 -0
  142. data/lib/ddtrace/contrib/active_support/ext.rb +1 -0
  143. data/lib/ddtrace/contrib/active_support/integration.rb +1 -0
  144. data/lib/ddtrace/contrib/active_support/notifications/event.rb +1 -0
  145. data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +1 -0
  146. data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +1 -0
  147. data/lib/ddtrace/contrib/active_support/patcher.rb +1 -0
  148. data/lib/ddtrace/contrib/analytics.rb +1 -0
  149. data/lib/ddtrace/contrib/auto_instrument.rb +2 -2
  150. data/lib/ddtrace/contrib/aws/configuration/settings.rb +1 -0
  151. data/lib/ddtrace/contrib/aws/ext.rb +1 -0
  152. data/lib/ddtrace/contrib/aws/instrumentation.rb +1 -0
  153. data/lib/ddtrace/contrib/aws/integration.rb +1 -0
  154. data/lib/ddtrace/contrib/aws/parsed_context.rb +1 -0
  155. data/lib/ddtrace/contrib/aws/patcher.rb +1 -0
  156. data/lib/ddtrace/contrib/aws/services.rb +1 -0
  157. data/lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb +1 -0
  158. data/lib/ddtrace/contrib/concurrent_ruby/context_composite_executor_service.rb +1 -0
  159. data/lib/ddtrace/contrib/concurrent_ruby/ext.rb +1 -0
  160. data/lib/ddtrace/contrib/concurrent_ruby/future_patch.rb +1 -0
  161. data/lib/ddtrace/contrib/concurrent_ruby/integration.rb +1 -0
  162. data/lib/ddtrace/contrib/concurrent_ruby/patcher.rb +2 -0
  163. data/lib/ddtrace/contrib/configurable.rb +1 -0
  164. data/lib/ddtrace/contrib/configuration/resolver.rb +1 -0
  165. data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +1 -0
  166. data/lib/ddtrace/contrib/configuration/settings.rb +1 -0
  167. data/lib/ddtrace/contrib/dalli/configuration/settings.rb +1 -0
  168. data/lib/ddtrace/contrib/dalli/ext.rb +1 -0
  169. data/lib/ddtrace/contrib/dalli/instrumentation.rb +1 -0
  170. data/lib/ddtrace/contrib/dalli/integration.rb +1 -0
  171. data/lib/ddtrace/contrib/dalli/patcher.rb +1 -0
  172. data/lib/ddtrace/contrib/dalli/quantize.rb +1 -0
  173. data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +1 -0
  174. data/lib/ddtrace/contrib/delayed_job/ext.rb +1 -0
  175. data/lib/ddtrace/contrib/delayed_job/integration.rb +1 -0
  176. data/lib/ddtrace/contrib/delayed_job/patcher.rb +1 -0
  177. data/lib/ddtrace/contrib/delayed_job/plugin.rb +3 -2
  178. data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +1 -0
  179. data/lib/ddtrace/contrib/elasticsearch/ext.rb +1 -0
  180. data/lib/ddtrace/contrib/elasticsearch/integration.rb +1 -0
  181. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +1 -0
  182. data/lib/ddtrace/contrib/elasticsearch/quantize.rb +3 -0
  183. data/lib/ddtrace/contrib/ethon/configuration/settings.rb +1 -0
  184. data/lib/ddtrace/contrib/ethon/easy_patch.rb +1 -0
  185. data/lib/ddtrace/contrib/ethon/ext.rb +1 -0
  186. data/lib/ddtrace/contrib/ethon/integration.rb +1 -0
  187. data/lib/ddtrace/contrib/ethon/multi_patch.rb +1 -0
  188. data/lib/ddtrace/contrib/ethon/patcher.rb +2 -0
  189. data/lib/ddtrace/contrib/excon/configuration/settings.rb +1 -0
  190. data/lib/ddtrace/contrib/excon/ext.rb +1 -0
  191. data/lib/ddtrace/contrib/excon/integration.rb +1 -0
  192. data/lib/ddtrace/contrib/excon/middleware.rb +1 -0
  193. data/lib/ddtrace/contrib/excon/patcher.rb +1 -0
  194. data/lib/ddtrace/contrib/extensions.rb +37 -11
  195. data/lib/ddtrace/contrib/faraday/configuration/settings.rb +1 -0
  196. data/lib/ddtrace/contrib/faraday/connection.rb +1 -0
  197. data/lib/ddtrace/contrib/faraday/ext.rb +1 -0
  198. data/lib/ddtrace/contrib/faraday/integration.rb +1 -0
  199. data/lib/ddtrace/contrib/faraday/middleware.rb +1 -0
  200. data/lib/ddtrace/contrib/faraday/patcher.rb +1 -0
  201. data/lib/ddtrace/contrib/faraday/rack_builder.rb +1 -0
  202. data/lib/ddtrace/contrib/grape/configuration/settings.rb +1 -0
  203. data/lib/ddtrace/contrib/grape/endpoint.rb +26 -16
  204. data/lib/ddtrace/contrib/grape/ext.rb +1 -0
  205. data/lib/ddtrace/contrib/grape/instrumentation.rb +2 -1
  206. data/lib/ddtrace/contrib/grape/integration.rb +1 -0
  207. data/lib/ddtrace/contrib/grape/patcher.rb +1 -0
  208. data/lib/ddtrace/contrib/graphql/configuration/settings.rb +1 -0
  209. data/lib/ddtrace/contrib/graphql/ext.rb +1 -0
  210. data/lib/ddtrace/contrib/graphql/integration.rb +1 -0
  211. data/lib/ddtrace/contrib/graphql/patcher.rb +1 -0
  212. data/lib/ddtrace/contrib/grpc/configuration/settings.rb +2 -0
  213. data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +1 -0
  214. data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +3 -4
  215. data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +5 -0
  216. data/lib/ddtrace/contrib/grpc/ext.rb +1 -0
  217. data/lib/ddtrace/contrib/grpc/integration.rb +1 -0
  218. data/lib/ddtrace/contrib/grpc/intercept_with_datadog.rb +1 -0
  219. data/lib/ddtrace/contrib/grpc/patcher.rb +2 -0
  220. data/lib/ddtrace/contrib/http/circuit_breaker.rb +1 -0
  221. data/lib/ddtrace/contrib/http/configuration/settings.rb +1 -0
  222. data/lib/ddtrace/contrib/http/ext.rb +1 -0
  223. data/lib/ddtrace/contrib/http/instrumentation.rb +1 -0
  224. data/lib/ddtrace/contrib/http/integration.rb +1 -0
  225. data/lib/ddtrace/contrib/http/patcher.rb +1 -0
  226. data/lib/ddtrace/contrib/http_annotation_helper.rb +1 -0
  227. data/lib/ddtrace/contrib/httpclient/configuration/settings.rb +1 -0
  228. data/lib/ddtrace/contrib/httpclient/ext.rb +1 -0
  229. data/lib/ddtrace/contrib/httpclient/instrumentation.rb +1 -0
  230. data/lib/ddtrace/contrib/httpclient/integration.rb +1 -0
  231. data/lib/ddtrace/contrib/httpclient/patcher.rb +2 -1
  232. data/lib/ddtrace/contrib/httprb/configuration/settings.rb +1 -0
  233. data/lib/ddtrace/contrib/httprb/ext.rb +1 -0
  234. data/lib/ddtrace/contrib/httprb/instrumentation.rb +1 -0
  235. data/lib/ddtrace/contrib/httprb/integration.rb +1 -0
  236. data/lib/ddtrace/contrib/httprb/patcher.rb +2 -1
  237. data/lib/ddtrace/contrib/integration.rb +1 -0
  238. data/lib/ddtrace/contrib/kafka/configuration/settings.rb +1 -0
  239. data/lib/ddtrace/contrib/kafka/consumer_event.rb +1 -0
  240. data/lib/ddtrace/contrib/kafka/consumer_group_event.rb +1 -0
  241. data/lib/ddtrace/contrib/kafka/event.rb +1 -0
  242. data/lib/ddtrace/contrib/kafka/events/connection/request.rb +1 -0
  243. data/lib/ddtrace/contrib/kafka/events/consumer/process_batch.rb +1 -0
  244. data/lib/ddtrace/contrib/kafka/events/consumer/process_message.rb +1 -0
  245. data/lib/ddtrace/contrib/kafka/events/consumer_group/heartbeat.rb +1 -0
  246. data/lib/ddtrace/contrib/kafka/events/consumer_group/join_group.rb +1 -0
  247. data/lib/ddtrace/contrib/kafka/events/consumer_group/leave_group.rb +1 -0
  248. data/lib/ddtrace/contrib/kafka/events/consumer_group/sync_group.rb +1 -0
  249. data/lib/ddtrace/contrib/kafka/events/produce_operation/send_messages.rb +1 -0
  250. data/lib/ddtrace/contrib/kafka/events/producer/deliver_messages.rb +1 -0
  251. data/lib/ddtrace/contrib/kafka/events.rb +1 -0
  252. data/lib/ddtrace/contrib/kafka/ext.rb +1 -0
  253. data/lib/ddtrace/contrib/kafka/integration.rb +1 -0
  254. data/lib/ddtrace/contrib/kafka/patcher.rb +1 -0
  255. data/lib/ddtrace/contrib/lograge/configuration/settings.rb +1 -0
  256. data/lib/ddtrace/contrib/lograge/ext.rb +1 -0
  257. data/lib/ddtrace/contrib/lograge/instrumentation.rb +1 -0
  258. data/lib/ddtrace/contrib/lograge/integration.rb +1 -0
  259. data/lib/ddtrace/contrib/lograge/patcher.rb +1 -0
  260. data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +1 -0
  261. data/lib/ddtrace/contrib/mongodb/ext.rb +1 -0
  262. data/lib/ddtrace/contrib/mongodb/instrumentation.rb +2 -1
  263. data/lib/ddtrace/contrib/mongodb/integration.rb +6 -0
  264. data/lib/ddtrace/contrib/mongodb/parsers.rb +1 -0
  265. data/lib/ddtrace/contrib/mongodb/patcher.rb +1 -0
  266. data/lib/ddtrace/contrib/mongodb/subscribers.rb +1 -0
  267. data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +1 -0
  268. data/lib/ddtrace/contrib/mysql2/ext.rb +1 -0
  269. data/lib/ddtrace/contrib/mysql2/instrumentation.rb +1 -0
  270. data/lib/ddtrace/contrib/mysql2/integration.rb +1 -0
  271. data/lib/ddtrace/contrib/mysql2/patcher.rb +1 -0
  272. data/lib/ddtrace/contrib/patchable.rb +1 -0
  273. data/lib/ddtrace/contrib/patcher.rb +2 -1
  274. data/lib/ddtrace/contrib/presto/configuration/settings.rb +1 -0
  275. data/lib/ddtrace/contrib/presto/ext.rb +1 -0
  276. data/lib/ddtrace/contrib/presto/instrumentation.rb +1 -0
  277. data/lib/ddtrace/contrib/presto/integration.rb +1 -0
  278. data/lib/ddtrace/contrib/presto/patcher.rb +1 -0
  279. data/lib/ddtrace/contrib/qless/configuration/settings.rb +1 -0
  280. data/lib/ddtrace/contrib/qless/ext.rb +1 -0
  281. data/lib/ddtrace/contrib/qless/integration.rb +1 -0
  282. data/lib/ddtrace/contrib/qless/patcher.rb +2 -0
  283. data/lib/ddtrace/contrib/qless/qless_job.rb +1 -0
  284. data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +1 -0
  285. data/lib/ddtrace/contrib/que/configuration/settings.rb +1 -0
  286. data/lib/ddtrace/contrib/que/ext.rb +1 -0
  287. data/lib/ddtrace/contrib/que/integration.rb +1 -0
  288. data/lib/ddtrace/contrib/que/patcher.rb +1 -0
  289. data/lib/ddtrace/contrib/que/tracer.rb +1 -0
  290. data/lib/ddtrace/contrib/racecar/configuration/settings.rb +1 -0
  291. data/lib/ddtrace/contrib/racecar/event.rb +1 -0
  292. data/lib/ddtrace/contrib/racecar/events/batch.rb +1 -0
  293. data/lib/ddtrace/contrib/racecar/events/consume.rb +1 -0
  294. data/lib/ddtrace/contrib/racecar/events/message.rb +1 -0
  295. data/lib/ddtrace/contrib/racecar/events.rb +1 -0
  296. data/lib/ddtrace/contrib/racecar/ext.rb +1 -0
  297. data/lib/ddtrace/contrib/racecar/integration.rb +1 -0
  298. data/lib/ddtrace/contrib/racecar/patcher.rb +1 -0
  299. data/lib/ddtrace/contrib/rack/configuration/settings.rb +1 -0
  300. data/lib/ddtrace/contrib/rack/ext.rb +1 -0
  301. data/lib/ddtrace/contrib/rack/integration.rb +1 -0
  302. data/lib/ddtrace/contrib/rack/middlewares.rb +1 -0
  303. data/lib/ddtrace/contrib/rack/patcher.rb +1 -0
  304. data/lib/ddtrace/contrib/rack/request_queue.rb +1 -0
  305. data/lib/ddtrace/contrib/rails/auto_instrument_railtie.rb +1 -1
  306. data/lib/ddtrace/contrib/rails/configuration/settings.rb +8 -0
  307. data/lib/ddtrace/contrib/rails/ext.rb +1 -0
  308. data/lib/ddtrace/contrib/rails/framework.rb +25 -1
  309. data/lib/ddtrace/contrib/rails/integration.rb +1 -0
  310. data/lib/ddtrace/contrib/rails/log_injection.rb +1 -0
  311. data/lib/ddtrace/contrib/rails/middlewares.rb +1 -0
  312. data/lib/ddtrace/contrib/rails/patcher.rb +19 -9
  313. data/lib/ddtrace/contrib/rails/railtie.rb +1 -0
  314. data/lib/ddtrace/contrib/rails/utils.rb +1 -0
  315. data/lib/ddtrace/contrib/rake/configuration/settings.rb +1 -0
  316. data/lib/ddtrace/contrib/rake/ext.rb +1 -0
  317. data/lib/ddtrace/contrib/rake/instrumentation.rb +1 -0
  318. data/lib/ddtrace/contrib/rake/integration.rb +1 -0
  319. data/lib/ddtrace/contrib/rake/patcher.rb +1 -0
  320. data/lib/ddtrace/contrib/redis/configuration/resolver.rb +1 -0
  321. data/lib/ddtrace/contrib/redis/configuration/settings.rb +1 -0
  322. data/lib/ddtrace/contrib/redis/ext.rb +1 -0
  323. data/lib/ddtrace/contrib/redis/instrumentation.rb +90 -0
  324. data/lib/ddtrace/contrib/redis/integration.rb +1 -0
  325. data/lib/ddtrace/contrib/redis/patcher.rb +3 -84
  326. data/lib/ddtrace/contrib/redis/quantize.rb +1 -0
  327. data/lib/ddtrace/contrib/redis/tags.rb +1 -0
  328. data/lib/ddtrace/contrib/redis/vendor/resolver.rb +1 -0
  329. data/lib/ddtrace/contrib/registerable.rb +2 -2
  330. data/lib/ddtrace/contrib/registry.rb +1 -0
  331. data/lib/ddtrace/contrib/resque/configuration/settings.rb +1 -0
  332. data/lib/ddtrace/contrib/resque/ext.rb +1 -0
  333. data/lib/ddtrace/contrib/resque/integration.rb +2 -5
  334. data/lib/ddtrace/contrib/resque/patcher.rb +1 -0
  335. data/lib/ddtrace/contrib/resque/resque_job.rb +1 -0
  336. data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +1 -0
  337. data/lib/ddtrace/contrib/rest_client/ext.rb +1 -0
  338. data/lib/ddtrace/contrib/rest_client/integration.rb +1 -0
  339. data/lib/ddtrace/contrib/rest_client/patcher.rb +2 -0
  340. data/lib/ddtrace/contrib/rest_client/request_patch.rb +1 -0
  341. data/lib/ddtrace/contrib/semantic_logger/configuration/settings.rb +1 -0
  342. data/lib/ddtrace/contrib/semantic_logger/ext.rb +1 -0
  343. data/lib/ddtrace/contrib/semantic_logger/instrumentation.rb +1 -0
  344. data/lib/ddtrace/contrib/semantic_logger/integration.rb +1 -0
  345. data/lib/ddtrace/contrib/semantic_logger/patcher.rb +1 -0
  346. data/lib/ddtrace/contrib/sequel/configuration/settings.rb +1 -0
  347. data/lib/ddtrace/contrib/sequel/database.rb +1 -0
  348. data/lib/ddtrace/contrib/sequel/dataset.rb +1 -0
  349. data/lib/ddtrace/contrib/sequel/ext.rb +1 -0
  350. data/lib/ddtrace/contrib/sequel/integration.rb +1 -0
  351. data/lib/ddtrace/contrib/sequel/patcher.rb +1 -0
  352. data/lib/ddtrace/contrib/sequel/utils.rb +1 -0
  353. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +1 -0
  354. data/lib/ddtrace/contrib/shoryuken/ext.rb +1 -0
  355. data/lib/ddtrace/contrib/shoryuken/integration.rb +1 -0
  356. data/lib/ddtrace/contrib/shoryuken/patcher.rb +1 -0
  357. data/lib/ddtrace/contrib/shoryuken/tracer.rb +1 -0
  358. data/lib/ddtrace/contrib/sidekiq/client_tracer.rb +1 -0
  359. data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +1 -0
  360. data/lib/ddtrace/contrib/sidekiq/ext.rb +4 -0
  361. data/lib/ddtrace/contrib/sidekiq/integration.rb +11 -0
  362. data/lib/ddtrace/contrib/sidekiq/patcher.rb +27 -0
  363. data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/heartbeat.rb +30 -0
  364. data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/job_fetch.rb +30 -0
  365. data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/scheduled_push.rb +29 -0
  366. data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +1 -0
  367. data/lib/ddtrace/contrib/sidekiq/tracing.rb +1 -0
  368. data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +1 -0
  369. data/lib/ddtrace/contrib/sinatra/env.rb +3 -1
  370. data/lib/ddtrace/contrib/sinatra/ext.rb +1 -0
  371. data/lib/ddtrace/contrib/sinatra/headers.rb +1 -0
  372. data/lib/ddtrace/contrib/sinatra/integration.rb +1 -0
  373. data/lib/ddtrace/contrib/sinatra/patcher.rb +2 -0
  374. data/lib/ddtrace/contrib/sinatra/tracer.rb +27 -4
  375. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +8 -1
  376. data/lib/ddtrace/contrib/sneakers/configuration/settings.rb +1 -0
  377. data/lib/ddtrace/contrib/sneakers/ext.rb +1 -0
  378. data/lib/ddtrace/contrib/sneakers/integration.rb +1 -0
  379. data/lib/ddtrace/contrib/sneakers/patcher.rb +1 -0
  380. data/lib/ddtrace/contrib/sneakers/tracer.rb +1 -0
  381. data/lib/ddtrace/contrib/status_code_matcher.rb +1 -0
  382. data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +1 -0
  383. data/lib/ddtrace/contrib/sucker_punch/exception_handler.rb +1 -0
  384. data/lib/ddtrace/contrib/sucker_punch/ext.rb +1 -0
  385. data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +1 -0
  386. data/lib/ddtrace/contrib/sucker_punch/integration.rb +1 -0
  387. data/lib/ddtrace/contrib/sucker_punch/patcher.rb +2 -0
  388. data/lib/ddtrace/correlation.rb +1 -0
  389. data/lib/ddtrace/diagnostics/environment_logger.rb +2 -1
  390. data/lib/ddtrace/diagnostics/health.rb +1 -0
  391. data/lib/ddtrace/distributed_tracing/headers/b3.rb +1 -0
  392. data/lib/ddtrace/distributed_tracing/headers/b3_single.rb +1 -0
  393. data/lib/ddtrace/distributed_tracing/headers/datadog.rb +1 -0
  394. data/lib/ddtrace/distributed_tracing/headers/headers.rb +1 -0
  395. data/lib/ddtrace/distributed_tracing/headers/helpers.rb +1 -0
  396. data/lib/ddtrace/encoding.rb +3 -0
  397. data/lib/ddtrace/error.rb +1 -0
  398. data/lib/ddtrace/event.rb +1 -0
  399. data/lib/ddtrace/ext/analytics.rb +1 -0
  400. data/lib/ddtrace/ext/app_types.rb +1 -0
  401. data/lib/ddtrace/ext/correlation.rb +1 -0
  402. data/lib/ddtrace/ext/diagnostics.rb +1 -0
  403. data/lib/ddtrace/ext/distributed.rb +1 -0
  404. data/lib/ddtrace/ext/environment.rb +1 -0
  405. data/lib/ddtrace/ext/errors.rb +1 -0
  406. data/lib/ddtrace/ext/forced_tracing.rb +1 -0
  407. data/lib/ddtrace/ext/git.rb +13 -0
  408. data/lib/ddtrace/ext/http.rb +1 -0
  409. data/lib/ddtrace/ext/integration.rb +1 -0
  410. data/lib/ddtrace/ext/manual_tracing.rb +1 -0
  411. data/lib/ddtrace/ext/metrics.rb +1 -0
  412. data/lib/ddtrace/ext/net.rb +1 -0
  413. data/lib/ddtrace/ext/priority.rb +7 -4
  414. data/lib/ddtrace/ext/profiling.rb +11 -11
  415. data/lib/ddtrace/ext/runtime.rb +4 -0
  416. data/lib/ddtrace/ext/sampling.rb +1 -0
  417. data/lib/ddtrace/ext/sql.rb +1 -0
  418. data/lib/ddtrace/ext/test.rb +1 -0
  419. data/lib/ddtrace/ext/transport.rb +12 -0
  420. data/lib/ddtrace/forced_tracing.rb +1 -0
  421. data/lib/ddtrace/logger.rb +1 -0
  422. data/lib/ddtrace/metrics.rb +8 -7
  423. data/lib/ddtrace/opentelemetry/extensions.rb +1 -0
  424. data/lib/ddtrace/opentelemetry/span.rb +1 -0
  425. data/lib/ddtrace/opentracer/binary_propagator.rb +1 -0
  426. data/lib/ddtrace/opentracer/carrier.rb +1 -0
  427. data/lib/ddtrace/opentracer/distributed_headers.rb +1 -0
  428. data/lib/ddtrace/opentracer/global_tracer.rb +1 -0
  429. data/lib/ddtrace/opentracer/propagator.rb +1 -0
  430. data/lib/ddtrace/opentracer/rack_propagator.rb +1 -0
  431. data/lib/ddtrace/opentracer/scope.rb +1 -0
  432. data/lib/ddtrace/opentracer/scope_manager.rb +1 -0
  433. data/lib/ddtrace/opentracer/span.rb +1 -0
  434. data/lib/ddtrace/opentracer/span_context.rb +1 -0
  435. data/lib/ddtrace/opentracer/span_context_factory.rb +1 -0
  436. data/lib/ddtrace/opentracer/text_map_propagator.rb +1 -0
  437. data/lib/ddtrace/opentracer/thread_local_scope.rb +1 -0
  438. data/lib/ddtrace/opentracer/thread_local_scope_manager.rb +1 -0
  439. data/lib/ddtrace/opentracer/tracer.rb +1 -0
  440. data/lib/ddtrace/opentracer.rb +1 -0
  441. data/lib/ddtrace/patcher.rb +1 -0
  442. data/lib/ddtrace/pin.rb +1 -0
  443. data/lib/ddtrace/pipeline/span_filter.rb +1 -0
  444. data/lib/ddtrace/pipeline/span_processor.rb +1 -0
  445. data/lib/ddtrace/pipeline.rb +1 -0
  446. data/lib/ddtrace/profiling/backtrace_location.rb +1 -0
  447. data/lib/ddtrace/profiling/buffer.rb +1 -0
  448. data/lib/ddtrace/profiling/collectors/stack.rb +118 -83
  449. data/lib/ddtrace/profiling/encoding/profile.rb +11 -2
  450. data/lib/ddtrace/profiling/event.rb +1 -0
  451. data/lib/ddtrace/profiling/events/stack.rb +21 -42
  452. data/lib/ddtrace/profiling/exporter.rb +1 -0
  453. data/lib/ddtrace/profiling/ext/forking.rb +1 -0
  454. data/lib/ddtrace/profiling/flush.rb +1 -0
  455. data/lib/ddtrace/profiling/native_extension.rb +40 -0
  456. data/lib/ddtrace/profiling/pprof/builder.rb +9 -2
  457. data/lib/ddtrace/profiling/pprof/converter.rb +23 -9
  458. data/lib/ddtrace/profiling/pprof/message_set.rb +4 -1
  459. data/lib/ddtrace/profiling/pprof/payload.rb +2 -1
  460. data/lib/ddtrace/profiling/pprof/pprof_pb.rb +1 -0
  461. data/lib/ddtrace/profiling/pprof/stack_sample.rb +44 -10
  462. data/lib/ddtrace/profiling/pprof/string_table.rb +1 -0
  463. data/lib/ddtrace/profiling/pprof/template.rb +3 -2
  464. data/lib/ddtrace/profiling/preload.rb +1 -0
  465. data/lib/ddtrace/profiling/profiler.rb +1 -0
  466. data/lib/ddtrace/profiling/recorder.rb +3 -2
  467. data/lib/ddtrace/profiling/scheduler.rb +41 -7
  468. data/lib/ddtrace/profiling/tasks/setup.rb +29 -16
  469. data/lib/ddtrace/profiling/trace_identifiers/ddtrace.rb +42 -0
  470. data/lib/ddtrace/profiling/trace_identifiers/helper.rb +46 -0
  471. data/lib/ddtrace/profiling/transport/client.rb +3 -0
  472. data/lib/ddtrace/profiling/transport/http/api/endpoint.rb +9 -15
  473. data/lib/ddtrace/profiling/transport/http/api/instance.rb +1 -0
  474. data/lib/ddtrace/profiling/transport/http/api/spec.rb +1 -0
  475. data/lib/ddtrace/profiling/transport/http/api.rb +1 -0
  476. data/lib/ddtrace/profiling/transport/http/builder.rb +1 -0
  477. data/lib/ddtrace/profiling/transport/http/client.rb +1 -0
  478. data/lib/ddtrace/profiling/transport/http/response.rb +1 -0
  479. data/lib/ddtrace/profiling/transport/http.rb +26 -33
  480. data/lib/ddtrace/profiling/transport/io/client.rb +1 -0
  481. data/lib/ddtrace/profiling/transport/io/response.rb +1 -0
  482. data/lib/ddtrace/profiling/transport/io.rb +1 -0
  483. data/lib/ddtrace/profiling/transport/parcel.rb +1 -0
  484. data/lib/ddtrace/profiling/transport/request.rb +1 -0
  485. data/lib/ddtrace/profiling/transport/response.rb +1 -0
  486. data/lib/ddtrace/profiling.rb +64 -22
  487. data/lib/ddtrace/propagation/grpc_propagator.rb +1 -0
  488. data/lib/ddtrace/propagation/http_propagator.rb +3 -2
  489. data/lib/ddtrace/quantization/hash.rb +1 -0
  490. data/lib/ddtrace/quantization/http.rb +3 -0
  491. data/lib/ddtrace/runtime/metrics.rb +15 -0
  492. data/lib/ddtrace/sampler.rb +19 -8
  493. data/lib/ddtrace/sampling/matcher.rb +1 -0
  494. data/lib/ddtrace/sampling/rate_limiter.rb +1 -0
  495. data/lib/ddtrace/sampling/rule.rb +2 -1
  496. data/lib/ddtrace/sampling/rule_sampler.rb +15 -2
  497. data/lib/ddtrace/sampling.rb +1 -0
  498. data/lib/ddtrace/span.rb +4 -2
  499. data/lib/ddtrace/sync_writer.rb +1 -0
  500. data/lib/ddtrace/tasks/exec.rb +4 -5
  501. data/lib/ddtrace/tasks/help.rb +1 -0
  502. data/lib/ddtrace/tracer.rb +3 -3
  503. data/lib/ddtrace/transport/http/adapters/net.rb +14 -3
  504. data/lib/ddtrace/transport/http/adapters/registry.rb +1 -0
  505. data/lib/ddtrace/transport/http/adapters/test.rb +5 -2
  506. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +24 -12
  507. data/lib/ddtrace/transport/http/api/endpoint.rb +1 -0
  508. data/lib/ddtrace/transport/http/api/fallbacks.rb +1 -0
  509. data/lib/ddtrace/transport/http/api/instance.rb +1 -0
  510. data/lib/ddtrace/transport/http/api/map.rb +1 -0
  511. data/lib/ddtrace/transport/http/api/spec.rb +1 -0
  512. data/lib/ddtrace/transport/http/api.rb +1 -0
  513. data/lib/ddtrace/transport/http/builder.rb +14 -6
  514. data/lib/ddtrace/transport/http/client.rb +3 -1
  515. data/lib/ddtrace/transport/http/env.rb +1 -0
  516. data/lib/ddtrace/transport/http/response.rb +1 -0
  517. data/lib/ddtrace/transport/http/statistics.rb +1 -0
  518. data/lib/ddtrace/transport/http/traces.rb +1 -0
  519. data/lib/ddtrace/transport/http.rb +8 -11
  520. data/lib/ddtrace/transport/io/client.rb +2 -1
  521. data/lib/ddtrace/transport/io/response.rb +1 -0
  522. data/lib/ddtrace/transport/io/traces.rb +3 -0
  523. data/lib/ddtrace/transport/io.rb +1 -0
  524. data/lib/ddtrace/transport/parcel.rb +3 -0
  525. data/lib/ddtrace/transport/request.rb +1 -0
  526. data/lib/ddtrace/transport/response.rb +1 -0
  527. data/lib/ddtrace/transport/statistics.rb +1 -0
  528. data/lib/ddtrace/transport/traces.rb +3 -2
  529. data/lib/ddtrace/utils/compression.rb +1 -0
  530. data/lib/ddtrace/utils/database.rb +1 -0
  531. data/lib/ddtrace/utils/forking.rb +1 -0
  532. data/lib/ddtrace/utils/object_set.rb +1 -0
  533. data/lib/ddtrace/utils/only_once.rb +1 -0
  534. data/lib/ddtrace/utils/sequence.rb +1 -0
  535. data/lib/ddtrace/utils/string_table.rb +1 -0
  536. data/lib/ddtrace/utils/time.rb +14 -6
  537. data/lib/ddtrace/utils.rb +14 -2
  538. data/lib/ddtrace/vendor/active_record/connection_specification.rb +1 -0
  539. data/lib/ddtrace/vendor/multipart-post/multipart/post/composite_read_io.rb +1 -0
  540. data/lib/ddtrace/vendor/multipart-post/multipart/post/multipartable.rb +1 -0
  541. data/lib/ddtrace/vendor/multipart-post/multipart/post/parts.rb +1 -0
  542. data/lib/ddtrace/vendor/multipart-post/multipart/post/version.rb +1 -0
  543. data/lib/ddtrace/vendor/multipart-post/multipart/post.rb +1 -0
  544. data/lib/ddtrace/vendor/multipart-post/multipart.rb +1 -0
  545. data/lib/ddtrace/vendor/multipart-post/net/http/post/multipart.rb +1 -0
  546. data/lib/ddtrace/version.rb +3 -2
  547. data/lib/ddtrace/worker.rb +1 -0
  548. data/lib/ddtrace/workers/async.rb +2 -1
  549. data/lib/ddtrace/workers/{loop.rb → interval_loop.rb} +1 -16
  550. data/lib/ddtrace/workers/polling.rb +2 -1
  551. data/lib/ddtrace/workers/queue.rb +1 -0
  552. data/lib/ddtrace/workers/runtime_metrics.rb +1 -0
  553. data/lib/ddtrace/workers/trace_writer.rb +2 -1
  554. data/lib/ddtrace/workers.rb +2 -1
  555. data/lib/ddtrace/writer.rb +1 -0
  556. data/lib/ddtrace.rb +19 -51
  557. metadata +49 -606
  558. data/.circleci/config.yml +0 -869
  559. data/.circleci/images/primary/Dockerfile-2.1.10 +0 -83
  560. data/.circleci/images/primary/Dockerfile-2.2.10 +0 -83
  561. data/.circleci/images/primary/Dockerfile-2.3.8 +0 -87
  562. data/.circleci/images/primary/Dockerfile-2.4.10 +0 -85
  563. data/.circleci/images/primary/Dockerfile-2.5.9 +0 -83
  564. data/.circleci/images/primary/Dockerfile-2.6.7 +0 -83
  565. data/.circleci/images/primary/Dockerfile-2.7.3 +0 -83
  566. data/.circleci/images/primary/Dockerfile-3.0.1 +0 -73
  567. data/.circleci/images/primary/Dockerfile-jruby-9.2-latest +0 -88
  568. data/.circleci/images/primary/Dockerfile-jruby-9.2.0.0 +0 -73
  569. data/.circleci/images/primary/Dockerfile-truffleruby-21.1.0 +0 -73
  570. data/.dd-ci/ci-app-spec.json +0 -31
  571. data/.dockerignore +0 -0
  572. data/.env +0 -26
  573. data/.gitattributes +0 -1
  574. data/.github/CODEOWNERS +0 -1
  575. data/.github/workflows/add-milestone-to-pull-requests.yml +0 -42
  576. data/.github/workflows/create-next-milestone.yml +0 -20
  577. data/.github/workflows/test-head.yaml +0 -34
  578. data/.gitlab-ci.yml +0 -27
  579. data/.rspec +0 -1
  580. data/.rubocop.yml +0 -351
  581. data/.rubocop_todo.yml +0 -437
  582. data/.simplecov +0 -47
  583. data/Appraisals +0 -1443
  584. data/Gemfile +0 -72
  585. data/Rakefile +0 -982
  586. data/benchmarks/data/profiler-submission-marshal.gz +0 -0
  587. data/benchmarks/postgres_database.yml +0 -9
  588. data/benchmarks/profiler_sample_loop.rb +0 -69
  589. data/benchmarks/profiler_submission.rb +0 -93
  590. data/benchmarks/sidekiq_test.rb +0 -154
  591. data/docker-compose.yml +0 -414
  592. data/gemfiles/jruby_9.2.0.0_contrib.gemfile +0 -82
  593. data/gemfiles/jruby_9.2.0.0_contrib.gemfile.lock +0 -1571
  594. data/gemfiles/jruby_9.2.0.0_contrib_old.gemfile +0 -36
  595. data/gemfiles/jruby_9.2.0.0_contrib_old.gemfile.lock +0 -159
  596. data/gemfiles/jruby_9.2.0.0_core_old.gemfile +0 -35
  597. data/gemfiles/jruby_9.2.0.0_core_old.gemfile.lock +0 -155
  598. data/gemfiles/jruby_9.2.0.0_cucumber3.gemfile +0 -36
  599. data/gemfiles/jruby_9.2.0.0_cucumber3.gemfile.lock +0 -176
  600. data/gemfiles/jruby_9.2.0.0_cucumber4.gemfile +0 -36
  601. data/gemfiles/jruby_9.2.0.0_cucumber4.gemfile.lock +0 -208
  602. data/gemfiles/jruby_9.2.0.0_cucumber5.gemfile +0 -36
  603. data/gemfiles/jruby_9.2.0.0_cucumber5.gemfile.lock +0 -208
  604. data/gemfiles/jruby_9.2.0.0_rails5_mysql2.gemfile +0 -41
  605. data/gemfiles/jruby_9.2.0.0_rails5_mysql2.gemfile.lock +0 -273
  606. data/gemfiles/jruby_9.2.0.0_rails5_postgres.gemfile +0 -41
  607. data/gemfiles/jruby_9.2.0.0_rails5_postgres.gemfile.lock +0 -273
  608. data/gemfiles/jruby_9.2.0.0_rails5_postgres_redis.gemfile +0 -42
  609. data/gemfiles/jruby_9.2.0.0_rails5_postgres_redis.gemfile.lock +0 -275
  610. data/gemfiles/jruby_9.2.0.0_rails5_postgres_redis_activesupport.gemfile +0 -42
  611. data/gemfiles/jruby_9.2.0.0_rails5_postgres_redis_activesupport.gemfile.lock +0 -275
  612. data/gemfiles/jruby_9.2.0.0_rails5_postgres_sidekiq.gemfile +0 -43
  613. data/gemfiles/jruby_9.2.0.0_rails5_postgres_sidekiq.gemfile.lock +0 -281
  614. data/gemfiles/jruby_9.2.0.0_rails5_semantic_logger.gemfile +0 -41
  615. data/gemfiles/jruby_9.2.0.0_rails5_semantic_logger.gemfile.lock +0 -272
  616. data/gemfiles/jruby_9.2.0.0_rails61_mysql2.gemfile +0 -41
  617. data/gemfiles/jruby_9.2.0.0_rails61_mysql2.gemfile.lock +0 -292
  618. data/gemfiles/jruby_9.2.0.0_rails61_postgres.gemfile +0 -41
  619. data/gemfiles/jruby_9.2.0.0_rails61_postgres.gemfile.lock +0 -292
  620. data/gemfiles/jruby_9.2.0.0_rails61_postgres_redis.gemfile +0 -42
  621. data/gemfiles/jruby_9.2.0.0_rails61_postgres_redis.gemfile.lock +0 -294
  622. data/gemfiles/jruby_9.2.0.0_rails61_postgres_sidekiq.gemfile +0 -42
  623. data/gemfiles/jruby_9.2.0.0_rails61_postgres_sidekiq.gemfile.lock +0 -299
  624. data/gemfiles/jruby_9.2.0.0_rails61_semantic_logger.gemfile +0 -41
  625. data/gemfiles/jruby_9.2.0.0_rails61_semantic_logger.gemfile.lock +0 -291
  626. data/gemfiles/jruby_9.2.0.0_rails6_mysql2.gemfile +0 -41
  627. data/gemfiles/jruby_9.2.0.0_rails6_mysql2.gemfile.lock +0 -289
  628. data/gemfiles/jruby_9.2.0.0_rails6_postgres.gemfile +0 -41
  629. data/gemfiles/jruby_9.2.0.0_rails6_postgres.gemfile.lock +0 -289
  630. data/gemfiles/jruby_9.2.0.0_rails6_postgres_redis.gemfile +0 -42
  631. data/gemfiles/jruby_9.2.0.0_rails6_postgres_redis.gemfile.lock +0 -291
  632. data/gemfiles/jruby_9.2.0.0_rails6_postgres_redis_activesupport.gemfile +0 -42
  633. data/gemfiles/jruby_9.2.0.0_rails6_postgres_redis_activesupport.gemfile.lock +0 -291
  634. data/gemfiles/jruby_9.2.0.0_rails6_postgres_sidekiq.gemfile +0 -43
  635. data/gemfiles/jruby_9.2.0.0_rails6_postgres_sidekiq.gemfile.lock +0 -297
  636. data/gemfiles/jruby_9.2.0.0_rails6_semantic_logger.gemfile +0 -41
  637. data/gemfiles/jruby_9.2.0.0_rails6_semantic_logger.gemfile.lock +0 -288
  638. data/gemfiles/jruby_9.2.0.0_resque2_redis3.gemfile +0 -37
  639. data/gemfiles/jruby_9.2.0.0_resque2_redis3.gemfile.lock +0 -182
  640. data/gemfiles/jruby_9.2.0.0_resque2_redis4.gemfile +0 -37
  641. data/gemfiles/jruby_9.2.0.0_resque2_redis4.gemfile.lock +0 -182
  642. data/gemfiles/jruby_9.2.18.0_contrib.gemfile +0 -82
  643. data/gemfiles/jruby_9.2.18.0_contrib.gemfile.lock +0 -1571
  644. data/gemfiles/jruby_9.2.18.0_contrib_old.gemfile +0 -36
  645. data/gemfiles/jruby_9.2.18.0_contrib_old.gemfile.lock +0 -159
  646. data/gemfiles/jruby_9.2.18.0_core_old.gemfile +0 -35
  647. data/gemfiles/jruby_9.2.18.0_core_old.gemfile.lock +0 -155
  648. data/gemfiles/jruby_9.2.18.0_cucumber3.gemfile +0 -36
  649. data/gemfiles/jruby_9.2.18.0_cucumber3.gemfile.lock +0 -176
  650. data/gemfiles/jruby_9.2.18.0_cucumber4.gemfile +0 -36
  651. data/gemfiles/jruby_9.2.18.0_cucumber4.gemfile.lock +0 -208
  652. data/gemfiles/jruby_9.2.18.0_cucumber5.gemfile +0 -36
  653. data/gemfiles/jruby_9.2.18.0_cucumber5.gemfile.lock +0 -208
  654. data/gemfiles/jruby_9.2.18.0_rails5_mysql2.gemfile +0 -41
  655. data/gemfiles/jruby_9.2.18.0_rails5_mysql2.gemfile.lock +0 -273
  656. data/gemfiles/jruby_9.2.18.0_rails5_postgres.gemfile +0 -41
  657. data/gemfiles/jruby_9.2.18.0_rails5_postgres.gemfile.lock +0 -273
  658. data/gemfiles/jruby_9.2.18.0_rails5_postgres_redis.gemfile +0 -42
  659. data/gemfiles/jruby_9.2.18.0_rails5_postgres_redis.gemfile.lock +0 -275
  660. data/gemfiles/jruby_9.2.18.0_rails5_postgres_redis_activesupport.gemfile +0 -42
  661. data/gemfiles/jruby_9.2.18.0_rails5_postgres_redis_activesupport.gemfile.lock +0 -275
  662. data/gemfiles/jruby_9.2.18.0_rails5_postgres_sidekiq.gemfile +0 -43
  663. data/gemfiles/jruby_9.2.18.0_rails5_postgres_sidekiq.gemfile.lock +0 -281
  664. data/gemfiles/jruby_9.2.18.0_rails5_semantic_logger.gemfile +0 -41
  665. data/gemfiles/jruby_9.2.18.0_rails5_semantic_logger.gemfile.lock +0 -272
  666. data/gemfiles/jruby_9.2.18.0_rails61_mysql2.gemfile +0 -41
  667. data/gemfiles/jruby_9.2.18.0_rails61_mysql2.gemfile.lock +0 -292
  668. data/gemfiles/jruby_9.2.18.0_rails61_postgres.gemfile +0 -41
  669. data/gemfiles/jruby_9.2.18.0_rails61_postgres.gemfile.lock +0 -292
  670. data/gemfiles/jruby_9.2.18.0_rails61_postgres_redis.gemfile +0 -42
  671. data/gemfiles/jruby_9.2.18.0_rails61_postgres_redis.gemfile.lock +0 -294
  672. data/gemfiles/jruby_9.2.18.0_rails61_postgres_sidekiq.gemfile +0 -42
  673. data/gemfiles/jruby_9.2.18.0_rails61_postgres_sidekiq.gemfile.lock +0 -299
  674. data/gemfiles/jruby_9.2.18.0_rails61_semantic_logger.gemfile +0 -41
  675. data/gemfiles/jruby_9.2.18.0_rails61_semantic_logger.gemfile.lock +0 -291
  676. data/gemfiles/jruby_9.2.18.0_rails6_mysql2.gemfile +0 -41
  677. data/gemfiles/jruby_9.2.18.0_rails6_mysql2.gemfile.lock +0 -289
  678. data/gemfiles/jruby_9.2.18.0_rails6_postgres.gemfile +0 -41
  679. data/gemfiles/jruby_9.2.18.0_rails6_postgres.gemfile.lock +0 -289
  680. data/gemfiles/jruby_9.2.18.0_rails6_postgres_redis.gemfile +0 -42
  681. data/gemfiles/jruby_9.2.18.0_rails6_postgres_redis.gemfile.lock +0 -291
  682. data/gemfiles/jruby_9.2.18.0_rails6_postgres_redis_activesupport.gemfile +0 -42
  683. data/gemfiles/jruby_9.2.18.0_rails6_postgres_redis_activesupport.gemfile.lock +0 -291
  684. data/gemfiles/jruby_9.2.18.0_rails6_postgres_sidekiq.gemfile +0 -43
  685. data/gemfiles/jruby_9.2.18.0_rails6_postgres_sidekiq.gemfile.lock +0 -297
  686. data/gemfiles/jruby_9.2.18.0_rails6_semantic_logger.gemfile +0 -41
  687. data/gemfiles/jruby_9.2.18.0_rails6_semantic_logger.gemfile.lock +0 -288
  688. data/gemfiles/jruby_9.2.18.0_resque2_redis3.gemfile +0 -37
  689. data/gemfiles/jruby_9.2.18.0_resque2_redis3.gemfile.lock +0 -182
  690. data/gemfiles/jruby_9.2.18.0_resque2_redis4.gemfile +0 -37
  691. data/gemfiles/jruby_9.2.18.0_resque2_redis4.gemfile.lock +0 -182
  692. data/gemfiles/ruby_2.1.10_contrib_old.gemfile +0 -68
  693. data/gemfiles/ruby_2.1.10_contrib_old.gemfile.lock +0 -310
  694. data/gemfiles/ruby_2.1.10_core_old.gemfile +0 -34
  695. data/gemfiles/ruby_2.1.10_core_old.gemfile.lock +0 -120
  696. data/gemfiles/ruby_2.1.10_rails30_postgres.gemfile +0 -39
  697. data/gemfiles/ruby_2.1.10_rails30_postgres.gemfile.lock +0 -193
  698. data/gemfiles/ruby_2.1.10_rails30_postgres_sidekiq.gemfile +0 -40
  699. data/gemfiles/ruby_2.1.10_rails30_postgres_sidekiq.gemfile.lock +0 -202
  700. data/gemfiles/ruby_2.1.10_rails32_mysql2.gemfile +0 -42
  701. data/gemfiles/ruby_2.1.10_rails32_mysql2.gemfile.lock +0 -212
  702. data/gemfiles/ruby_2.1.10_rails32_postgres.gemfile +0 -39
  703. data/gemfiles/ruby_2.1.10_rails32_postgres.gemfile.lock +0 -201
  704. data/gemfiles/ruby_2.1.10_rails32_postgres_redis.gemfile +0 -41
  705. data/gemfiles/ruby_2.1.10_rails32_postgres_redis.gemfile.lock +0 -220
  706. data/gemfiles/ruby_2.1.10_rails32_postgres_sidekiq.gemfile +0 -40
  707. data/gemfiles/ruby_2.1.10_rails32_postgres_sidekiq.gemfile.lock +0 -210
  708. data/gemfiles/ruby_2.1.10_rails4_mysql2.gemfile +0 -39
  709. data/gemfiles/ruby_2.1.10_rails4_mysql2.gemfile.lock +0 -220
  710. data/gemfiles/ruby_2.1.10_rails4_postgres.gemfile +0 -39
  711. data/gemfiles/ruby_2.1.10_rails4_postgres.gemfile.lock +0 -220
  712. data/gemfiles/ruby_2.1.10_rails4_postgres_redis.gemfile +0 -41
  713. data/gemfiles/ruby_2.1.10_rails4_postgres_redis.gemfile.lock +0 -239
  714. data/gemfiles/ruby_2.1.10_rails4_semantic_logger.gemfile +0 -39
  715. data/gemfiles/ruby_2.1.10_rails4_semantic_logger.gemfile.lock +0 -218
  716. data/gemfiles/ruby_2.2.10_contrib.gemfile +0 -76
  717. data/gemfiles/ruby_2.2.10_contrib.gemfile.lock +0 -1499
  718. data/gemfiles/ruby_2.2.10_core_old.gemfile +0 -34
  719. data/gemfiles/ruby_2.2.10_core_old.gemfile.lock +0 -120
  720. data/gemfiles/ruby_2.2.10_rails30_postgres.gemfile +0 -39
  721. data/gemfiles/ruby_2.2.10_rails30_postgres.gemfile.lock +0 -193
  722. data/gemfiles/ruby_2.2.10_rails30_postgres_sidekiq.gemfile +0 -40
  723. data/gemfiles/ruby_2.2.10_rails30_postgres_sidekiq.gemfile.lock +0 -202
  724. data/gemfiles/ruby_2.2.10_rails32_mysql2.gemfile +0 -41
  725. data/gemfiles/ruby_2.2.10_rails32_mysql2.gemfile.lock +0 -209
  726. data/gemfiles/ruby_2.2.10_rails32_postgres.gemfile +0 -39
  727. data/gemfiles/ruby_2.2.10_rails32_postgres.gemfile.lock +0 -201
  728. data/gemfiles/ruby_2.2.10_rails32_postgres_redis.gemfile +0 -41
  729. data/gemfiles/ruby_2.2.10_rails32_postgres_redis.gemfile.lock +0 -220
  730. data/gemfiles/ruby_2.2.10_rails32_postgres_sidekiq.gemfile +0 -40
  731. data/gemfiles/ruby_2.2.10_rails32_postgres_sidekiq.gemfile.lock +0 -210
  732. data/gemfiles/ruby_2.2.10_rails4_mysql2.gemfile +0 -39
  733. data/gemfiles/ruby_2.2.10_rails4_mysql2.gemfile.lock +0 -220
  734. data/gemfiles/ruby_2.2.10_rails4_postgres.gemfile +0 -39
  735. data/gemfiles/ruby_2.2.10_rails4_postgres.gemfile.lock +0 -220
  736. data/gemfiles/ruby_2.2.10_rails4_postgres_redis.gemfile +0 -41
  737. data/gemfiles/ruby_2.2.10_rails4_postgres_redis.gemfile.lock +0 -239
  738. data/gemfiles/ruby_2.2.10_rails4_postgres_sidekiq.gemfile +0 -41
  739. data/gemfiles/ruby_2.2.10_rails4_postgres_sidekiq.gemfile.lock +0 -231
  740. data/gemfiles/ruby_2.2.10_rails4_semantic_logger.gemfile +0 -39
  741. data/gemfiles/ruby_2.2.10_rails4_semantic_logger.gemfile.lock +0 -218
  742. data/gemfiles/ruby_2.2.10_rails5_mysql2.gemfile +0 -39
  743. data/gemfiles/ruby_2.2.10_rails5_mysql2.gemfile.lock +0 -236
  744. data/gemfiles/ruby_2.2.10_rails5_postgres.gemfile +0 -39
  745. data/gemfiles/ruby_2.2.10_rails5_postgres.gemfile.lock +0 -236
  746. data/gemfiles/ruby_2.2.10_rails5_postgres_redis.gemfile +0 -40
  747. data/gemfiles/ruby_2.2.10_rails5_postgres_redis.gemfile.lock +0 -238
  748. data/gemfiles/ruby_2.2.10_rails5_postgres_redis_activesupport.gemfile +0 -40
  749. data/gemfiles/ruby_2.2.10_rails5_postgres_redis_activesupport.gemfile.lock +0 -238
  750. data/gemfiles/ruby_2.2.10_rails5_postgres_sidekiq.gemfile +0 -41
  751. data/gemfiles/ruby_2.2.10_rails5_postgres_sidekiq.gemfile.lock +0 -247
  752. data/gemfiles/ruby_2.2.10_rails5_semantic_logger.gemfile +0 -39
  753. data/gemfiles/ruby_2.2.10_rails5_semantic_logger.gemfile.lock +0 -234
  754. data/gemfiles/ruby_2.3.8_contrib.gemfile +0 -75
  755. data/gemfiles/ruby_2.3.8_contrib.gemfile.lock +0 -1508
  756. data/gemfiles/ruby_2.3.8_contrib_old.gemfile +0 -34
  757. data/gemfiles/ruby_2.3.8_contrib_old.gemfile.lock +0 -123
  758. data/gemfiles/ruby_2.3.8_core_old.gemfile +0 -33
  759. data/gemfiles/ruby_2.3.8_core_old.gemfile.lock +0 -119
  760. data/gemfiles/ruby_2.3.8_cucumber3.gemfile +0 -34
  761. data/gemfiles/ruby_2.3.8_cucumber3.gemfile.lock +0 -140
  762. data/gemfiles/ruby_2.3.8_cucumber4.gemfile +0 -34
  763. data/gemfiles/ruby_2.3.8_cucumber4.gemfile.lock +0 -170
  764. data/gemfiles/ruby_2.3.8_rails30_postgres.gemfile +0 -38
  765. data/gemfiles/ruby_2.3.8_rails30_postgres.gemfile.lock +0 -192
  766. data/gemfiles/ruby_2.3.8_rails30_postgres_sidekiq.gemfile +0 -39
  767. data/gemfiles/ruby_2.3.8_rails30_postgres_sidekiq.gemfile.lock +0 -201
  768. data/gemfiles/ruby_2.3.8_rails32_mysql2.gemfile +0 -40
  769. data/gemfiles/ruby_2.3.8_rails32_mysql2.gemfile.lock +0 -208
  770. data/gemfiles/ruby_2.3.8_rails32_postgres.gemfile +0 -38
  771. data/gemfiles/ruby_2.3.8_rails32_postgres.gemfile.lock +0 -200
  772. data/gemfiles/ruby_2.3.8_rails32_postgres_redis.gemfile +0 -40
  773. data/gemfiles/ruby_2.3.8_rails32_postgres_redis.gemfile.lock +0 -219
  774. data/gemfiles/ruby_2.3.8_rails32_postgres_sidekiq.gemfile +0 -39
  775. data/gemfiles/ruby_2.3.8_rails32_postgres_sidekiq.gemfile.lock +0 -209
  776. data/gemfiles/ruby_2.3.8_rails4_mysql2.gemfile +0 -38
  777. data/gemfiles/ruby_2.3.8_rails4_mysql2.gemfile.lock +0 -219
  778. data/gemfiles/ruby_2.3.8_rails4_postgres.gemfile +0 -38
  779. data/gemfiles/ruby_2.3.8_rails4_postgres.gemfile.lock +0 -219
  780. data/gemfiles/ruby_2.3.8_rails4_postgres_redis.gemfile +0 -40
  781. data/gemfiles/ruby_2.3.8_rails4_postgres_redis.gemfile.lock +0 -238
  782. data/gemfiles/ruby_2.3.8_rails4_postgres_sidekiq.gemfile +0 -40
  783. data/gemfiles/ruby_2.3.8_rails4_postgres_sidekiq.gemfile.lock +0 -230
  784. data/gemfiles/ruby_2.3.8_rails4_semantic_logger.gemfile +0 -38
  785. data/gemfiles/ruby_2.3.8_rails4_semantic_logger.gemfile.lock +0 -218
  786. data/gemfiles/ruby_2.3.8_rails5_mysql2.gemfile +0 -37
  787. data/gemfiles/ruby_2.3.8_rails5_mysql2.gemfile.lock +0 -230
  788. data/gemfiles/ruby_2.3.8_rails5_postgres.gemfile +0 -37
  789. data/gemfiles/ruby_2.3.8_rails5_postgres.gemfile.lock +0 -230
  790. data/gemfiles/ruby_2.3.8_rails5_postgres_redis.gemfile +0 -38
  791. data/gemfiles/ruby_2.3.8_rails5_postgres_redis.gemfile.lock +0 -232
  792. data/gemfiles/ruby_2.3.8_rails5_postgres_redis_activesupport.gemfile +0 -38
  793. data/gemfiles/ruby_2.3.8_rails5_postgres_redis_activesupport.gemfile.lock +0 -232
  794. data/gemfiles/ruby_2.3.8_rails5_postgres_sidekiq.gemfile +0 -39
  795. data/gemfiles/ruby_2.3.8_rails5_postgres_sidekiq.gemfile.lock +0 -241
  796. data/gemfiles/ruby_2.3.8_rails5_semantic_logger.gemfile +0 -37
  797. data/gemfiles/ruby_2.3.8_rails5_semantic_logger.gemfile.lock +0 -229
  798. data/gemfiles/ruby_2.3.8_resque2_redis3.gemfile +0 -35
  799. data/gemfiles/ruby_2.3.8_resque2_redis3.gemfile.lock +0 -146
  800. data/gemfiles/ruby_2.3.8_resque2_redis4.gemfile +0 -35
  801. data/gemfiles/ruby_2.3.8_resque2_redis4.gemfile.lock +0 -146
  802. data/gemfiles/ruby_2.4.10_contrib.gemfile +0 -81
  803. data/gemfiles/ruby_2.4.10_contrib.gemfile.lock +0 -1596
  804. data/gemfiles/ruby_2.4.10_contrib_old.gemfile +0 -39
  805. data/gemfiles/ruby_2.4.10_contrib_old.gemfile.lock +0 -157
  806. data/gemfiles/ruby_2.4.10_core_old.gemfile +0 -38
  807. data/gemfiles/ruby_2.4.10_core_old.gemfile.lock +0 -153
  808. data/gemfiles/ruby_2.4.10_cucumber3.gemfile +0 -39
  809. data/gemfiles/ruby_2.4.10_cucumber3.gemfile.lock +0 -174
  810. data/gemfiles/ruby_2.4.10_cucumber4.gemfile +0 -39
  811. data/gemfiles/ruby_2.4.10_cucumber4.gemfile.lock +0 -204
  812. data/gemfiles/ruby_2.4.10_rails5_mysql2.gemfile +0 -42
  813. data/gemfiles/ruby_2.4.10_rails5_mysql2.gemfile.lock +0 -264
  814. data/gemfiles/ruby_2.4.10_rails5_postgres.gemfile +0 -42
  815. data/gemfiles/ruby_2.4.10_rails5_postgres.gemfile.lock +0 -264
  816. data/gemfiles/ruby_2.4.10_rails5_postgres_redis.gemfile +0 -43
  817. data/gemfiles/ruby_2.4.10_rails5_postgres_redis.gemfile.lock +0 -266
  818. data/gemfiles/ruby_2.4.10_rails5_postgres_redis_activesupport.gemfile +0 -43
  819. data/gemfiles/ruby_2.4.10_rails5_postgres_redis_activesupport.gemfile.lock +0 -266
  820. data/gemfiles/ruby_2.4.10_rails5_postgres_sidekiq.gemfile +0 -44
  821. data/gemfiles/ruby_2.4.10_rails5_postgres_sidekiq.gemfile.lock +0 -275
  822. data/gemfiles/ruby_2.4.10_rails5_semantic_logger.gemfile +0 -42
  823. data/gemfiles/ruby_2.4.10_rails5_semantic_logger.gemfile.lock +0 -263
  824. data/gemfiles/ruby_2.4.10_resque2_redis3.gemfile +0 -40
  825. data/gemfiles/ruby_2.4.10_resque2_redis3.gemfile.lock +0 -180
  826. data/gemfiles/ruby_2.4.10_resque2_redis4.gemfile +0 -40
  827. data/gemfiles/ruby_2.4.10_resque2_redis4.gemfile.lock +0 -180
  828. data/gemfiles/ruby_2.5.9_contrib.gemfile +0 -86
  829. data/gemfiles/ruby_2.5.9_contrib.gemfile.lock +0 -1608
  830. data/gemfiles/ruby_2.5.9_contrib_old.gemfile +0 -40
  831. data/gemfiles/ruby_2.5.9_contrib_old.gemfile.lock +0 -167
  832. data/gemfiles/ruby_2.5.9_core_old.gemfile +0 -39
  833. data/gemfiles/ruby_2.5.9_core_old.gemfile.lock +0 -163
  834. data/gemfiles/ruby_2.5.9_cucumber3.gemfile +0 -40
  835. data/gemfiles/ruby_2.5.9_cucumber3.gemfile.lock +0 -184
  836. data/gemfiles/ruby_2.5.9_cucumber4.gemfile +0 -40
  837. data/gemfiles/ruby_2.5.9_cucumber4.gemfile.lock +0 -216
  838. data/gemfiles/ruby_2.5.9_cucumber5.gemfile +0 -40
  839. data/gemfiles/ruby_2.5.9_cucumber5.gemfile.lock +0 -216
  840. data/gemfiles/ruby_2.5.9_rails5_mysql2.gemfile +0 -45
  841. data/gemfiles/ruby_2.5.9_rails5_mysql2.gemfile.lock +0 -276
  842. data/gemfiles/ruby_2.5.9_rails5_postgres.gemfile +0 -45
  843. data/gemfiles/ruby_2.5.9_rails5_postgres.gemfile.lock +0 -276
  844. data/gemfiles/ruby_2.5.9_rails5_postgres_redis.gemfile +0 -46
  845. data/gemfiles/ruby_2.5.9_rails5_postgres_redis.gemfile.lock +0 -278
  846. data/gemfiles/ruby_2.5.9_rails5_postgres_redis_activesupport.gemfile +0 -46
  847. data/gemfiles/ruby_2.5.9_rails5_postgres_redis_activesupport.gemfile.lock +0 -278
  848. data/gemfiles/ruby_2.5.9_rails5_postgres_sidekiq.gemfile +0 -47
  849. data/gemfiles/ruby_2.5.9_rails5_postgres_sidekiq.gemfile.lock +0 -284
  850. data/gemfiles/ruby_2.5.9_rails5_semantic_logger.gemfile +0 -45
  851. data/gemfiles/ruby_2.5.9_rails5_semantic_logger.gemfile.lock +0 -275
  852. data/gemfiles/ruby_2.5.9_rails61_mysql2.gemfile +0 -45
  853. data/gemfiles/ruby_2.5.9_rails61_mysql2.gemfile.lock +0 -295
  854. data/gemfiles/ruby_2.5.9_rails61_postgres.gemfile +0 -45
  855. data/gemfiles/ruby_2.5.9_rails61_postgres.gemfile.lock +0 -295
  856. data/gemfiles/ruby_2.5.9_rails61_postgres_redis.gemfile +0 -46
  857. data/gemfiles/ruby_2.5.9_rails61_postgres_redis.gemfile.lock +0 -297
  858. data/gemfiles/ruby_2.5.9_rails61_postgres_sidekiq.gemfile +0 -46
  859. data/gemfiles/ruby_2.5.9_rails61_postgres_sidekiq.gemfile.lock +0 -302
  860. data/gemfiles/ruby_2.5.9_rails61_semantic_logger.gemfile +0 -45
  861. data/gemfiles/ruby_2.5.9_rails61_semantic_logger.gemfile.lock +0 -294
  862. data/gemfiles/ruby_2.5.9_rails6_mysql2.gemfile +0 -45
  863. data/gemfiles/ruby_2.5.9_rails6_mysql2.gemfile.lock +0 -292
  864. data/gemfiles/ruby_2.5.9_rails6_postgres.gemfile +0 -45
  865. data/gemfiles/ruby_2.5.9_rails6_postgres.gemfile.lock +0 -292
  866. data/gemfiles/ruby_2.5.9_rails6_postgres_redis.gemfile +0 -46
  867. data/gemfiles/ruby_2.5.9_rails6_postgres_redis.gemfile.lock +0 -294
  868. data/gemfiles/ruby_2.5.9_rails6_postgres_redis_activesupport.gemfile +0 -46
  869. data/gemfiles/ruby_2.5.9_rails6_postgres_redis_activesupport.gemfile.lock +0 -294
  870. data/gemfiles/ruby_2.5.9_rails6_postgres_sidekiq.gemfile +0 -47
  871. data/gemfiles/ruby_2.5.9_rails6_postgres_sidekiq.gemfile.lock +0 -300
  872. data/gemfiles/ruby_2.5.9_rails6_semantic_logger.gemfile +0 -45
  873. data/gemfiles/ruby_2.5.9_rails6_semantic_logger.gemfile.lock +0 -291
  874. data/gemfiles/ruby_2.5.9_resque2_redis3.gemfile +0 -41
  875. data/gemfiles/ruby_2.5.9_resque2_redis3.gemfile.lock +0 -190
  876. data/gemfiles/ruby_2.5.9_resque2_redis4.gemfile +0 -41
  877. data/gemfiles/ruby_2.5.9_resque2_redis4.gemfile.lock +0 -190
  878. data/gemfiles/ruby_2.6.7_contrib.gemfile +0 -82
  879. data/gemfiles/ruby_2.6.7_contrib.gemfile.lock +0 -1606
  880. data/gemfiles/ruby_2.6.7_contrib_old.gemfile +0 -40
  881. data/gemfiles/ruby_2.6.7_contrib_old.gemfile.lock +0 -169
  882. data/gemfiles/ruby_2.6.7_core_old.gemfile +0 -39
  883. data/gemfiles/ruby_2.6.7_core_old.gemfile.lock +0 -165
  884. data/gemfiles/ruby_2.6.7_cucumber3.gemfile +0 -40
  885. data/gemfiles/ruby_2.6.7_cucumber3.gemfile.lock +0 -186
  886. data/gemfiles/ruby_2.6.7_cucumber4.gemfile +0 -40
  887. data/gemfiles/ruby_2.6.7_cucumber4.gemfile.lock +0 -218
  888. data/gemfiles/ruby_2.6.7_cucumber5.gemfile +0 -40
  889. data/gemfiles/ruby_2.6.7_cucumber5.gemfile.lock +0 -218
  890. data/gemfiles/ruby_2.6.7_rails5_mysql2.gemfile +0 -43
  891. data/gemfiles/ruby_2.6.7_rails5_mysql2.gemfile.lock +0 -276
  892. data/gemfiles/ruby_2.6.7_rails5_postgres.gemfile +0 -43
  893. data/gemfiles/ruby_2.6.7_rails5_postgres.gemfile.lock +0 -276
  894. data/gemfiles/ruby_2.6.7_rails5_postgres_redis.gemfile +0 -44
  895. data/gemfiles/ruby_2.6.7_rails5_postgres_redis.gemfile.lock +0 -278
  896. data/gemfiles/ruby_2.6.7_rails5_postgres_redis_activesupport.gemfile +0 -44
  897. data/gemfiles/ruby_2.6.7_rails5_postgres_redis_activesupport.gemfile.lock +0 -278
  898. data/gemfiles/ruby_2.6.7_rails5_postgres_sidekiq.gemfile +0 -45
  899. data/gemfiles/ruby_2.6.7_rails5_postgres_sidekiq.gemfile.lock +0 -284
  900. data/gemfiles/ruby_2.6.7_rails5_semantic_logger.gemfile +0 -43
  901. data/gemfiles/ruby_2.6.7_rails5_semantic_logger.gemfile.lock +0 -275
  902. data/gemfiles/ruby_2.6.7_rails61_mysql2.gemfile +0 -43
  903. data/gemfiles/ruby_2.6.7_rails61_mysql2.gemfile.lock +0 -295
  904. data/gemfiles/ruby_2.6.7_rails61_postgres.gemfile +0 -43
  905. data/gemfiles/ruby_2.6.7_rails61_postgres.gemfile.lock +0 -295
  906. data/gemfiles/ruby_2.6.7_rails61_postgres_redis.gemfile +0 -44
  907. data/gemfiles/ruby_2.6.7_rails61_postgres_redis.gemfile.lock +0 -297
  908. data/gemfiles/ruby_2.6.7_rails61_postgres_sidekiq.gemfile +0 -44
  909. data/gemfiles/ruby_2.6.7_rails61_postgres_sidekiq.gemfile.lock +0 -302
  910. data/gemfiles/ruby_2.6.7_rails61_semantic_logger.gemfile +0 -43
  911. data/gemfiles/ruby_2.6.7_rails61_semantic_logger.gemfile.lock +0 -294
  912. data/gemfiles/ruby_2.6.7_rails6_mysql2.gemfile +0 -43
  913. data/gemfiles/ruby_2.6.7_rails6_mysql2.gemfile.lock +0 -292
  914. data/gemfiles/ruby_2.6.7_rails6_postgres.gemfile +0 -43
  915. data/gemfiles/ruby_2.6.7_rails6_postgres.gemfile.lock +0 -292
  916. data/gemfiles/ruby_2.6.7_rails6_postgres_redis.gemfile +0 -44
  917. data/gemfiles/ruby_2.6.7_rails6_postgres_redis.gemfile.lock +0 -294
  918. data/gemfiles/ruby_2.6.7_rails6_postgres_redis_activesupport.gemfile +0 -44
  919. data/gemfiles/ruby_2.6.7_rails6_postgres_redis_activesupport.gemfile.lock +0 -294
  920. data/gemfiles/ruby_2.6.7_rails6_postgres_sidekiq.gemfile +0 -45
  921. data/gemfiles/ruby_2.6.7_rails6_postgres_sidekiq.gemfile.lock +0 -300
  922. data/gemfiles/ruby_2.6.7_rails6_semantic_logger.gemfile +0 -43
  923. data/gemfiles/ruby_2.6.7_rails6_semantic_logger.gemfile.lock +0 -291
  924. data/gemfiles/ruby_2.6.7_resque2_redis3.gemfile +0 -41
  925. data/gemfiles/ruby_2.6.7_resque2_redis3.gemfile.lock +0 -192
  926. data/gemfiles/ruby_2.6.7_resque2_redis4.gemfile +0 -41
  927. data/gemfiles/ruby_2.6.7_resque2_redis4.gemfile.lock +0 -192
  928. data/gemfiles/ruby_2.7.3_contrib.gemfile +0 -81
  929. data/gemfiles/ruby_2.7.3_contrib.gemfile.lock +0 -1580
  930. data/gemfiles/ruby_2.7.3_contrib_old.gemfile +0 -40
  931. data/gemfiles/ruby_2.7.3_contrib_old.gemfile.lock +0 -169
  932. data/gemfiles/ruby_2.7.3_core_old.gemfile +0 -39
  933. data/gemfiles/ruby_2.7.3_core_old.gemfile.lock +0 -165
  934. data/gemfiles/ruby_2.7.3_cucumber3.gemfile +0 -40
  935. data/gemfiles/ruby_2.7.3_cucumber3.gemfile.lock +0 -186
  936. data/gemfiles/ruby_2.7.3_cucumber4.gemfile +0 -40
  937. data/gemfiles/ruby_2.7.3_cucumber4.gemfile.lock +0 -218
  938. data/gemfiles/ruby_2.7.3_cucumber5.gemfile +0 -40
  939. data/gemfiles/ruby_2.7.3_cucumber5.gemfile.lock +0 -218
  940. data/gemfiles/ruby_2.7.3_rails5_mysql2.gemfile +0 -43
  941. data/gemfiles/ruby_2.7.3_rails5_mysql2.gemfile.lock +0 -278
  942. data/gemfiles/ruby_2.7.3_rails5_postgres.gemfile +0 -43
  943. data/gemfiles/ruby_2.7.3_rails5_postgres.gemfile.lock +0 -278
  944. data/gemfiles/ruby_2.7.3_rails5_postgres_redis.gemfile +0 -45
  945. data/gemfiles/ruby_2.7.3_rails5_postgres_redis.gemfile.lock +0 -297
  946. data/gemfiles/ruby_2.7.3_rails5_postgres_redis_activesupport.gemfile +0 -45
  947. data/gemfiles/ruby_2.7.3_rails5_postgres_redis_activesupport.gemfile.lock +0 -297
  948. data/gemfiles/ruby_2.7.3_rails5_postgres_sidekiq.gemfile +0 -45
  949. data/gemfiles/ruby_2.7.3_rails5_postgres_sidekiq.gemfile.lock +0 -286
  950. data/gemfiles/ruby_2.7.3_rails5_semantic_logger.gemfile +0 -43
  951. data/gemfiles/ruby_2.7.3_rails5_semantic_logger.gemfile.lock +0 -277
  952. data/gemfiles/ruby_2.7.3_rails61_mysql2.gemfile +0 -43
  953. data/gemfiles/ruby_2.7.3_rails61_mysql2.gemfile.lock +0 -297
  954. data/gemfiles/ruby_2.7.3_rails61_postgres.gemfile +0 -43
  955. data/gemfiles/ruby_2.7.3_rails61_postgres.gemfile.lock +0 -297
  956. data/gemfiles/ruby_2.7.3_rails61_postgres_redis.gemfile +0 -44
  957. data/gemfiles/ruby_2.7.3_rails61_postgres_redis.gemfile.lock +0 -299
  958. data/gemfiles/ruby_2.7.3_rails61_postgres_sidekiq.gemfile +0 -44
  959. data/gemfiles/ruby_2.7.3_rails61_postgres_sidekiq.gemfile.lock +0 -304
  960. data/gemfiles/ruby_2.7.3_rails61_semantic_logger.gemfile +0 -43
  961. data/gemfiles/ruby_2.7.3_rails61_semantic_logger.gemfile.lock +0 -296
  962. data/gemfiles/ruby_2.7.3_rails6_mysql2.gemfile +0 -43
  963. data/gemfiles/ruby_2.7.3_rails6_mysql2.gemfile.lock +0 -294
  964. data/gemfiles/ruby_2.7.3_rails6_postgres.gemfile +0 -43
  965. data/gemfiles/ruby_2.7.3_rails6_postgres.gemfile.lock +0 -294
  966. data/gemfiles/ruby_2.7.3_rails6_postgres_redis.gemfile +0 -45
  967. data/gemfiles/ruby_2.7.3_rails6_postgres_redis.gemfile.lock +0 -313
  968. data/gemfiles/ruby_2.7.3_rails6_postgres_redis_activesupport.gemfile +0 -45
  969. data/gemfiles/ruby_2.7.3_rails6_postgres_redis_activesupport.gemfile.lock +0 -313
  970. data/gemfiles/ruby_2.7.3_rails6_postgres_sidekiq.gemfile +0 -45
  971. data/gemfiles/ruby_2.7.3_rails6_postgres_sidekiq.gemfile.lock +0 -302
  972. data/gemfiles/ruby_2.7.3_rails6_semantic_logger.gemfile +0 -43
  973. data/gemfiles/ruby_2.7.3_rails6_semantic_logger.gemfile.lock +0 -293
  974. data/gemfiles/ruby_2.7.3_resque2_redis3.gemfile +0 -41
  975. data/gemfiles/ruby_2.7.3_resque2_redis3.gemfile.lock +0 -192
  976. data/gemfiles/ruby_2.7.3_resque2_redis4.gemfile +0 -41
  977. data/gemfiles/ruby_2.7.3_resque2_redis4.gemfile.lock +0 -192
  978. data/gemfiles/ruby_3.0.1_contrib.gemfile +0 -80
  979. data/gemfiles/ruby_3.0.1_contrib.gemfile.lock +0 -1583
  980. data/gemfiles/ruby_3.0.1_core_old.gemfile +0 -40
  981. data/gemfiles/ruby_3.0.1_core_old.gemfile.lock +0 -167
  982. data/gemfiles/ruby_3.0.1_cucumber3.gemfile +0 -41
  983. data/gemfiles/ruby_3.0.1_cucumber3.gemfile.lock +0 -188
  984. data/gemfiles/ruby_3.0.1_cucumber4.gemfile +0 -41
  985. data/gemfiles/ruby_3.0.1_cucumber4.gemfile.lock +0 -220
  986. data/gemfiles/ruby_3.0.1_cucumber5.gemfile +0 -41
  987. data/gemfiles/ruby_3.0.1_cucumber5.gemfile.lock +0 -220
  988. data/gemfiles/ruby_3.0.1_rails61_mysql2.gemfile +0 -44
  989. data/gemfiles/ruby_3.0.1_rails61_mysql2.gemfile.lock +0 -297
  990. data/gemfiles/ruby_3.0.1_rails61_postgres.gemfile +0 -44
  991. data/gemfiles/ruby_3.0.1_rails61_postgres.gemfile.lock +0 -297
  992. data/gemfiles/ruby_3.0.1_rails61_postgres_redis.gemfile +0 -45
  993. data/gemfiles/ruby_3.0.1_rails61_postgres_redis.gemfile.lock +0 -299
  994. data/gemfiles/ruby_3.0.1_rails61_postgres_sidekiq.gemfile +0 -46
  995. data/gemfiles/ruby_3.0.1_rails61_postgres_sidekiq.gemfile.lock +0 -311
  996. data/gemfiles/ruby_3.0.1_rails61_semantic_logger.gemfile +0 -44
  997. data/gemfiles/ruby_3.0.1_rails61_semantic_logger.gemfile.lock +0 -296
  998. data/gemfiles/ruby_3.0.1_resque2_redis3.gemfile +0 -42
  999. data/gemfiles/ruby_3.0.1_resque2_redis3.gemfile.lock +0 -194
  1000. data/gemfiles/ruby_3.0.1_resque2_redis4.gemfile +0 -42
  1001. data/gemfiles/ruby_3.0.1_resque2_redis4.gemfile.lock +0 -194
  1002. data/integration/README.md +0 -67
  1003. data/integration/apps/rack/.dockerignore +0 -1
  1004. data/integration/apps/rack/.envrc.sample +0 -1
  1005. data/integration/apps/rack/.gitignore +0 -4
  1006. data/integration/apps/rack/.rspec +0 -1
  1007. data/integration/apps/rack/Dockerfile +0 -28
  1008. data/integration/apps/rack/Dockerfile-ci +0 -11
  1009. data/integration/apps/rack/Gemfile +0 -24
  1010. data/integration/apps/rack/README.md +0 -93
  1011. data/integration/apps/rack/app/acme.rb +0 -80
  1012. data/integration/apps/rack/app/datadog.rb +0 -17
  1013. data/integration/apps/rack/bin/run +0 -22
  1014. data/integration/apps/rack/bin/setup +0 -17
  1015. data/integration/apps/rack/bin/test +0 -24
  1016. data/integration/apps/rack/config/puma.rb +0 -14
  1017. data/integration/apps/rack/config/unicorn.rb +0 -23
  1018. data/integration/apps/rack/config.ru +0 -6
  1019. data/integration/apps/rack/docker-compose.ci.yml +0 -62
  1020. data/integration/apps/rack/docker-compose.yml +0 -78
  1021. data/integration/apps/rack/script/build-images +0 -38
  1022. data/integration/apps/rack/script/ci +0 -51
  1023. data/integration/apps/rack/spec/integration/basic_spec.rb +0 -10
  1024. data/integration/apps/rack/spec/spec_helper.rb +0 -16
  1025. data/integration/apps/rack/spec/support/integration_helper.rb +0 -22
  1026. data/integration/apps/rails-five/.dockerignore +0 -1
  1027. data/integration/apps/rails-five/.env +0 -3
  1028. data/integration/apps/rails-five/.envrc.sample +0 -1
  1029. data/integration/apps/rails-five/.gitignore +0 -30
  1030. data/integration/apps/rails-five/Dockerfile +0 -25
  1031. data/integration/apps/rails-five/Dockerfile-ci +0 -11
  1032. data/integration/apps/rails-five/Gemfile +0 -104
  1033. data/integration/apps/rails-five/README.md +0 -94
  1034. data/integration/apps/rails-five/Rakefile +0 -6
  1035. data/integration/apps/rails-five/app/channels/application_cable/channel.rb +0 -4
  1036. data/integration/apps/rails-five/app/channels/application_cable/connection.rb +0 -4
  1037. data/integration/apps/rails-five/app/controllers/application_controller.rb +0 -2
  1038. data/integration/apps/rails-five/app/controllers/basic_controller.rb +0 -36
  1039. data/integration/apps/rails-five/app/controllers/concerns/.keep +0 -0
  1040. data/integration/apps/rails-five/app/controllers/health_controller.rb +0 -9
  1041. data/integration/apps/rails-five/app/controllers/jobs_controller.rb +0 -12
  1042. data/integration/apps/rails-five/app/jobs/application_job.rb +0 -2
  1043. data/integration/apps/rails-five/app/jobs/test_job.rb +0 -12
  1044. data/integration/apps/rails-five/app/mailers/application_mailer.rb +0 -4
  1045. data/integration/apps/rails-five/app/models/application_record.rb +0 -3
  1046. data/integration/apps/rails-five/app/models/concerns/.keep +0 -0
  1047. data/integration/apps/rails-five/app/models/test.rb +0 -2
  1048. data/integration/apps/rails-five/app/views/layouts/mailer.html.erb +0 -13
  1049. data/integration/apps/rails-five/app/views/layouts/mailer.text.erb +0 -1
  1050. data/integration/apps/rails-five/bin/bundle +0 -3
  1051. data/integration/apps/rails-five/bin/rails +0 -9
  1052. data/integration/apps/rails-five/bin/rake +0 -9
  1053. data/integration/apps/rails-five/bin/run +0 -24
  1054. data/integration/apps/rails-five/bin/setup +0 -27
  1055. data/integration/apps/rails-five/bin/spring +0 -17
  1056. data/integration/apps/rails-five/bin/test +0 -21
  1057. data/integration/apps/rails-five/bin/update +0 -28
  1058. data/integration/apps/rails-five/config/application.rb +0 -97
  1059. data/integration/apps/rails-five/config/boot.rb +0 -4
  1060. data/integration/apps/rails-five/config/cable.yml +0 -10
  1061. data/integration/apps/rails-five/config/credentials.yml.enc +0 -1
  1062. data/integration/apps/rails-five/config/database.yml +0 -28
  1063. data/integration/apps/rails-five/config/environment.rb +0 -5
  1064. data/integration/apps/rails-five/config/environments/development.rb +0 -51
  1065. data/integration/apps/rails-five/config/environments/production.rb +0 -82
  1066. data/integration/apps/rails-five/config/environments/test.rb +0 -43
  1067. data/integration/apps/rails-five/config/initializers/datadog.rb +0 -18
  1068. data/integration/apps/rails-five/config/initializers/filter_parameter_logging.rb +0 -4
  1069. data/integration/apps/rails-five/config/initializers/resque.rb +0 -4
  1070. data/integration/apps/rails-five/config/initializers/rollbar.rb +0 -5
  1071. data/integration/apps/rails-five/config/initializers/wrap_parameters.rb +0 -14
  1072. data/integration/apps/rails-five/config/locales/en.yml +0 -33
  1073. data/integration/apps/rails-five/config/puma.rb +0 -24
  1074. data/integration/apps/rails-five/config/routes.rb +0 -11
  1075. data/integration/apps/rails-five/config/spring.rb +0 -6
  1076. data/integration/apps/rails-five/config/unicorn.rb +0 -29
  1077. data/integration/apps/rails-five/config.ru +0 -5
  1078. data/integration/apps/rails-five/db/migrate/20190927215052_create_tests.rb +0 -11
  1079. data/integration/apps/rails-five/db/schema.rb +0 -23
  1080. data/integration/apps/rails-five/db/seeds.rb +0 -7
  1081. data/integration/apps/rails-five/docker-compose.ci.yml +0 -98
  1082. data/integration/apps/rails-five/docker-compose.yml +0 -100
  1083. data/integration/apps/rails-five/lib/tasks/.keep +0 -0
  1084. data/integration/apps/rails-five/log/.keep +0 -0
  1085. data/integration/apps/rails-five/public/robots.txt +0 -1
  1086. data/integration/apps/rails-five/script/build-images +0 -35
  1087. data/integration/apps/rails-five/script/ci +0 -51
  1088. data/integration/apps/rails-five/spec/integration/basic_spec.rb +0 -10
  1089. data/integration/apps/rails-five/spec/spec_helper.rb +0 -16
  1090. data/integration/apps/rails-five/spec/support/integration_helper.rb +0 -22
  1091. data/integration/apps/rails-five/storage/.keep +0 -0
  1092. data/integration/apps/rails-five/tmp/.keep +0 -0
  1093. data/integration/apps/rails-five/vendor/.keep +0 -0
  1094. data/integration/apps/rspec/.dockerignore +0 -1
  1095. data/integration/apps/rspec/.envrc.sample +0 -1
  1096. data/integration/apps/rspec/.gitignore +0 -2
  1097. data/integration/apps/rspec/.rspec +0 -1
  1098. data/integration/apps/rspec/Dockerfile +0 -25
  1099. data/integration/apps/rspec/Dockerfile-ci +0 -11
  1100. data/integration/apps/rspec/Gemfile +0 -14
  1101. data/integration/apps/rspec/README.md +0 -70
  1102. data/integration/apps/rspec/agent.yaml +0 -3
  1103. data/integration/apps/rspec/app/datadog.rb +0 -13
  1104. data/integration/apps/rspec/app/fibonacci.rb +0 -30
  1105. data/integration/apps/rspec/bin/run +0 -20
  1106. data/integration/apps/rspec/bin/setup +0 -23
  1107. data/integration/apps/rspec/bin/test +0 -21
  1108. data/integration/apps/rspec/docker-compose.ci.yml +0 -51
  1109. data/integration/apps/rspec/docker-compose.yml +0 -64
  1110. data/integration/apps/rspec/script/build-images +0 -37
  1111. data/integration/apps/rspec/script/ci +0 -53
  1112. data/integration/apps/rspec/spec/fibonacci_spec.rb +0 -16
  1113. data/integration/apps/rspec/spec/rspec_spec.rb +0 -58
  1114. data/integration/apps/rspec/spec/spec_helper.rb +0 -24
  1115. data/integration/apps/ruby/.dockerignore +0 -1
  1116. data/integration/apps/ruby/.envrc.sample +0 -1
  1117. data/integration/apps/ruby/.gitignore +0 -2
  1118. data/integration/apps/ruby/Dockerfile +0 -25
  1119. data/integration/apps/ruby/Dockerfile-ci +0 -11
  1120. data/integration/apps/ruby/Gemfile +0 -11
  1121. data/integration/apps/ruby/README.md +0 -70
  1122. data/integration/apps/ruby/agent.yaml +0 -3
  1123. data/integration/apps/ruby/app/datadog.rb +0 -13
  1124. data/integration/apps/ruby/app/fibonacci.rb +0 -58
  1125. data/integration/apps/ruby/bin/run +0 -20
  1126. data/integration/apps/ruby/bin/setup +0 -17
  1127. data/integration/apps/ruby/bin/test +0 -21
  1128. data/integration/apps/ruby/docker-compose.ci.yml +0 -51
  1129. data/integration/apps/ruby/docker-compose.yml +0 -63
  1130. data/integration/apps/ruby/script/build-images +0 -38
  1131. data/integration/apps/ruby/script/ci +0 -51
  1132. data/integration/images/agent/Dockerfile +0 -2
  1133. data/integration/images/agent/agent.yaml +0 -3
  1134. data/integration/images/include/datadog/analyzer.rb +0 -71
  1135. data/integration/images/include/datadog/demo_env.rb +0 -102
  1136. data/integration/images/include/http-health-check +0 -33
  1137. data/integration/images/ruby/2.1/Dockerfile +0 -54
  1138. data/integration/images/ruby/2.2/Dockerfile +0 -54
  1139. data/integration/images/ruby/2.3/Dockerfile +0 -70
  1140. data/integration/images/ruby/2.4/Dockerfile +0 -54
  1141. data/integration/images/ruby/2.5/Dockerfile +0 -54
  1142. data/integration/images/ruby/2.6/Dockerfile +0 -54
  1143. data/integration/images/ruby/2.7/Dockerfile +0 -54
  1144. data/integration/images/ruby/3.0/Dockerfile +0 -54
  1145. data/integration/images/wrk/Dockerfile +0 -33
  1146. data/integration/images/wrk/scripts/entrypoint.sh +0 -17
  1147. data/integration/images/wrk/scripts/scenarios/basic/default.lua +0 -1
  1148. data/integration/images/wrk/scripts/scenarios/basic/fibonacci.lua +0 -1
  1149. data/integration/script/build-images +0 -43
  1150. data/lib/datadog/core/environment/object_space.rb +0 -22
  1151. data/lib/ddtrace/profiling/ext/cpu.rb +0 -67
  1152. data/lib/ddtrace/profiling/ext/cthread.rb +0 -155
  1153. data/tasks/release_gem.rake +0 -28
  1154. data/tasks/update_appraisal_gemfiles.rake +0 -36
@@ -28,8 +28,10 @@ To contribute, check out the [contribution guidelines][contribution docs] and [d
28
28
  - [Integration instrumentation](#integration-instrumentation)
29
29
  - [Action Cable](#action-cable)
30
30
  - [Action View](#action-view)
31
+ - [Action Mailer](#action-mailer)
31
32
  - [Active Model Serializers](#active-model-serializers)
32
33
  - [Action Pack](#action-pack)
34
+ - [Active Job](#active-job)
33
35
  - [Active Record](#active-record)
34
36
  - [Active Support](#active-support)
35
37
  - [AWS](#aws)
@@ -44,12 +46,12 @@ To contribute, check out the [contribution guidelines][contribution docs] and [d
44
46
  - [Grape](#grape)
45
47
  - [GraphQL](#graphql)
46
48
  - [gRPC](#grpc)
47
- - [http.rb](#http-rb)
49
+ - [http.rb](#httprb)
48
50
  - [httpclient](#httpclient)
49
51
  - [httpx](#httpx)
50
52
  - [MongoDB](#mongodb)
51
53
  - [MySQL2](#mysql2)
52
- - [Net/HTTP](#net-http)
54
+ - [Net/HTTP](#nethttp)
53
55
  - [Presto](#presto)
54
56
  - [Qless](#qless)
55
57
  - [Que](#que)
@@ -86,6 +88,8 @@ To contribute, check out the [contribution guidelines][contribution docs] and [d
86
88
  - [For application runtime](#for-application-runtime)
87
89
  - [OpenTracing](#opentracing)
88
90
  - [Profiling](#profiling)
91
+ - [Troubleshooting](#troubleshooting)
92
+ - [Profiling Resque jobs](#profiling-resque-jobs)
89
93
  - [Known issues and suggested configurations](#known-issues-and-suggested-configurations)
90
94
  - [Payload too large](#payload-too-large)
91
95
  - [Stack level too deep](#stack-level-too-deep)
@@ -131,13 +135,22 @@ To contribute, check out the [contribution guidelines][contribution docs] and [d
131
135
 
132
136
  *EOL* indicates support is no longer provided.
133
137
 
138
+ ### Apple macOS support
139
+
140
+ Use of `ddtrace` on macOS is supported for development, but not for production deployments.
141
+
142
+ ### Microsoft Windows support
143
+
144
+ Using `ddtrace` on Microsoft Windows is currently unsupported. We'll still accept community contributions and issues,
145
+ but will consider them as having low priority.
146
+
134
147
  ## Installation
135
148
 
136
149
  The following steps will help you quickly start tracing your Ruby application.
137
150
 
138
151
  ### Configure the Datadog Agent for APM
139
152
 
140
- Before downloading tracing on your application, install the Datadog Agent. The Ruby APM tracer sends trace data through the Datadog Agent.
153
+ Before downloading tracing on your application, [install the Datadog Agent on the host](https://docs.datadoghq.com/agent/). The Ruby APM tracer sends trace data through the Datadog Agent.
141
154
 
142
155
  Install and configure the Datadog Agent to receive traces from your now instrumented application. By default the Datadog Agent is enabled in your `datadog.yaml` file under `apm_enabled: true` and listens for trace traffic at `localhost:8126`. For containerized environments, follow the steps below to enable trace collection within the Datadog Agent.
143
156
 
@@ -163,7 +176,7 @@ Install and configure the Datadog Agent to receive traces from your now instrume
163
176
 
164
177
  2. Install the gem with `bundle install`
165
178
 
166
- 3. You can configure, override, or disable any specific integration settings by also adding a [Rails Manual Configuration](#rails-manual-configuration) file.
179
+ 3. You can configure, override, or disable any specific integration settings by also adding a Rails manual instrumentation configuration file (next).
167
180
 
168
181
  #### Manual instrumentation
169
182
 
@@ -203,7 +216,7 @@ Install and configure the Datadog Agent to receive traces from your now instrume
203
216
  require 'ddtrace/auto_instrument'
204
217
  ```
205
218
 
206
- You can configure, override, or disable any specific integration settings by also adding a [Ruby Manual Configuration Block](#ruby-manual-configuration).
219
+ You can configure, override, or disable any specific integration settings by also adding a Ruby manual configuration block (next).
207
220
 
208
221
  #### Manual instrumentation
209
222
 
@@ -386,14 +399,16 @@ For a list of available integrations, and their configuration options, please re
386
399
  | Name | Key | Versions Supported: MRI | Versions Supported: JRuby | How to configure | Gem source |
387
400
  | ------------------------ | -------------------------- | ------------------------ | --------------------------| ----------------------------------- | ------------------------------------------------------------------------------ |
388
401
  | Action Cable | `action_cable` | `>= 5.0` | `>= 5.0` | *[Link](#action-cable)* | *[Link](https://github.com/rails/rails/tree/master/actioncable)* |
402
+ | Action Mailer | `action_mailer` | `>= 5.0` | `>= 5.0` | *[Link](#action-mailer)* | *[Link](https://github.com/rails/rails/tree/master/actionmailer)* |
389
403
  | Action View | `action_view` | `>= 3.0` | `>= 3.0` | *[Link](#action-view)* | *[Link](https://github.com/rails/rails/tree/master/actionview)* |
390
404
  | Active Model Serializers | `active_model_serializers` | `>= 0.9` | `>= 0.9` | *[Link](#active-model-serializers)* | *[Link](https://github.com/rails-api/active_model_serializers)* |
391
405
  | Action Pack | `action_pack` | `>= 3.0` | `>= 3.0` | *[Link](#action-pack)* | *[Link](https://github.com/rails/rails/tree/master/actionpack)* |
406
+ | Active Job | `active_job` | `>= 4.2` | `>= 4.2` | *[Link](#active-job)* | *[Link](https://github.com/rails/rails/tree/master/activejob)* |
392
407
  | Active Record | `active_record` | `>= 3.0` | `>= 3.0` | *[Link](#active-record)* | *[Link](https://github.com/rails/rails/tree/master/activerecord)* |
393
408
  | Active Support | `active_support` | `>= 3.0` | `>= 3.0` | *[Link](#active-support)* | *[Link](https://github.com/rails/rails/tree/master/activesupport)* |
394
409
  | AWS | `aws` | `>= 2.0` | `>= 2.0` | *[Link](#aws)* | *[Link](https://github.com/aws/aws-sdk-ruby)* |
395
410
  | Concurrent Ruby | `concurrent_ruby` | `>= 0.9` | `>= 0.9` | *[Link](#concurrent-ruby)* | *[Link](https://github.com/ruby-concurrency/concurrent-ruby)* |
396
- | Cucumber | `cucumber` | `>= 3.0` | `>= 1.7.16` | *[Link](#cucumber)* | *[Link](https://github.com/cucumber/cucumber-ruby)* |
411
+ | Cucumber | `cucumber` | `>= 3.0` | `>= 1.7.16` | *[Link](#cucumber)* | *[Link](https://github.com/cucumber/cucumber-ruby)* |
397
412
  | Dalli | `dalli` | `>= 2.0` | `>= 2.0` | *[Link](#dalli)* | *[Link](https://github.com/petergoldstein/dalli)* |
398
413
  | DelayedJob | `delayed_job` | `>= 4.1` | `>= 4.1` | *[Link](#delayedjob)* | *[Link](https://github.com/collectiveidea/delayed_job)* |
399
414
  | Elasticsearch | `elasticsearch` | `>= 1.0` | `>= 1.0` | *[Link](#elasticsearch)* | *[Link](https://github.com/elastic/elasticsearch-ruby)* |
@@ -403,7 +418,7 @@ For a list of available integrations, and their configuration options, please re
403
418
  | Grape | `grape` | `>= 1.0` | `>= 1.0` | *[Link](#grape)* | *[Link](https://github.com/ruby-grape/grape)* |
404
419
  | GraphQL | `graphql` | `>= 1.7.9` | `>= 1.7.9` | *[Link](#graphql)* | *[Link](https://github.com/rmosolgo/graphql-ruby)* |
405
420
  | gRPC | `grpc` | `>= 1.7` | *gem not available* | *[Link](#grpc)* | *[Link](https://github.com/grpc/grpc/tree/master/src/rubyc)* |
406
- | http.rb | `httprb` | `>= 2.0` | `>= 2.0` | *[Link](#http-rb)* | *[Link](https://github.com/httprb/http)* |
421
+ | http.rb | `httprb` | `>= 2.0` | `>= 2.0` | *[Link](#httprb)* | *[Link](https://github.com/httprb/http)* |
407
422
  | httpclient | `httpclient` | `>= 2.2` | `>= 2.2` | *[Link](#httpclient)* | *[Link](https://github.com/nahi/httpclient)* |
408
423
  | httpx | `httpx` | `>= 0.11` | `>= 0.11` | *[Link](#httpx)* | *[Link](https://gitlab.com/honeyryderchuck/httpx)* |
409
424
  | Kafka | `ruby-kafka` | `>= 0.7.10` | `>= 0.7.10` | *[Link](#kafka)* | *[Link](https://github.com/zendesk/ruby-kafka)* |
@@ -469,6 +484,27 @@ Where `options` is an optional `Hash` that accepts the following parameters:
469
484
  | `service_name` | Service name used for rendering instrumentation. | `action_view` |
470
485
  | `template_base_path` | Used when the template name is parsed. If you don't store your templates in the `views/` folder, you may need to change this value | `'views/'` |
471
486
 
487
+ ### Action Mailer
488
+
489
+ The Action Mailer integration provides tracing for Rails 5 ActionMailer actions.
490
+
491
+ You can enable it through `Datadog.configure`:
492
+
493
+ ```ruby
494
+ require 'ddtrace'
495
+ Datadog.configure do |c|
496
+ c.use :action_mailer, options
497
+ end
498
+ ```
499
+
500
+ Where `options` is an optional `Hash` that accepts the following parameters:
501
+
502
+ | Key | Description | Default |
503
+ | --- | ----------- | ------- |
504
+ | `analytics_enabled` | Enable analytics for spans produced by this integration. `true` for on, `nil` to defer to global setting, `false` for off. | `false` |
505
+ | `service_name` | Service name used for `action_mailer` instrumentation | `'action_mailer'` |
506
+ | `email_data` | Whether or not to append additional email payload metadata to `action_mailer.deliver` spans. Fields include `['subject', 'to', 'from', 'bcc', 'cc', 'date', 'perform_deliveries']`. | `false` |
507
+
472
508
  ### Active Model Serializers
473
509
 
474
510
  The Active Model Serializers integration traces the `serialize` event for version 0.9+ and the `render` event for version 0.10+.
@@ -508,6 +544,28 @@ Where `options` is an optional `Hash` that accepts the following parameters:
508
544
  | ---| --- | --- |
509
545
  | `service_name` | Service name used for rendering instrumentation. | `action_pack` |
510
546
 
547
+ ### Active Job
548
+
549
+ Most of the time, Active Job is set up as part of Rails, but it can be activated separately:
550
+
551
+ ```ruby
552
+ require 'active_job'
553
+ require 'ddtrace'
554
+
555
+ Datadog.configure do |c|
556
+ c.use :active_job, options
557
+ end
558
+
559
+ ExampleJob.perform_later
560
+ ```
561
+
562
+ Where `options` is an optional `Hash` that accepts the following parameters:
563
+
564
+ | Key | Description | Default |
565
+ | --- | ----------- | ------- |
566
+ | `service_name` | Service name used for `active_job` instrumentation | `'active_job'` |
567
+ | `log_injection` | Automatically enables injection [Trace Correlation](#trace-correlation) information, such as `dd.trace_id`, into Active Job logs. Supports the default logger (`ActiveSupport::TaggedLogging`) and `Lograge`. Details on the format of Trace Correlation information can be found in the [Trace Correlation](#trace-correlation) section. | `false` |
568
+
511
569
  ### Active Record
512
570
 
513
571
  Most of the time, Active Record is set up as part of a web framework (Rails, Sinatra...) however, it can be set up alone:
@@ -1028,6 +1086,7 @@ Where `options` is an optional `Hash` that accepts the following parameters:
1028
1086
  | Key | Description | Default |
1029
1087
  | --- | ----------- | ------- |
1030
1088
  | `service_name` | Service name used for `grpc` instrumentation | `'grpc'` |
1089
+ | `error_handler` | Custom error handler invoked when a request is an error. A `Proc` that accepts `span` and `error` parameters. Sets error on the span by default. | `proc { |span, error| span.set_error(error) unless span.nil? }` |
1031
1090
 
1032
1091
  **Configuring clients to use different settings**
1033
1092
 
@@ -1167,6 +1226,37 @@ Where `options` is an optional `Hash` that accepts the following parameters:
1167
1226
  | `quantize` | Hash containing options for quantization. May include `:show` with an Array of keys to not quantize (or `:all` to skip quantization), or `:exclude` with Array of keys to exclude entirely. | `{ show: [:collection, :database, :operation] }` |
1168
1227
  | `service_name` | Service name used for `mongo` instrumentation | `'mongodb'` |
1169
1228
 
1229
+ **Configuring trace settings per connection**
1230
+
1231
+ You can configure trace settings per connection by using the `describes` option:
1232
+
1233
+ ```ruby
1234
+ # Provide a `:describes` option with a connection key.
1235
+ # Any of the following keys are acceptable and equivalent to one another.
1236
+ # If a block is provided, it yields a Settings object that
1237
+ # accepts any of the configuration options listed above.
1238
+
1239
+ Datadog.configure do |c|
1240
+ # Network connection string
1241
+ c.use :mongo, describes: '127.0.0.1:27017', service_name: 'mongo-primary'
1242
+
1243
+ # Network connection regular expression
1244
+ c.use :mongo, describes: /localhost.*/, service_name: 'mongo-secondary'
1245
+ end
1246
+
1247
+ client = Mongo::Client.new([ '127.0.0.1:27017' ], :database => 'artists')
1248
+ collection = client[:people]
1249
+ collection.insert_one({ name: 'Steve' })
1250
+ # Traced call will belong to `mongo-primary` service
1251
+
1252
+ client = Mongo::Client.new([ 'localhost:27017' ], :database => 'artists')
1253
+ collection = client[:people]
1254
+ collection.insert_one({ name: 'Steve' })
1255
+ # Traced call will belong to `mongo-secondary` service
1256
+ ```
1257
+
1258
+ When multiple `describes` configurations match a connection, the latest configured rule that matches will be applied.
1259
+
1170
1260
  ### MySQL2
1171
1261
 
1172
1262
  The MySQL2 integration traces any SQL command sent through `mysql2` gem.
@@ -1421,6 +1511,7 @@ Where `options` is an optional `Hash` that accepts the following parameters:
1421
1511
  | `database_service` | Database service name used when tracing database activity | `'<app_name>-<adapter_name>'` |
1422
1512
  | `distributed_tracing` | Enables [distributed tracing](#distributed-tracing) so that this service trace is connected with a trace of another service if tracing headers are received | `true` |
1423
1513
  | `exception_controller` | Class or Module which identifies a custom exception controller class. Tracer provides improved error behavior when it can identify custom exception controllers. By default, without this option, it 'guesses' what a custom exception controller looks like. Providing this option aids this identification. | `nil` |
1514
+ | `job_service` | Service name used when tracing ActiveJob activity. | `<app_name>-active_job` |
1424
1515
  | `middleware` | Add the trace middleware to the Rails application. Set to `false` if you don't want the middleware to load. | `true` |
1425
1516
  | `middleware_names` | Enables any short-circuited middleware requests to display the middleware name as a resource for the trace. | `false` |
1426
1517
  | `service_name` | Service name used when tracing application requests (on the `rack` level) | `'<app_name>'` (inferred from your Rails application namespace) |
@@ -1431,7 +1522,6 @@ Where `options` is an optional `Hash` that accepts the following parameters:
1431
1522
 
1432
1523
  | MRI Versions | JRuby Versions | Rails Versions |
1433
1524
  | ------------- | -------------- | -------------- |
1434
- | 2.0 | | 3.0 - 3.2 |
1435
1525
  | 2.1 | | 3.0 - 4.2 |
1436
1526
  | 2.2 - 2.3 | | 3.0 - 5.2 |
1437
1527
  | 2.4 | | 4.2.8 - 5.2 |
@@ -2122,7 +2212,7 @@ For more details on how to activate distributed tracing for integrations, see th
2122
2212
  - [Rack](#rack)
2123
2213
  - [Rails](#rails)
2124
2214
  - [Sinatra](#sinatra)
2125
- - [http.rb](#http-rb)
2215
+ - [http.rb](#httprb)
2126
2216
  - [httpclient](#httpclient)
2127
2217
  - [httpx](#httpx)
2128
2218
 
@@ -2340,7 +2430,9 @@ Datadog.tracer.trace('my.operation') { logger.warn('This is a traced operation.'
2340
2430
 
2341
2431
  ### Configuring the transport layer
2342
2432
 
2343
- By default, the tracer submits trace data using `Net::HTTP` to `127.0.0.1:8126`, the default location for the Datadog trace agent process. However, the tracer can be configured to send its trace data to alternative destinations, or by alternative protocols.
2433
+ By default, the tracer submits trace data using the Unix socket `/var/run/datadog/apm.socket`, if one is created by the Agent. Otherwise, it connects via HTTP to `127.0.0.1:8126`, the default TCP location the Agent listens on.
2434
+
2435
+ However, the tracer can be configured to send its trace data to alternative destinations, or by alternative protocols.
2344
2436
 
2345
2437
  Some basic settings, such as hostname and port, can be configured using [tracer settings](#tracer-settings).
2346
2438
 
@@ -2366,7 +2458,7 @@ To use, first configure your trace agent to listen by Unix socket, then configur
2366
2458
  ```ruby
2367
2459
  Datadog.configure do |c|
2368
2460
  c.tracer.transport_options = proc { |t|
2369
- # Provide filepath to trace agent Unix socket
2461
+ # Provide local path to trace agent Unix socket
2370
2462
  t.adapter :unix, '/tmp/ddagent/trace.sock'
2371
2463
  }
2372
2464
  end
@@ -2410,7 +2502,7 @@ The tracer and its integrations can produce some additional metrics that can pro
2410
2502
  To configure your application for metrics collection:
2411
2503
 
2412
2504
  1. [Configure your Datadog agent for StatsD](https://docs.datadoghq.com/developers/dogstatsd/#setup)
2413
- 2. Add `gem 'dogstatsd-ruby', '~> 5.2'` to your Gemfile
2505
+ 2. Add `gem 'dogstatsd-ruby', '~> 5.3'` to your Gemfile
2414
2506
 
2415
2507
  #### For application runtime
2416
2508
 
@@ -2439,11 +2531,13 @@ See the [Dogstatsd documentation](https://www.rubydoc.info/github/DataDog/dogsta
2439
2531
 
2440
2532
  The stats are VM specific and will include:
2441
2533
 
2442
- | Name | Type | Description |
2443
- | -------------------------- | ------- | -------------------------------------------------------- |
2444
- | `runtime.ruby.class_count` | `gauge` | Number of classes in memory space. |
2445
- | `runtime.ruby.thread_count` | `gauge` | Number of threads. |
2446
- | `runtime.ruby.gc.*`. | `gauge` | Garbage collection statistics: collected from `GC.stat`. |
2534
+ | Name | Type | Description | Available on |
2535
+ | -------------------------- | ------- | -------------------------------------------------------- | ------------ |
2536
+ | `runtime.ruby.class_count` | `gauge` | Number of classes in memory space. | CRuby |
2537
+ | `runtime.ruby.gc.*` | `gauge` | Garbage collection statistics: collected from `GC.stat`. | All runtimes |
2538
+ | `runtime.ruby.thread_count` | `gauge` | Number of threads. | All runtimes |
2539
+ | `runtime.ruby.global_constant_state` | `gauge` | Global constant cache generation. | CRuby |
2540
+ | `runtime.ruby.global_method_state` | `gauge` | [Global method cache generation.](https://tenderlovemaking.com/2015/12/23/inline-caching-in-mri.html) | [CRuby < 3.0.0](https://docs.ruby-lang.org/en/3.0.0/NEWS_md.html#label-Implementation+improvements) |
2447
2541
 
2448
2542
  In addition, all metrics include the following tags:
2449
2543
 
@@ -2489,7 +2583,11 @@ However, additional instrumentation provided by Datadog can be activated alongsi
2489
2583
 
2490
2584
  **Setup**
2491
2585
 
2492
- To get started with profiling, follow the [Profiler Getting Started Guide](https://docs.datadoghq.com/tracing/profiler/getting_started/?code-lang=ruby).
2586
+ To get started with profiling, follow the [Enabling the Ruby Profiler](https://docs.datadoghq.com/tracing/profiler/enabling/ruby/) guide.
2587
+
2588
+ #### Troubleshooting
2589
+
2590
+ If you run into issues with profiling, please check the [Profiler Troubleshooting Guide](https://docs.datadoghq.com/tracing/profiler/profiler_troubleshooting/?code-lang=ruby).
2493
2591
 
2494
2592
  #### Profiling Resque jobs
2495
2593
 
@@ -11,7 +11,7 @@ Components below live inside <../lib/ddtrace/profiling>:
11
11
  * `Collectors::Stack`: Collects stack trace samples from Ruby threads for both CPU-time (if available) and wall-clock.
12
12
  Runs on its own background thread.
13
13
  * `Encoding::Profile`: Encodes gathered data into the pprof format.
14
- * `Events::Stack`, `Events::StackSample`, `Events::StackExceptionSample`: Entity classes used to represent stacks.
14
+ * `Events::Stack`, `Events::StackSample`: Entity classes used to represent stacks.
15
15
  * `Ext::CPU`: Monkey patches Ruby's `Thread` with our `Ext::CThread` to enable CPU-time profiling.
16
16
  * `Ext::CThread`: Extension used to enable CPU-time profiling via use of Pthread's `getcpuclockid`.
17
17
  * `Ext::Forking`: Monkey patches `Kernel#fork`, adding a `Kernel#at_fork` callback mechanism which is used to restore
@@ -20,6 +20,7 @@ Components below live inside <../lib/ddtrace/profiling>:
20
20
  * `Tasks::Setup`: Takes care of loading our extensions/monkey patches to handle fork() and CPU profiling.
21
21
  * `Transport::*` (in <../lib/ddtrace/profiling/transport>): Implements transmission of profiling payloads to the Datadog agent
22
22
  or backend.
23
+ * `TraceIdentifiers::*`: Used to retrieve trace id and span id from tracers, to be used to connect traces to profiles.
23
24
  * `BacktraceLocation`: Entity class used to represent an entry in a stack trace.
24
25
  * `Buffer`: Bounded buffer used to store profiling events.
25
26
  * `Exporter`: Writes profiling data to a given transport.
@@ -41,22 +42,14 @@ flow:
41
42
  4. The `Setup` task activates our extensions
42
43
  * `Datadog::Profiling::Ext::Forking`
43
44
  * `Datadog::Profiling::Ext::CPU`
44
- 5. Still inside `Datadog::Components`, the `build_profiler` method then creates and wires up the Profiler:
45
- ```ruby
46
- recorder = build_profiler_recorder(settings)
47
- collectors = build_profiler_collectors(settings, recorder)
48
- exporters = build_profiler_exporters(settings)
49
- scheduler = build_profiler_scheduler(settings, recorder, exporters)
50
-
51
- Datadog::Profiler.new(collectors, scheduler)
52
- ```
45
+ 5. Still inside `Datadog::Components`, the `build_profiler` method then creates and wires up the Profiler as such:
53
46
  ```asciiflow
54
47
  +------------+
55
48
  | Profiler |
56
- +-+--------+-+
57
- | |
58
- v v
59
- +---------+--+ +--+--------+
49
+ +-+-------+--+
50
+ | |
51
+ v v
52
+ +---------+--+ +-+---------+
60
53
  | Collectors | | Scheduler |
61
54
  +---------+--+ +-+-------+-+
62
55
  | | |
@@ -86,3 +79,29 @@ takes care of encoding the data and reporting it to the datadog agent (or to the
86
79
  ## How CPU-time profiling works
87
80
 
88
81
  **TODO**: Document our pthread-based approach to getting CPU-time for threads.
82
+
83
+ ## How linking of traces to profiles works
84
+
85
+ The [code hotspots feature](https://docs.datadoghq.com/tracing/profiler/connect_traces_and_profiles) allows users to start
86
+ from a trace and then to investigate the profile that corresponds to that trace.
87
+
88
+ This works in two steps:
89
+ 1. Linking a trace to the profile that was gathered while it executed
90
+ 2. Enabling the filtering of a profile to contain only the samples relating to a given trace/span
91
+
92
+ To link a trace to a profile, we must ensure that both have the same `runtime-id` tag.
93
+ This tag is in `Datadog::Runtime::Identity.id` and is automatically added by both the tracer and the profiler to reported
94
+ traces/profiles.
95
+
96
+ The profiler backend links a trace covering a given time interval to the profiles covering the same time interval,
97
+ whenever they share the same `runtime-id`.
98
+
99
+ To further enable filtering of a profile to show only samples related to a given trace/span, each sample taken by the
100
+ profiler is tagged with the `local root span id` and `span id` for the given trace/span.
101
+
102
+ This is done using the `Datadog::Profiling::TraceIdentifiers::Helper` that retrieves a `root_span_id` and `span_id`, if
103
+ available, from the supported tracers. This helper is called by the `Collectors::Stack` during sampling.
104
+
105
+ Note that if a given trace executes too fast, it's possible that the profiler will not contain any samples for that
106
+ specific trace. Nevertheless, the linking still works and is useful, as it allows users to explore what was going on their
107
+ profile at that time, even if they can't filter down to the specific request.
@@ -0,0 +1,86 @@
1
+ # Profiling Native Extension Design
2
+
3
+ The profiling native extension is used to implement features which are expensive (in terms of resources) or otherwise
4
+ impossible to implement using Ruby code.
5
+
6
+ This extension is quite coupled with MRI Ruby ("C Ruby") internals, and is not intended to support other rubies such as
7
+ JRuby or TruffleRuby. When below we say "Ruby", read it as "MRI Ruby".
8
+
9
+ ## Disabling
10
+
11
+ The profiling native extension can be disabled by setting `DD_PROFILING_NO_EXTENSION=true` when installing or running
12
+ the gem. Setting `DD_PROFILING_NO_EXTENSION` at installation time skips compilation of the extension entirely.
13
+
14
+ (If you're a customer and needed to use this, please tell us why on <https://github.com/DataDog/dd-trace-rb/issues/new>.)
15
+
16
+ Currently the profiler can still "limp along" when the native extension is disabled, but the plan is to require it
17
+ in future releases -- e.g. disabling the extension will disable profiling entirely.
18
+
19
+ ## Safety
20
+
21
+ The profiling native extension is (and must always be) designed to **not cause failures** during gem installation, even
22
+ if some features, Ruby versions, or operating systems are not supported.
23
+
24
+ E.g. the extension must cleanly build on Ruby 2.1 (or the oldest Ruby version we support at the time) on Windows,
25
+ even if at run time it will effectively do nothing for such a setup.
26
+
27
+ We have a CI setup to help validate this, but this is really important to keep in mind when adding to or changing the
28
+ existing codebase.
29
+
30
+ ## Usage of private VM headers
31
+
32
+ To implement some of the features below, we sometimes require access to private Ruby header files (that describe VM
33
+ internal types, structures and functions).
34
+
35
+ Because these private header files are not included in regular Ruby installations, we have two different workarounds:
36
+
37
+ 1. for Ruby versions >= 2.6 we make use use the Ruby private MJIT header
38
+ 2. for Ruby versions < 2.6 (legacy Rubies) we make use of the `debase-ruby_core_source` gem
39
+
40
+ Functions which make use of these headers are defined in the <private_vm_api_acccess.c> file.
41
+
42
+ **Important Note**: Our medium/long-term plan is to stop relying on all private Ruby headers, and instead request and
43
+ contribute upstream changes so that they become official public VM APIs.
44
+
45
+ ### Approach 1: Using the Ruby private MJIT header
46
+
47
+ Ruby versions >= 2.6 introduced a JIT compiler called MJIT. This compiler does not directly generate machine code;
48
+ instead it generates C code and uses the system C compiler to turn it into machine code.
49
+
50
+ The generated C code `#include`s a private header -- which we reference as "the MJIT header" everywhere.
51
+ The MJIT header gets shipped with all MJIT-enabled Rubies and includes the layout of many internal VM structures;
52
+ and of course the intention is that it is only used by the Ruby MJIT compiler.
53
+
54
+ This header is placed inside the `include/` directory in a Ruby installation, and is named for that specific Ruby
55
+ version. e.g. `rb_mjit_min_header-2.7.4.h`.
56
+
57
+ ### Approach 2: Using the `debase-ruby_core_source` gem
58
+
59
+ The [`debase-ruby_core_source`](https://github.com/ruby-debug/debase-ruby_core_source) contains almost no code;
60
+ instead, it just contains per-Ruby-version folders with the private VM headers (`.h`) files for that version.
61
+
62
+ Thus, even though a regular Ruby installation does not include these files, we can access the copy inside this gem.
63
+
64
+ ## Feature: Getting thread CPU-time clock_ids
65
+
66
+ * **OS support**: Linux
67
+ * **Ruby support**: 2.6+
68
+
69
+ To enable CPU-time profiling, we use the `pthread_getcpuclockid(pthread_t thread, clockid_t *clockid)` C function to
70
+ obtain a `clockid_t` that can then be used with the `Process.clock_gettime` method (or directly with the
71
+ `clock_gettime()` C function).
72
+
73
+ The challenge with using `pthread_getcpuclockid()` is that we need to get the `pthread_t` for a given Ruby `Thread`
74
+ object. We previously did this with a weird combination of monkey patching and `pthread_self()` (effectively patching
75
+ every `Thread` to run `pthread_self()` at initialization time and stash that value somewhere), but this had a number
76
+ of downsides.
77
+
78
+ The approach we use in the profiling native extension is to reach inside the internal structure of the `Thread` object,
79
+ and extract the `pthread_t` that Ruby itself keeps, but does not expose. This is implemented in the `pthread_id_for()`
80
+ function in `private_vm_api_acccess.c`. Thus, using this trick we can at any point in execution go from a `Thread`
81
+ object into the `clockid_t` that we need.
82
+
83
+ Note that `pthread_getcpuclockid()` is not available on macOS (nor, obviously, on Windows), and hence this feature
84
+ is currently Linux-specific. Thus, in the <clock_id_from_pthread.c> file we implement the feature for supported Ruby
85
+ setups but if something is missing we instead compile in <clock_id_noop.c> that includes a no-op implementation of the
86
+ feature.
@@ -0,0 +1,4 @@
1
+ #pragma once
2
+
3
+ void self_test_clock_id();
4
+ VALUE clock_id_for(VALUE self, VALUE thread);
@@ -0,0 +1,52 @@
1
+ #include "extconf.h"
2
+
3
+ // This file is only compiled on systems where pthread_getcpuclockid() is available;
4
+ // Otherwise we compile clock_id_noop.c
5
+ #ifdef HAVE_PTHREAD_GETCPUCLOCKID
6
+
7
+ #include <pthread.h>
8
+ #include <time.h>
9
+ #include <errno.h>
10
+
11
+ #include <ruby.h>
12
+
13
+ #ifdef RUBY_2_1_WORKAROUND
14
+ #include <thread_native.h>
15
+ #else
16
+ #include <ruby/thread_native.h>
17
+ #endif
18
+
19
+ #include "private_vm_api_access.h"
20
+
21
+ #include "clock_id.h"
22
+
23
+ // Validate that our home-cooked pthread_id_for() matches pthread_self() for the current thread
24
+ void self_test_clock_id() {
25
+ rb_nativethread_id_t expected_pthread_id = pthread_self();
26
+ rb_nativethread_id_t actual_pthread_id = pthread_id_for(rb_thread_current());
27
+
28
+ if (expected_pthread_id != actual_pthread_id) rb_raise(rb_eRuntimeError, "pthread_id_for() self-test failed");
29
+ }
30
+
31
+ VALUE clock_id_for(VALUE self, VALUE thread) {
32
+ rb_nativethread_id_t thread_id = pthread_id_for(thread);
33
+
34
+ clockid_t clock_id;
35
+ int error = pthread_getcpuclockid(thread_id, &clock_id);
36
+
37
+ if (error == 0) {
38
+ return CLOCKID2NUM(clock_id);
39
+ } else {
40
+ switch(error) {
41
+ // The more specific error messages are based on the pthread_getcpuclockid(3) man page
42
+ case ENOENT:
43
+ rb_exc_raise(rb_syserr_new(error, "Failed to get clock_id for given thread: Per-thread CPU time clocks are not supported by the system."));
44
+ case ESRCH:
45
+ rb_exc_raise(rb_syserr_new(error, "Failed to get clock_id for given thread: No thread could be found."));
46
+ default:
47
+ rb_exc_raise(rb_syserr_new(error, "Failed to get clock_id for given thread"));
48
+ }
49
+ }
50
+ }
51
+
52
+ #endif
@@ -0,0 +1,14 @@
1
+ #include "extconf.h"
2
+
3
+ // This file is the dual of clock_id_from_pthread.c for systems where that info
4
+ // is not available.
5
+ #ifndef HAVE_PTHREAD_GETCPUCLOCKID
6
+
7
+ #include <ruby.h>
8
+
9
+ #include "clock_id.h"
10
+
11
+ void self_test_clock_id() { } // Nothing to check
12
+ VALUE clock_id_for(VALUE self, VALUE thread) { return Qnil; } // Nothing to return
13
+
14
+ #endif