ddtrace 0.51.1 → 0.54.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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
@@ -1,3 +1,6 @@
1
+ # typed: true
2
+
3
+ require 'ddtrace/profiling/native_extension'
1
4
  require 'ddtrace/profiling/backtrace_location'
2
5
  require 'ddtrace/profiling/events/stack'
3
6
  require 'ddtrace/utils/only_once'
@@ -11,36 +14,51 @@ module Datadog
11
14
  # Collects stack trace samples from Ruby threads for both CPU-time (if available) and wall-clock.
12
15
  # Runs on its own background thread.
13
16
  #
14
- # rubocop:disable Metrics/ClassLength
15
- class Stack < Worker
17
+ class Stack < Worker # rubocop:disable Metrics/ClassLength
16
18
  include Workers::Polling
17
19
 
18
20
  DEFAULT_MAX_TIME_USAGE_PCT = 2.0
19
21
  MIN_INTERVAL = 0.01
20
22
  THREAD_LAST_CPU_TIME_KEY = :datadog_profiler_last_cpu_time
23
+ THREAD_LAST_WALL_CLOCK_KEY = :datadog_profiler_last_wall_clock
24
+ SYNTHETIC_STACK_IN_NATIVE_CODE = [BacktraceLocation.new('', 0, 'In native code').freeze].freeze
25
+
26
+ # This default was picked based on the current sampling performance and on expected concurrency on an average
27
+ # Ruby MRI application. Lowering this optimizes for latency (less impact each time we sample), and raising
28
+ # optimizes for coverage (less chance to miss what a given thread is doing).
29
+ DEFAULT_MAX_THREADS_SAMPLED = 16
21
30
 
22
31
  attr_reader \
23
32
  :recorder,
24
33
  :max_frames,
34
+ :trace_identifiers_helper,
25
35
  :ignore_thread,
26
36
  :max_time_usage_pct,
27
- :thread_api
37
+ :thread_api,
38
+ :cpu_time_provider
28
39
 
29
40
  def initialize(
30
41
  recorder,
31
42
  max_frames:,
43
+ trace_identifiers_helper:, # Usually an instance of Datadog::Profiling::TraceIdentifiers::Helper
32
44
  ignore_thread: nil,
33
45
  max_time_usage_pct: DEFAULT_MAX_TIME_USAGE_PCT,
46
+ max_threads_sampled: DEFAULT_MAX_THREADS_SAMPLED,
34
47
  thread_api: Thread,
48
+ cpu_time_provider: Datadog::Profiling::NativeExtension,
35
49
  fork_policy: Workers::Async::Thread::FORK_POLICY_RESTART, # Restart in forks by default
36
50
  interval: MIN_INTERVAL,
37
51
  enabled: true
38
52
  )
39
53
  @recorder = recorder
40
54
  @max_frames = max_frames
55
+ @trace_identifiers_helper = trace_identifiers_helper
41
56
  @ignore_thread = ignore_thread
42
57
  @max_time_usage_pct = max_time_usage_pct
58
+ @max_threads_sampled = max_threads_sampled
43
59
  @thread_api = thread_api
60
+ # Only set the provider if it's able to work in the current Ruby/OS combo
61
+ @cpu_time_provider = cpu_time_provider unless cpu_time_provider.cpu_time_ns_for(thread_api.current).nil?
44
62
 
45
63
  # Workers::Async::Thread settings
46
64
  self.fork_policy = fork_policy
@@ -51,16 +69,17 @@ module Datadog
51
69
  # Workers::Polling settings
52
70
  self.enabled = enabled
53
71
 
54
- @warn_about_missing_cpu_time_instrumentation_only_once = Datadog::Utils::OnlyOnce.new
55
-
56
72
  # Cache this proc, since it's pretty expensive to keep recreating it
57
73
  @build_backtrace_location = method(:build_backtrace_location).to_proc
58
74
  # Cache this buffer, since it's pretty expensive to keep accessing it
59
75
  @stack_sample_event_recorder = recorder[Events::StackSample]
76
+ # See below for details on why this is needed
77
+ @needs_process_waiter_workaround =
78
+ Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.3') &&
79
+ Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.7')
60
80
  end
61
81
 
62
82
  def start
63
- @last_wall_time = Datadog::Utils::Time.get_time
64
83
  reset_cpu_time_tracking
65
84
  perform
66
85
  end
@@ -69,10 +88,6 @@ module Datadog
69
88
  collect_and_wait
70
89
  end
71
90
 
72
- def loop_back_off?
73
- false
74
- end
75
-
76
91
  def collect_and_wait
77
92
  run_time = Datadog::Utils::Time.measure do
78
93
  collect_events
@@ -84,24 +99,14 @@ module Datadog
84
99
 
85
100
  def collect_events
86
101
  events = []
87
-
88
- # Compute wall time interval
89
- current_wall_time = Datadog::Utils::Time.get_time
90
- last_wall_time = if instance_variable_defined?(:@last_wall_time)
91
- @last_wall_time
92
- else
93
- current_wall_time
94
- end
95
-
96
- wall_time_interval_ns = ((current_wall_time - last_wall_time).round(9) * 1e9).to_i
97
- @last_wall_time = current_wall_time
102
+ current_wall_time_ns = get_current_wall_time_timestamp_ns
98
103
 
99
104
  # Collect backtraces from each thread
100
- thread_api.list.each do |thread|
105
+ threads_to_sample.each do |thread|
101
106
  next unless thread.alive?
102
107
  next if ignore_thread.is_a?(Proc) && ignore_thread.call(thread)
103
108
 
104
- event = collect_thread_event(thread, wall_time_interval_ns)
109
+ event = collect_thread_event(thread, current_wall_time_ns)
105
110
  events << event unless event.nil?
106
111
  end
107
112
 
@@ -111,10 +116,30 @@ module Datadog
111
116
  events
112
117
  end
113
118
 
114
- def collect_thread_event(thread, wall_time_interval_ns)
119
+ def collect_thread_event(thread, current_wall_time_ns)
115
120
  locations = thread.backtrace_locations
116
121
  return if locations.nil?
117
122
 
123
+ # Having empty locations means that the thread is alive, but we don't know what it's doing:
124
+ #
125
+ # 1. It can be starting up
126
+ # ```
127
+ # > Thread.new { sleep }.backtrace
128
+ # => [] # <-- note the thread hasn't actually started running sleep yet, we got there first
129
+ # ```
130
+ # 2. It can be running native code
131
+ # ```
132
+ # > t = Process.detach(fork { sleep })
133
+ # => #<Process::Waiter:0x00007ffe7285f7a0 run>
134
+ # > t.backtrace
135
+ # => [] # <-- this can happen even minutes later, e.g. it's not a race as in 1.
136
+ # ```
137
+ # This effect has been observed in threads created by the Iodine web server and the ffi gem
138
+ #
139
+ # To give customers visibility into these threads, we replace the empty stack with one containing a
140
+ # synthetic placeholder frame, so that these threads are properly represented in the UX.
141
+ locations = SYNTHETIC_STACK_IN_NATIVE_CODE if locations.empty?
142
+
118
143
  # Get actual stack size then trim the stack
119
144
  stack_size = locations.length
120
145
  locations = locations[0..(max_frames - 1)]
@@ -122,52 +147,33 @@ module Datadog
122
147
  # Convert backtrace locations into structs
123
148
  locations = convert_backtrace_locations(locations)
124
149
 
125
- thread_id = thread.respond_to?(:pthread_thread_id) ? thread.pthread_thread_id : thread.object_id
126
- trace_id, span_id = get_trace_identifiers(thread)
150
+ thread_id = thread.object_id
151
+ root_span_id, span_id, trace_resource = trace_identifiers_helper.trace_identifiers_for(thread)
127
152
  cpu_time = get_cpu_time_interval!(thread)
153
+ wall_time_interval_ns =
154
+ get_elapsed_since_last_sample_and_set_value(thread, THREAD_LAST_WALL_CLOCK_KEY, current_wall_time_ns)
128
155
 
129
156
  Events::StackSample.new(
130
157
  nil,
131
158
  locations,
132
159
  stack_size,
133
160
  thread_id,
134
- trace_id,
161
+ root_span_id,
135
162
  span_id,
163
+ trace_resource,
136
164
  cpu_time,
137
165
  wall_time_interval_ns
138
166
  )
139
167
  end
140
168
 
141
169
  def get_cpu_time_interval!(thread)
142
- # Return if we can't get the current CPU time
143
- unless thread.respond_to?(:cpu_time_instrumentation_installed?) && thread.cpu_time_instrumentation_installed?
144
- warn_about_missing_cpu_time_instrumentation(thread)
145
- return
146
- end
170
+ return unless cpu_time_provider
147
171
 
148
- current_cpu_time_ns = thread.cpu_time(:nanosecond)
172
+ current_cpu_time_ns = cpu_time_provider.cpu_time_ns_for(thread)
149
173
 
150
- # NOTE: This can still be nil even when all of the checks above passed because of a race: there's a bit of
151
- # initialization that needs to be done by the thread itself, and it's possible for us to try to sample
152
- # *before* the thread had time to finish the initialization
153
174
  return unless current_cpu_time_ns
154
175
 
155
- last_cpu_time_ns = (thread[THREAD_LAST_CPU_TIME_KEY] || current_cpu_time_ns)
156
- interval = current_cpu_time_ns - last_cpu_time_ns
157
-
158
- # Update CPU time for thread
159
- thread[THREAD_LAST_CPU_TIME_KEY] = current_cpu_time_ns
160
-
161
- # Return interval
162
- interval
163
- end
164
-
165
- def get_trace_identifiers(thread)
166
- return unless thread.is_a?(::Thread)
167
- return unless Datadog.respond_to?(:tracer) && Datadog.tracer.respond_to?(:active_correlation)
168
-
169
- identifier = Datadog.tracer.active_correlation(thread)
170
- [identifier.trace_id, identifier.span_id]
176
+ get_elapsed_since_last_sample_and_set_value(thread, THREAD_LAST_CPU_TIME_KEY, current_cpu_time_ns)
171
177
  end
172
178
 
173
179
  def compute_wait_time(used_time)
@@ -213,38 +219,11 @@ module Datadog
213
219
 
214
220
  private
215
221
 
216
- def warn_about_missing_cpu_time_instrumentation(thread)
217
- @warn_about_missing_cpu_time_instrumentation_only_once.run do
218
- # Is the profiler thread instrumented? If it is, then we know instrumentation is available, but seems to be
219
- # missing on this thread we just found.
220
- #
221
- # As far as we know, it can be missing due to one the following:
222
- #
223
- # a) The thread was started before we installed our instrumentation.
224
- # In this case, the fix is to make sure ddtrace gets loaded before any other parts of the application.
225
- #
226
- # b) The thread was started using the Ruby native APIs (e.g. from a C extension such as ffi).
227
- # Known cases right now that trigger this are the ethon/typhoeus gems.
228
- # We currently have no solution for this case; these threads will always be missing our CPU instrumentation.
229
- #
230
- # c) The thread was started with `Thread.start`/`Thread.fork` and hasn't yet enabled the instrumentation.
231
- # When threads are started using these APIs, there's a small time window during which the thread has started
232
- # but our code to apply the instrumentation hasn't run yet; in these cases it's just a matter of allowing
233
- # it to run and our instrumentation to be applied.
234
- #
235
- if thread_api.current.respond_to?(:cpu_time) && thread_api.current.cpu_time
236
- Datadog.logger.debug(
237
- "Thread ('#{thread}') is missing profiling instrumentation; other threads should be unaffected"
238
- )
239
- end
240
- end
241
- end
242
-
243
222
  # If the profiler is started for a while, stopped and then restarted OR whenever the process forks, we need to
244
- # clean up the per-thread cpu time counters we keep, so that the first sample after starting doesn't end up with:
223
+ # clean up any leftover per-thread counters, so that the first sample after starting doesn't end up with:
245
224
  #
246
225
  # a) negative time: At least on my test docker container, and on the reliability environment, after the process
247
- # forks, the clock reference changes and (old cpu time - new cpu time) can be < 0
226
+ # forks, the cpu time reference changes and (old cpu time - new cpu time) can be < 0
248
227
  #
249
228
  # b) large amount of time: if the profiler was started, then stopped for some amount of time, and then
250
229
  # restarted, we don't want the first sample to be "blamed" for multiple minutes of CPU time
@@ -252,11 +231,67 @@ module Datadog
252
231
  # By resetting the last cpu time seen, we start with a clean slate every time we start the stack collector.
253
232
  def reset_cpu_time_tracking
254
233
  thread_api.list.each do |thread|
255
- thread[THREAD_LAST_CPU_TIME_KEY] = nil if thread[THREAD_LAST_CPU_TIME_KEY]
234
+ # See below for details on why this is needed
235
+ next if @needs_process_waiter_workaround && thread.is_a?(::Process::Waiter)
236
+
237
+ thread.thread_variable_set(THREAD_LAST_CPU_TIME_KEY, nil)
238
+ thread.thread_variable_set(THREAD_LAST_WALL_CLOCK_KEY, nil)
239
+ end
240
+ end
241
+
242
+ def get_elapsed_since_last_sample_and_set_value(thread, key, current_value)
243
+ # Process::Waiter crash workaround:
244
+ #
245
+ # This is a workaround for a Ruby VM segfault (usually something like
246
+ # "[BUG] Segmentation fault at 0x0000000000000008") in the affected Ruby versions.
247
+ # See https://bugs.ruby-lang.org/issues/17807 for details.
248
+ #
249
+ # In those Ruby versions, there's a very special subclass of `Thread` called `Process::Waiter` that causes VM
250
+ # crashes whenever something tries to read its instance or thread variables. This subclass of thread only
251
+ # shows up when the `Process.detach` API gets used.
252
+ # In the specs you'll find crash regression tests that include a way of reproducing it.
253
+ #
254
+ # As workaround for now we just skip it for the affected Rubies
255
+ return 0 if @needs_process_waiter_workaround && thread.is_a?(::Process::Waiter)
256
+
257
+ last_value = thread.thread_variable_get(key) || current_value
258
+ thread.thread_variable_set(key, current_value)
259
+
260
+ current_value - last_value
261
+ end
262
+
263
+ # Whenever there are more than max_threads_sampled active, we only sample a subset of them.
264
+ # We do this to avoid impacting the latency of the service being profiled. We want to avoid doing
265
+ # a big burst of work all at once (sample everything), and instead do a little work each time
266
+ # (sample a bit by bit).
267
+ #
268
+ # Because we pick the threads to sample randomly, we'll eventually sample all threads -- just not at once.
269
+ # Notice also that this will interact with our dynamic sampling mechanism -- if samples are faster, we take
270
+ # them more often, if they are slower, we take them less often -- which again means that over a longer period
271
+ # we should take sample roughly the same samples.
272
+ #
273
+ # One downside of this approach is that if there really are many threads, the resulting wall clock times
274
+ # in a one minute profile may "drift" around the 60 second mark, e.g. maybe we only sampled a thread once per
275
+ # second and only 59 times, so we'll report 59s, but on the next report we'll include the missing one, so
276
+ # then the result will be 61s. I've observed 60 +- 1.68 secs for an app with ~65 threads, given the
277
+ # default maximum of 16 threads. This seems a reasonable enough margin of error given the improvement to
278
+ # latency (especially on such a large application! -> even bigger latency impact if we tried to sample all
279
+ # threads).
280
+ #
281
+ def threads_to_sample
282
+ all_threads = thread_api.list
283
+
284
+ if all_threads.size > @max_threads_sampled
285
+ all_threads.sample(@max_threads_sampled)
286
+ else
287
+ all_threads
256
288
  end
257
289
  end
290
+
291
+ def get_current_wall_time_timestamp_ns
292
+ Datadog::Utils::Time.get_time(:nanosecond)
293
+ end
258
294
  end
259
- # rubocop:enable Metrics/ClassLength
260
295
  end
261
296
  end
262
297
  end
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  require 'set'
2
3
  require 'time'
3
4
 
@@ -23,12 +24,20 @@ module Datadog
23
24
  flush.event_groups.each { |event_group| template.add_events!(event_group.event_class, event_group.events) }
24
25
 
25
26
  Datadog.logger.debug do
27
+ max_events = Datadog.configuration.profiling.advanced.max_events
28
+ events_sampled =
29
+ if flush.event_count == max_events
30
+ 'max events limit hit, events were sampled [profile will be biased], '
31
+ else
32
+ ''
33
+ end
34
+
26
35
  "Encoding profile covering #{flush.start.iso8601} to #{flush.finish.iso8601}, " \
27
- "events: #{flush.event_count} (#{template.debug_statistics})"
36
+ "events: #{flush.event_count} (#{events_sampled}#{template.debug_statistics})"
28
37
  end
29
38
 
30
39
  # Build the profile and encode it
31
- template.to_pprof
40
+ template.to_pprof(start: flush.start, finish: flush.finish)
32
41
  end
33
42
  end
34
43
  end
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  module Datadog
2
3
  module Profiling
3
4
  # Describes a sample of some data obtained from the runtime.
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  require 'ddtrace/profiling/event'
2
3
 
3
4
  module Datadog
@@ -6,37 +7,40 @@ module Datadog
6
7
  # Describes a stack profiling event
7
8
  class Stack < Event
8
9
  attr_reader \
9
- :frames,
10
10
  :hash,
11
- :span_id,
12
- :thread_id,
11
+ :frames,
13
12
  :total_frame_count,
14
- :trace_id
13
+ :thread_id,
14
+ :root_span_id,
15
+ :span_id,
16
+ :trace_resource
15
17
 
16
18
  def initialize(
17
19
  timestamp,
18
20
  frames,
19
21
  total_frame_count,
20
22
  thread_id,
21
- trace_id,
22
- span_id
23
+ root_span_id,
24
+ span_id,
25
+ trace_resource
23
26
  )
24
27
  super(timestamp)
25
28
 
26
29
  @frames = frames
27
30
  @total_frame_count = total_frame_count
28
31
  @thread_id = thread_id
29
- @trace_id = trace_id
32
+ @root_span_id = root_span_id
30
33
  @span_id = span_id
34
+ @trace_resource = trace_resource
31
35
 
32
36
  @hash = [
33
37
  thread_id,
34
- trace_id,
38
+ root_span_id,
35
39
  span_id,
36
- [
37
- frames.collect(&:hash),
38
- total_frame_count
39
- ]
40
+ # trace_resource is deliberately not included -- events that share the same (root_span_id, span_id) refer
41
+ # to the same trace
42
+ frames.collect(&:hash),
43
+ total_frame_count
40
44
  ].hash
41
45
  end
42
46
  end
@@ -52,8 +56,9 @@ module Datadog
52
56
  frames,
53
57
  total_frame_count,
54
58
  thread_id,
55
- trace_id,
59
+ root_span_id,
56
60
  span_id,
61
+ trace_resource,
57
62
  cpu_time_interval_ns,
58
63
  wall_time_interval_ns
59
64
  )
@@ -62,41 +67,15 @@ module Datadog
62
67
  frames,
63
68
  total_frame_count,
64
69
  thread_id,
65
- trace_id,
66
- span_id
70
+ root_span_id,
71
+ span_id,
72
+ trace_resource
67
73
  )
68
74
 
69
75
  @cpu_time_interval_ns = cpu_time_interval_ns
70
76
  @wall_time_interval_ns = wall_time_interval_ns
71
77
  end
72
78
  end
73
-
74
- # Describes a stack sample with exception
75
- class StackExceptionSample < Stack
76
- attr_reader \
77
- :exception
78
-
79
- def initialize(
80
- timestamp,
81
- frames,
82
- total_frame_count,
83
- thread_id,
84
- trace_id,
85
- span_id,
86
- exception
87
- )
88
- super(
89
- timestamp,
90
- frames,
91
- total_frame_count,
92
- thread_id,
93
- trace_id,
94
- span_id
95
- )
96
-
97
- @exception = exception
98
- end
99
- end
100
79
  end
101
80
  end
102
81
  end
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  require 'ddtrace/profiling/transport/io/client'
2
3
 
3
4
  module Datadog
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  module Datadog
2
3
  module Profiling
3
4
  module Ext
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  require 'datadog/core/environment/identity'
2
3
  require 'datadog/core/environment/socket'
3
4
 
@@ -0,0 +1,40 @@
1
+ # typed: true
2
+ module Datadog
3
+ module Profiling
4
+ # This module contains classes and methods which are implemented using native code in the
5
+ # ext/ddtrace_profiling_native_extension folder, as well as some Ruby-level utilities that don't make sense to
6
+ # write using C
7
+ module NativeExtension
8
+ private_class_method def self.working?
9
+ native_working?
10
+ end
11
+
12
+ unless singleton_class.private_method_defined?(:native_working?)
13
+ private_class_method def self.native_working?
14
+ false
15
+ end
16
+ end
17
+
18
+ unless singleton_class.method_defined?(:clock_id_for)
19
+ def self.clock_id_for(_)
20
+ nil
21
+ end
22
+ end
23
+
24
+ def self.cpu_time_ns_for(thread)
25
+ clock_id =
26
+ begin
27
+ clock_id_for(thread)
28
+ rescue Errno::ESRCH
29
+ nil
30
+ end
31
+
32
+ begin
33
+ ::Process.clock_gettime(clock_id, :nanosecond) if clock_id
34
+ rescue Errno::EINVAL
35
+ nil
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -1,8 +1,10 @@
1
+ # typed: true
1
2
  # frozen_string_literal: true
2
3
 
3
4
  require 'ddtrace/profiling/flush'
4
5
  require 'ddtrace/profiling/pprof/message_set'
5
6
  require 'ddtrace/profiling/pprof/string_table'
7
+ require 'ddtrace/utils/time'
6
8
 
7
9
  module Datadog
8
10
  module Profiling
@@ -46,14 +48,19 @@ module Datadog
46
48
  Perftools::Profiles::Profile.encode(profile).force_encoding(DEFAULT_ENCODING)
47
49
  end
48
50
 
49
- def build_profile
51
+ def build_profile(start:, finish:)
52
+ start_ns = Datadog::Utils::Time.as_utc_epoch_ns(start)
53
+ finish_ns = Datadog::Utils::Time.as_utc_epoch_ns(finish)
54
+
50
55
  Perftools::Profiles::Profile.new(
51
56
  sample_type: @sample_types.messages,
52
57
  sample: @samples,
53
58
  mapping: @mappings.messages,
54
59
  location: @locations.values,
55
60
  function: @functions.messages,
56
- string_table: @string_table.strings
61
+ string_table: @string_table.strings,
62
+ time_nanos: start_ns,
63
+ duration_nanos: finish_ns - start_ns,
57
64
  )
58
65
  end
59
66
 
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  require 'ddtrace/ext/profiling'
2
3
 
3
4
  module Datadog
@@ -24,20 +25,19 @@ module Datadog
24
25
  # [key, EventGroup]
25
26
  event_groups = {}
26
27
 
28
+ # Aggregate each event into a group
29
+ # with identical properties, but different values.
27
30
  events.each do |event|
28
31
  key = yield(event)
29
- values = build_sample_values(event)
32
+ values = build_event_values(event)
30
33
 
31
34
  unless key.nil?
32
35
  if event_groups.key?(key)
33
- # Update values for group
34
- group_values = event_groups[key].values
35
- group_values.each_with_index do |group_value, i|
36
- group_values[i] = group_value + values[i]
37
- end
36
+ # Update existing group from event
37
+ update_group(event_groups[key], event, values)
38
38
  else
39
39
  # Add new group
40
- event_groups[key] = EventGroup.new(event, values)
40
+ event_groups[key] = new_group(event, values)
41
41
  end
42
42
  end
43
43
  end
@@ -56,7 +56,7 @@ module Datadog
56
56
  index
57
57
  end
58
58
 
59
- def build_sample_values(stack_sample)
59
+ def build_event_values(event)
60
60
  # Build a value array that matches the length of the sample types
61
61
  # Populate all values with "no value" by default
62
62
  Array.new(@sample_type_mappings.length, Datadog::Ext::Profiling::Pprof::SAMPLE_VALUE_NO_VALUE)
@@ -68,7 +68,7 @@ module Datadog
68
68
 
69
69
  # Represents a grouped event
70
70
  # 'sample' is an example event object from the group.
71
- # 'values' is the the summation of the group's sample values
71
+ # 'values' is the summation of the group's sample values
72
72
  EventGroup = Struct.new(:sample, :values)
73
73
 
74
74
  # Error when the mapping of a sample type to value index is unknown
@@ -83,6 +83,20 @@ module Datadog
83
83
  "Mapping for sample value type '#{type}' to index is unknown."
84
84
  end
85
85
  end
86
+
87
+ protected
88
+
89
+ def new_group(event, values)
90
+ EventGroup.new(event, values)
91
+ end
92
+
93
+ def update_group(event_group, event, values)
94
+ # Update values for group
95
+ group_values = event_group.values
96
+ group_values.each_with_index do |group_value, i|
97
+ group_values[i] = group_value + values[i]
98
+ end
99
+ end
86
100
  end
87
101
  end
88
102
  end
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  require 'ddtrace/utils/object_set'
2
3
 
3
4
  module Datadog
@@ -5,7 +6,9 @@ module Datadog
5
6
  module Pprof
6
7
  # Acts as a unique dictionary of protobuf messages
7
8
  class MessageSet < Utils::ObjectSet
8
- alias_method :messages, :objects
9
+ def messages
10
+ objects
11
+ end
9
12
  end
10
13
  end
11
14
  end
@@ -1,10 +1,11 @@
1
+ # typed: true
1
2
  module Datadog
2
3
  module Profiling
3
4
  module Pprof
4
5
  # Pprof output data.
5
6
  # Includes encoded data and list of types.
6
7
  Payload = Struct.new(:data, :types) do
7
- def initialize(*args)
8
+ def initialize(data, types)
8
9
  super
9
10
  self.types = types || []
10
11
  end
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  # Generated by the protocol buffer compiler. DO NOT EDIT!
2
3
  # source: lib/ddtrace/profiling/pprof/pprof.proto
3
4