ddtrace 0.49.0 → 0.52.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1088) hide show
  1. checksums.yaml +4 -4
  2. data/.editorconfig +22 -0
  3. data/.gitignore +7 -2
  4. data/CHANGELOG.md +178 -0
  5. data/CONTRIBUTING.md +1 -5
  6. data/ddtrace.gemspec +11 -2
  7. data/docs/DevelopmentGuide.md +15 -0
  8. data/docs/GettingStarted.md +65 -12
  9. data/docs/ProfilingDevelopment.md +33 -14
  10. data/ext/ddtrace_profiling_native_extension/extconf.rb +28 -0
  11. data/ext/ddtrace_profiling_native_extension/profiling.c +17 -0
  12. data/lib/datadog/ci.rb +17 -0
  13. data/lib/datadog/ci/configuration/components.rb +31 -0
  14. data/lib/datadog/ci/configuration/settings.rb +37 -0
  15. data/lib/datadog/ci/context_flush.rb +29 -0
  16. data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +31 -0
  17. data/lib/datadog/ci/contrib/cucumber/ext.rb +20 -0
  18. data/lib/datadog/ci/contrib/cucumber/formatter.rb +98 -0
  19. data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +27 -0
  20. data/lib/datadog/ci/contrib/cucumber/integration.rb +48 -0
  21. data/lib/datadog/ci/contrib/cucumber/patcher.rb +26 -0
  22. data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +31 -0
  23. data/lib/datadog/ci/contrib/rspec/example.rb +74 -0
  24. data/lib/datadog/ci/contrib/rspec/ext.rb +19 -0
  25. data/lib/datadog/ci/contrib/rspec/integration.rb +49 -0
  26. data/lib/datadog/ci/contrib/rspec/patcher.rb +26 -0
  27. data/lib/datadog/ci/ext/app_types.rb +10 -0
  28. data/lib/datadog/ci/ext/environment.rb +443 -0
  29. data/lib/datadog/ci/ext/settings.rb +11 -0
  30. data/lib/datadog/ci/ext/test.rb +35 -0
  31. data/lib/datadog/ci/extensions.rb +18 -0
  32. data/lib/datadog/ci/test.rb +77 -0
  33. data/lib/datadog/contrib.rb +69 -0
  34. data/lib/datadog/core/environment/cgroup.rb +52 -0
  35. data/lib/datadog/core/environment/class_count.rb +20 -0
  36. data/lib/datadog/core/environment/container.rb +91 -0
  37. data/lib/datadog/core/environment/ext.rb +27 -0
  38. data/lib/datadog/core/environment/gc.rb +19 -0
  39. data/lib/datadog/core/environment/identity.rb +51 -0
  40. data/lib/datadog/core/environment/socket.rb +17 -0
  41. data/lib/datadog/core/environment/thread_count.rb +19 -0
  42. data/lib/datadog/core/environment/variable_helpers.rb +42 -0
  43. data/lib/ddtrace.rb +19 -51
  44. data/lib/ddtrace/analytics.rb +1 -0
  45. data/lib/ddtrace/auto_instrument.rb +2 -0
  46. data/lib/ddtrace/auto_instrument_base.rb +1 -0
  47. data/lib/ddtrace/buffer.rb +7 -5
  48. data/lib/ddtrace/chunker.rb +1 -0
  49. data/lib/ddtrace/configuration.rb +15 -18
  50. data/lib/ddtrace/configuration/agent_settings_resolver.rb +9 -19
  51. data/lib/ddtrace/configuration/base.rb +8 -10
  52. data/lib/ddtrace/configuration/components.rb +87 -21
  53. data/lib/ddtrace/configuration/dependency_resolver.rb +1 -0
  54. data/lib/ddtrace/configuration/option.rb +1 -0
  55. data/lib/ddtrace/configuration/option_definition.rb +1 -0
  56. data/lib/ddtrace/configuration/option_definition_set.rb +1 -0
  57. data/lib/ddtrace/configuration/option_set.rb +1 -0
  58. data/lib/ddtrace/configuration/options.rb +3 -2
  59. data/lib/ddtrace/configuration/pin_setup.rb +1 -0
  60. data/lib/ddtrace/configuration/settings.rb +73 -10
  61. data/lib/ddtrace/context.rb +18 -14
  62. data/lib/ddtrace/context_flush.rb +15 -2
  63. data/lib/ddtrace/context_provider.rb +1 -0
  64. data/lib/ddtrace/contrib/action_cable/configuration/settings.rb +1 -0
  65. data/lib/ddtrace/contrib/action_cable/event.rb +5 -4
  66. data/lib/ddtrace/contrib/action_cable/events.rb +1 -0
  67. data/lib/ddtrace/contrib/action_cable/events/broadcast.rb +1 -0
  68. data/lib/ddtrace/contrib/action_cable/events/perform_action.rb +1 -0
  69. data/lib/ddtrace/contrib/action_cable/events/transmit.rb +1 -0
  70. data/lib/ddtrace/contrib/action_cable/ext.rb +1 -0
  71. data/lib/ddtrace/contrib/action_cable/instrumentation.rb +1 -0
  72. data/lib/ddtrace/contrib/action_cable/integration.rb +1 -0
  73. data/lib/ddtrace/contrib/action_cable/patcher.rb +1 -0
  74. data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +21 -10
  75. data/lib/ddtrace/contrib/action_pack/action_controller/patcher.rb +2 -1
  76. data/lib/ddtrace/contrib/action_pack/configuration/settings.rb +1 -0
  77. data/lib/ddtrace/contrib/action_pack/ext.rb +1 -0
  78. data/lib/ddtrace/contrib/action_pack/integration.rb +1 -0
  79. data/lib/ddtrace/contrib/action_pack/patcher.rb +1 -0
  80. data/lib/ddtrace/contrib/action_pack/utils.rb +1 -0
  81. data/lib/ddtrace/contrib/action_view/configuration/settings.rb +1 -0
  82. data/lib/ddtrace/contrib/action_view/event.rb +3 -2
  83. data/lib/ddtrace/contrib/action_view/events.rb +1 -0
  84. data/lib/ddtrace/contrib/action_view/events/render_partial.rb +1 -0
  85. data/lib/ddtrace/contrib/action_view/events/render_template.rb +1 -0
  86. data/lib/ddtrace/contrib/action_view/ext.rb +1 -0
  87. data/lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb +1 -0
  88. data/lib/ddtrace/contrib/action_view/instrumentation/template_renderer.rb +1 -0
  89. data/lib/ddtrace/contrib/action_view/integration.rb +1 -0
  90. data/lib/ddtrace/contrib/action_view/patcher.rb +5 -4
  91. data/lib/ddtrace/contrib/action_view/utils.rb +1 -0
  92. data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +1 -0
  93. data/lib/ddtrace/contrib/active_model_serializers/event.rb +3 -2
  94. data/lib/ddtrace/contrib/active_model_serializers/events.rb +1 -0
  95. data/lib/ddtrace/contrib/active_model_serializers/events/render.rb +1 -0
  96. data/lib/ddtrace/contrib/active_model_serializers/events/serialize.rb +1 -0
  97. data/lib/ddtrace/contrib/active_model_serializers/ext.rb +1 -0
  98. data/lib/ddtrace/contrib/active_model_serializers/integration.rb +1 -0
  99. data/lib/ddtrace/contrib/active_model_serializers/patcher.rb +1 -0
  100. data/lib/ddtrace/contrib/active_record/configuration/makara_resolver.rb +1 -0
  101. data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +3 -2
  102. data/lib/ddtrace/contrib/active_record/configuration/settings.rb +1 -0
  103. data/lib/ddtrace/contrib/active_record/event.rb +3 -2
  104. data/lib/ddtrace/contrib/active_record/events.rb +1 -0
  105. data/lib/ddtrace/contrib/active_record/events/instantiation.rb +1 -0
  106. data/lib/ddtrace/contrib/active_record/events/sql.rb +1 -0
  107. data/lib/ddtrace/contrib/active_record/ext.rb +1 -0
  108. data/lib/ddtrace/contrib/active_record/integration.rb +1 -0
  109. data/lib/ddtrace/contrib/active_record/patcher.rb +1 -0
  110. data/lib/ddtrace/contrib/active_record/utils.rb +4 -3
  111. data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +1 -0
  112. data/lib/ddtrace/contrib/active_support/cache/patcher.rb +8 -7
  113. data/lib/ddtrace/contrib/active_support/cache/redis.rb +2 -5
  114. data/lib/ddtrace/contrib/active_support/configuration/settings.rb +1 -0
  115. data/lib/ddtrace/contrib/active_support/ext.rb +1 -0
  116. data/lib/ddtrace/contrib/active_support/integration.rb +1 -0
  117. data/lib/ddtrace/contrib/active_support/notifications/event.rb +3 -2
  118. data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +2 -1
  119. data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +1 -0
  120. data/lib/ddtrace/contrib/active_support/patcher.rb +1 -0
  121. data/lib/ddtrace/contrib/analytics.rb +1 -0
  122. data/lib/ddtrace/contrib/auto_instrument.rb +3 -2
  123. data/lib/ddtrace/contrib/aws/configuration/settings.rb +1 -0
  124. data/lib/ddtrace/contrib/aws/ext.rb +1 -0
  125. data/lib/ddtrace/contrib/aws/instrumentation.rb +30 -0
  126. data/lib/ddtrace/contrib/aws/integration.rb +1 -0
  127. data/lib/ddtrace/contrib/aws/parsed_context.rb +1 -0
  128. data/lib/ddtrace/contrib/aws/patcher.rb +5 -0
  129. data/lib/ddtrace/contrib/aws/services.rb +1 -0
  130. data/lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb +1 -0
  131. data/lib/ddtrace/contrib/concurrent_ruby/context_composite_executor_service.rb +1 -0
  132. data/lib/ddtrace/contrib/concurrent_ruby/ext.rb +1 -0
  133. data/lib/ddtrace/contrib/concurrent_ruby/future_patch.rb +1 -0
  134. data/lib/ddtrace/contrib/concurrent_ruby/integration.rb +1 -0
  135. data/lib/ddtrace/contrib/concurrent_ruby/patcher.rb +3 -1
  136. data/lib/ddtrace/contrib/configurable.rb +2 -1
  137. data/lib/ddtrace/contrib/configuration/resolver.rb +1 -0
  138. data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +1 -0
  139. data/lib/ddtrace/contrib/configuration/settings.rb +1 -0
  140. data/lib/ddtrace/contrib/dalli/configuration/settings.rb +1 -0
  141. data/lib/ddtrace/contrib/dalli/ext.rb +1 -0
  142. data/lib/ddtrace/contrib/dalli/instrumentation.rb +2 -1
  143. data/lib/ddtrace/contrib/dalli/integration.rb +1 -0
  144. data/lib/ddtrace/contrib/dalli/patcher.rb +2 -1
  145. data/lib/ddtrace/contrib/dalli/quantize.rb +1 -0
  146. data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +1 -0
  147. data/lib/ddtrace/contrib/delayed_job/ext.rb +1 -0
  148. data/lib/ddtrace/contrib/delayed_job/integration.rb +1 -0
  149. data/lib/ddtrace/contrib/delayed_job/patcher.rb +1 -0
  150. data/lib/ddtrace/contrib/delayed_job/plugin.rb +1 -0
  151. data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +1 -0
  152. data/lib/ddtrace/contrib/elasticsearch/ext.rb +1 -0
  153. data/lib/ddtrace/contrib/elasticsearch/integration.rb +1 -0
  154. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +1 -0
  155. data/lib/ddtrace/contrib/elasticsearch/quantize.rb +3 -0
  156. data/lib/ddtrace/contrib/ethon/configuration/settings.rb +1 -0
  157. data/lib/ddtrace/contrib/ethon/easy_patch.rb +2 -1
  158. data/lib/ddtrace/contrib/ethon/ext.rb +1 -0
  159. data/lib/ddtrace/contrib/ethon/integration.rb +1 -0
  160. data/lib/ddtrace/contrib/ethon/multi_patch.rb +2 -1
  161. data/lib/ddtrace/contrib/ethon/patcher.rb +4 -2
  162. data/lib/ddtrace/contrib/excon/configuration/settings.rb +1 -0
  163. data/lib/ddtrace/contrib/excon/ext.rb +1 -0
  164. data/lib/ddtrace/contrib/excon/integration.rb +1 -0
  165. data/lib/ddtrace/contrib/excon/middleware.rb +1 -0
  166. data/lib/ddtrace/contrib/excon/patcher.rb +1 -0
  167. data/lib/ddtrace/contrib/extensions.rb +37 -11
  168. data/lib/ddtrace/contrib/faraday/configuration/settings.rb +1 -0
  169. data/lib/ddtrace/contrib/faraday/connection.rb +1 -0
  170. data/lib/ddtrace/contrib/faraday/ext.rb +1 -0
  171. data/lib/ddtrace/contrib/faraday/integration.rb +1 -0
  172. data/lib/ddtrace/contrib/faraday/middleware.rb +1 -0
  173. data/lib/ddtrace/contrib/faraday/patcher.rb +3 -2
  174. data/lib/ddtrace/contrib/faraday/rack_builder.rb +1 -0
  175. data/lib/ddtrace/contrib/grape/configuration/settings.rb +1 -0
  176. data/lib/ddtrace/contrib/grape/endpoint.rb +26 -16
  177. data/lib/ddtrace/contrib/grape/ext.rb +1 -0
  178. data/lib/ddtrace/contrib/grape/instrumentation.rb +4 -3
  179. data/lib/ddtrace/contrib/grape/integration.rb +1 -0
  180. data/lib/ddtrace/contrib/grape/patcher.rb +2 -1
  181. data/lib/ddtrace/contrib/graphql/configuration/settings.rb +1 -0
  182. data/lib/ddtrace/contrib/graphql/ext.rb +1 -0
  183. data/lib/ddtrace/contrib/graphql/integration.rb +1 -0
  184. data/lib/ddtrace/contrib/graphql/patcher.rb +1 -0
  185. data/lib/ddtrace/contrib/grpc/configuration/settings.rb +2 -0
  186. data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +5 -0
  187. data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +1 -0
  188. data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +3 -4
  189. data/lib/ddtrace/contrib/grpc/ext.rb +1 -0
  190. data/lib/ddtrace/contrib/grpc/integration.rb +1 -0
  191. data/lib/ddtrace/contrib/grpc/intercept_with_datadog.rb +1 -0
  192. data/lib/ddtrace/contrib/grpc/patcher.rb +3 -1
  193. data/lib/ddtrace/contrib/http/circuit_breaker.rb +1 -0
  194. data/lib/ddtrace/contrib/http/configuration/settings.rb +1 -0
  195. data/lib/ddtrace/contrib/http/ext.rb +1 -0
  196. data/lib/ddtrace/contrib/http/instrumentation.rb +2 -1
  197. data/lib/ddtrace/contrib/http/integration.rb +1 -0
  198. data/lib/ddtrace/contrib/http/patcher.rb +2 -1
  199. data/lib/ddtrace/contrib/http_annotation_helper.rb +1 -0
  200. data/lib/ddtrace/contrib/httpclient/configuration/settings.rb +1 -0
  201. data/lib/ddtrace/contrib/httpclient/ext.rb +1 -0
  202. data/lib/ddtrace/contrib/httpclient/instrumentation.rb +2 -1
  203. data/lib/ddtrace/contrib/httpclient/integration.rb +1 -0
  204. data/lib/ddtrace/contrib/httpclient/patcher.rb +3 -2
  205. data/lib/ddtrace/contrib/httprb/configuration/settings.rb +1 -0
  206. data/lib/ddtrace/contrib/httprb/ext.rb +1 -0
  207. data/lib/ddtrace/contrib/httprb/instrumentation.rb +2 -1
  208. data/lib/ddtrace/contrib/httprb/integration.rb +1 -0
  209. data/lib/ddtrace/contrib/httprb/patcher.rb +3 -2
  210. data/lib/ddtrace/contrib/integration.rb +4 -3
  211. data/lib/ddtrace/contrib/kafka/configuration/settings.rb +1 -0
  212. data/lib/ddtrace/contrib/kafka/consumer_event.rb +1 -0
  213. data/lib/ddtrace/contrib/kafka/consumer_group_event.rb +1 -0
  214. data/lib/ddtrace/contrib/kafka/event.rb +3 -2
  215. data/lib/ddtrace/contrib/kafka/events.rb +1 -0
  216. data/lib/ddtrace/contrib/kafka/events/connection/request.rb +1 -0
  217. data/lib/ddtrace/contrib/kafka/events/consumer/process_batch.rb +1 -0
  218. data/lib/ddtrace/contrib/kafka/events/consumer/process_message.rb +1 -0
  219. data/lib/ddtrace/contrib/kafka/events/consumer_group/heartbeat.rb +1 -0
  220. data/lib/ddtrace/contrib/kafka/events/consumer_group/join_group.rb +1 -0
  221. data/lib/ddtrace/contrib/kafka/events/consumer_group/leave_group.rb +1 -0
  222. data/lib/ddtrace/contrib/kafka/events/consumer_group/sync_group.rb +1 -0
  223. data/lib/ddtrace/contrib/kafka/events/produce_operation/send_messages.rb +1 -0
  224. data/lib/ddtrace/contrib/kafka/events/producer/deliver_messages.rb +1 -0
  225. data/lib/ddtrace/contrib/kafka/ext.rb +1 -0
  226. data/lib/ddtrace/contrib/kafka/integration.rb +1 -0
  227. data/lib/ddtrace/contrib/kafka/patcher.rb +1 -0
  228. data/lib/ddtrace/contrib/lograge/configuration/settings.rb +19 -0
  229. data/lib/ddtrace/contrib/lograge/ext.rb +11 -0
  230. data/lib/ddtrace/contrib/lograge/instrumentation.rb +39 -0
  231. data/lib/ddtrace/contrib/lograge/integration.rb +46 -0
  232. data/lib/ddtrace/contrib/{rspec → lograge}/patcher.rb +7 -4
  233. data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +1 -0
  234. data/lib/ddtrace/contrib/mongodb/ext.rb +1 -0
  235. data/lib/ddtrace/contrib/mongodb/instrumentation.rb +3 -2
  236. data/lib/ddtrace/contrib/mongodb/integration.rb +1 -0
  237. data/lib/ddtrace/contrib/mongodb/parsers.rb +1 -0
  238. data/lib/ddtrace/contrib/mongodb/patcher.rb +3 -2
  239. data/lib/ddtrace/contrib/mongodb/subscribers.rb +1 -0
  240. data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +1 -0
  241. data/lib/ddtrace/contrib/mysql2/ext.rb +1 -0
  242. data/lib/ddtrace/contrib/mysql2/instrumentation.rb +2 -1
  243. data/lib/ddtrace/contrib/mysql2/integration.rb +1 -0
  244. data/lib/ddtrace/contrib/mysql2/patcher.rb +2 -1
  245. data/lib/ddtrace/contrib/patchable.rb +3 -2
  246. data/lib/ddtrace/contrib/patcher.rb +4 -3
  247. data/lib/ddtrace/contrib/presto/configuration/settings.rb +1 -0
  248. data/lib/ddtrace/contrib/presto/ext.rb +1 -0
  249. data/lib/ddtrace/contrib/presto/instrumentation.rb +2 -1
  250. data/lib/ddtrace/contrib/presto/integration.rb +1 -0
  251. data/lib/ddtrace/contrib/presto/patcher.rb +2 -1
  252. data/lib/ddtrace/contrib/qless/configuration/settings.rb +1 -0
  253. data/lib/ddtrace/contrib/qless/ext.rb +1 -0
  254. data/lib/ddtrace/contrib/qless/integration.rb +1 -0
  255. data/lib/ddtrace/contrib/qless/patcher.rb +5 -5
  256. data/lib/ddtrace/contrib/qless/qless_job.rb +1 -0
  257. data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +1 -0
  258. data/lib/ddtrace/contrib/que/configuration/settings.rb +1 -0
  259. data/lib/ddtrace/contrib/que/ext.rb +1 -0
  260. data/lib/ddtrace/contrib/que/integration.rb +1 -0
  261. data/lib/ddtrace/contrib/que/patcher.rb +1 -0
  262. data/lib/ddtrace/contrib/que/tracer.rb +1 -0
  263. data/lib/ddtrace/contrib/racecar/configuration/settings.rb +1 -0
  264. data/lib/ddtrace/contrib/racecar/event.rb +3 -2
  265. data/lib/ddtrace/contrib/racecar/events.rb +1 -0
  266. data/lib/ddtrace/contrib/racecar/events/batch.rb +1 -0
  267. data/lib/ddtrace/contrib/racecar/events/consume.rb +1 -0
  268. data/lib/ddtrace/contrib/racecar/events/message.rb +1 -0
  269. data/lib/ddtrace/contrib/racecar/ext.rb +1 -0
  270. data/lib/ddtrace/contrib/racecar/integration.rb +1 -0
  271. data/lib/ddtrace/contrib/racecar/patcher.rb +1 -0
  272. data/lib/ddtrace/contrib/rack/configuration/settings.rb +1 -0
  273. data/lib/ddtrace/contrib/rack/ext.rb +1 -0
  274. data/lib/ddtrace/contrib/rack/integration.rb +1 -0
  275. data/lib/ddtrace/contrib/rack/middlewares.rb +2 -1
  276. data/lib/ddtrace/contrib/rack/patcher.rb +1 -0
  277. data/lib/ddtrace/contrib/rack/request_queue.rb +1 -0
  278. data/lib/ddtrace/contrib/rails/auto_instrument_railtie.rb +1 -0
  279. data/lib/ddtrace/contrib/rails/configuration/settings.rb +1 -0
  280. data/lib/ddtrace/contrib/rails/ext.rb +1 -0
  281. data/lib/ddtrace/contrib/rails/framework.rb +26 -1
  282. data/lib/ddtrace/contrib/rails/integration.rb +1 -0
  283. data/lib/ddtrace/contrib/rails/log_injection.rb +1 -40
  284. data/lib/ddtrace/contrib/rails/middlewares.rb +1 -0
  285. data/lib/ddtrace/contrib/rails/patcher.rb +12 -9
  286. data/lib/ddtrace/contrib/rails/railtie.rb +1 -0
  287. data/lib/ddtrace/contrib/rails/utils.rb +1 -0
  288. data/lib/ddtrace/contrib/rake/configuration/settings.rb +1 -0
  289. data/lib/ddtrace/contrib/rake/ext.rb +1 -0
  290. data/lib/ddtrace/contrib/rake/instrumentation.rb +2 -1
  291. data/lib/ddtrace/contrib/rake/integration.rb +1 -0
  292. data/lib/ddtrace/contrib/rake/patcher.rb +2 -1
  293. data/lib/ddtrace/contrib/redis/configuration/resolver.rb +1 -0
  294. data/lib/ddtrace/contrib/redis/configuration/settings.rb +1 -0
  295. data/lib/ddtrace/contrib/redis/ext.rb +1 -0
  296. data/lib/ddtrace/contrib/redis/integration.rb +1 -0
  297. data/lib/ddtrace/contrib/redis/patcher.rb +1 -0
  298. data/lib/ddtrace/contrib/redis/quantize.rb +1 -0
  299. data/lib/ddtrace/contrib/redis/tags.rb +1 -0
  300. data/lib/ddtrace/contrib/redis/vendor/resolver.rb +1 -0
  301. data/lib/ddtrace/contrib/registerable.rb +5 -4
  302. data/lib/ddtrace/contrib/registry.rb +1 -0
  303. data/lib/ddtrace/contrib/resque/configuration/settings.rb +1 -0
  304. data/lib/ddtrace/contrib/resque/ext.rb +1 -0
  305. data/lib/ddtrace/contrib/resque/integration.rb +1 -0
  306. data/lib/ddtrace/contrib/resque/patcher.rb +2 -1
  307. data/lib/ddtrace/contrib/resque/resque_job.rb +1 -0
  308. data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +1 -0
  309. data/lib/ddtrace/contrib/rest_client/ext.rb +1 -0
  310. data/lib/ddtrace/contrib/rest_client/integration.rb +1 -0
  311. data/lib/ddtrace/contrib/rest_client/patcher.rb +3 -1
  312. data/lib/ddtrace/contrib/rest_client/request_patch.rb +2 -1
  313. data/lib/ddtrace/contrib/semantic_logger/configuration/settings.rb +19 -0
  314. data/lib/ddtrace/contrib/semantic_logger/ext.rb +11 -0
  315. data/lib/ddtrace/contrib/semantic_logger/instrumentation.rb +43 -0
  316. data/lib/ddtrace/contrib/semantic_logger/integration.rb +48 -0
  317. data/lib/ddtrace/contrib/semantic_logger/patcher.rb +26 -0
  318. data/lib/ddtrace/contrib/sequel/configuration/settings.rb +1 -0
  319. data/lib/ddtrace/contrib/sequel/database.rb +2 -1
  320. data/lib/ddtrace/contrib/sequel/dataset.rb +2 -1
  321. data/lib/ddtrace/contrib/sequel/ext.rb +1 -0
  322. data/lib/ddtrace/contrib/sequel/integration.rb +1 -0
  323. data/lib/ddtrace/contrib/sequel/patcher.rb +3 -2
  324. data/lib/ddtrace/contrib/sequel/utils.rb +1 -0
  325. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +1 -0
  326. data/lib/ddtrace/contrib/shoryuken/ext.rb +1 -0
  327. data/lib/ddtrace/contrib/shoryuken/integration.rb +1 -0
  328. data/lib/ddtrace/contrib/shoryuken/patcher.rb +1 -0
  329. data/lib/ddtrace/contrib/shoryuken/tracer.rb +1 -0
  330. data/lib/ddtrace/contrib/sidekiq/client_tracer.rb +1 -0
  331. data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +1 -0
  332. data/lib/ddtrace/contrib/sidekiq/ext.rb +1 -0
  333. data/lib/ddtrace/contrib/sidekiq/integration.rb +1 -0
  334. data/lib/ddtrace/contrib/sidekiq/patcher.rb +1 -0
  335. data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +1 -0
  336. data/lib/ddtrace/contrib/sidekiq/tracing.rb +1 -0
  337. data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +1 -0
  338. data/lib/ddtrace/contrib/sinatra/env.rb +1 -0
  339. data/lib/ddtrace/contrib/sinatra/ext.rb +1 -0
  340. data/lib/ddtrace/contrib/sinatra/headers.rb +1 -0
  341. data/lib/ddtrace/contrib/sinatra/integration.rb +1 -0
  342. data/lib/ddtrace/contrib/sinatra/patcher.rb +3 -1
  343. data/lib/ddtrace/contrib/sinatra/tracer.rb +13 -3
  344. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +8 -1
  345. data/lib/ddtrace/contrib/sneakers/configuration/settings.rb +1 -0
  346. data/lib/ddtrace/contrib/sneakers/ext.rb +1 -0
  347. data/lib/ddtrace/contrib/sneakers/integration.rb +1 -0
  348. data/lib/ddtrace/contrib/sneakers/patcher.rb +1 -0
  349. data/lib/ddtrace/contrib/sneakers/tracer.rb +1 -0
  350. data/lib/ddtrace/contrib/status_code_matcher.rb +1 -0
  351. data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +1 -0
  352. data/lib/ddtrace/contrib/sucker_punch/exception_handler.rb +5 -6
  353. data/lib/ddtrace/contrib/sucker_punch/ext.rb +1 -0
  354. data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +1 -0
  355. data/lib/ddtrace/contrib/sucker_punch/integration.rb +1 -0
  356. data/lib/ddtrace/contrib/sucker_punch/patcher.rb +2 -0
  357. data/lib/ddtrace/correlation.rb +2 -1
  358. data/lib/ddtrace/diagnostics/environment_logger.rb +6 -5
  359. data/lib/ddtrace/diagnostics/health.rb +1 -0
  360. data/lib/ddtrace/distributed_tracing/headers/b3.rb +1 -0
  361. data/lib/ddtrace/distributed_tracing/headers/b3_single.rb +1 -0
  362. data/lib/ddtrace/distributed_tracing/headers/datadog.rb +1 -0
  363. data/lib/ddtrace/distributed_tracing/headers/headers.rb +1 -0
  364. data/lib/ddtrace/distributed_tracing/headers/helpers.rb +1 -0
  365. data/lib/ddtrace/encoding.rb +3 -0
  366. data/lib/ddtrace/error.rb +53 -61
  367. data/lib/ddtrace/event.rb +1 -0
  368. data/lib/ddtrace/ext/analytics.rb +1 -0
  369. data/lib/ddtrace/ext/app_types.rb +1 -1
  370. data/lib/ddtrace/ext/correlation.rb +1 -0
  371. data/lib/ddtrace/ext/diagnostics.rb +1 -0
  372. data/lib/ddtrace/ext/distributed.rb +1 -0
  373. data/lib/ddtrace/ext/environment.rb +8 -0
  374. data/lib/ddtrace/ext/errors.rb +1 -0
  375. data/lib/ddtrace/ext/forced_tracing.rb +1 -0
  376. data/lib/ddtrace/ext/git.rb +10 -1
  377. data/lib/ddtrace/ext/http.rb +1 -0
  378. data/lib/ddtrace/ext/integration.rb +1 -0
  379. data/lib/ddtrace/ext/manual_tracing.rb +1 -0
  380. data/lib/ddtrace/ext/metrics.rb +1 -0
  381. data/lib/ddtrace/ext/net.rb +1 -0
  382. data/lib/ddtrace/ext/priority.rb +1 -0
  383. data/lib/ddtrace/ext/profiling.rb +3 -0
  384. data/lib/ddtrace/ext/runtime.rb +1 -9
  385. data/lib/ddtrace/ext/sampling.rb +1 -0
  386. data/lib/ddtrace/ext/sql.rb +1 -0
  387. data/lib/ddtrace/ext/test.rb +3 -18
  388. data/lib/ddtrace/ext/transport.rb +1 -0
  389. data/lib/ddtrace/forced_tracing.rb +1 -0
  390. data/lib/ddtrace/logger.rb +1 -0
  391. data/lib/ddtrace/metrics.rb +70 -18
  392. data/lib/ddtrace/opentelemetry/extensions.rb +2 -1
  393. data/lib/ddtrace/opentelemetry/span.rb +1 -0
  394. data/lib/ddtrace/opentracer.rb +21 -39
  395. data/lib/ddtrace/opentracer/binary_propagator.rb +1 -0
  396. data/lib/ddtrace/opentracer/carrier.rb +1 -0
  397. data/lib/ddtrace/opentracer/distributed_headers.rb +1 -0
  398. data/lib/ddtrace/opentracer/global_tracer.rb +1 -0
  399. data/lib/ddtrace/opentracer/propagator.rb +1 -0
  400. data/lib/ddtrace/opentracer/rack_propagator.rb +1 -0
  401. data/lib/ddtrace/opentracer/scope.rb +1 -0
  402. data/lib/ddtrace/opentracer/scope_manager.rb +1 -0
  403. data/lib/ddtrace/opentracer/span.rb +1 -0
  404. data/lib/ddtrace/opentracer/span_context.rb +1 -0
  405. data/lib/ddtrace/opentracer/span_context_factory.rb +1 -0
  406. data/lib/ddtrace/opentracer/text_map_propagator.rb +1 -0
  407. data/lib/ddtrace/opentracer/thread_local_scope.rb +1 -0
  408. data/lib/ddtrace/opentracer/thread_local_scope_manager.rb +1 -0
  409. data/lib/ddtrace/opentracer/tracer.rb +1 -0
  410. data/lib/ddtrace/patcher.rb +3 -2
  411. data/lib/ddtrace/pin.rb +1 -0
  412. data/lib/ddtrace/pipeline.rb +1 -0
  413. data/lib/ddtrace/pipeline/span_filter.rb +1 -0
  414. data/lib/ddtrace/pipeline/span_processor.rb +1 -0
  415. data/lib/ddtrace/profiling.rb +74 -28
  416. data/lib/ddtrace/profiling/backtrace_location.rb +1 -0
  417. data/lib/ddtrace/profiling/buffer.rb +1 -0
  418. data/lib/ddtrace/profiling/collectors/stack.rb +16 -18
  419. data/lib/ddtrace/profiling/encoding/profile.rb +7 -0
  420. data/lib/ddtrace/profiling/event.rb +1 -0
  421. data/lib/ddtrace/profiling/events/stack.rb +16 -37
  422. data/lib/ddtrace/profiling/exporter.rb +1 -0
  423. data/lib/ddtrace/profiling/ext/cpu.rb +18 -3
  424. data/lib/ddtrace/profiling/ext/cthread.rb +10 -11
  425. data/lib/ddtrace/profiling/ext/forking.rb +8 -7
  426. data/lib/ddtrace/profiling/flush.rb +13 -10
  427. data/lib/ddtrace/profiling/native_extension.rb +18 -0
  428. data/lib/ddtrace/profiling/pprof/builder.rb +27 -28
  429. data/lib/ddtrace/profiling/pprof/converter.rb +5 -0
  430. data/lib/ddtrace/profiling/pprof/message_set.rb +4 -1
  431. data/lib/ddtrace/profiling/pprof/payload.rb +2 -1
  432. data/lib/ddtrace/profiling/pprof/pprof_pb.rb +1 -0
  433. data/lib/ddtrace/profiling/pprof/stack_sample.rb +33 -6
  434. data/lib/ddtrace/profiling/pprof/string_table.rb +1 -0
  435. data/lib/ddtrace/profiling/pprof/template.rb +5 -0
  436. data/lib/ddtrace/profiling/preload.rb +1 -0
  437. data/lib/ddtrace/profiling/profiler.rb +1 -0
  438. data/lib/ddtrace/profiling/recorder.rb +3 -2
  439. data/lib/ddtrace/profiling/scheduler.rb +33 -4
  440. data/lib/ddtrace/profiling/tasks/setup.rb +18 -13
  441. data/lib/ddtrace/profiling/trace_identifiers/ddtrace.rb +41 -0
  442. data/lib/ddtrace/profiling/trace_identifiers/helper.rb +46 -0
  443. data/lib/ddtrace/profiling/transport/client.rb +3 -0
  444. data/lib/ddtrace/profiling/transport/http.rb +29 -27
  445. data/lib/ddtrace/profiling/transport/http/api.rb +1 -0
  446. data/lib/ddtrace/profiling/transport/http/api/endpoint.rb +12 -2
  447. data/lib/ddtrace/profiling/transport/http/api/instance.rb +1 -0
  448. data/lib/ddtrace/profiling/transport/http/api/spec.rb +1 -0
  449. data/lib/ddtrace/profiling/transport/http/builder.rb +1 -0
  450. data/lib/ddtrace/profiling/transport/http/client.rb +1 -0
  451. data/lib/ddtrace/profiling/transport/http/response.rb +1 -0
  452. data/lib/ddtrace/profiling/transport/io.rb +1 -0
  453. data/lib/ddtrace/profiling/transport/io/client.rb +1 -0
  454. data/lib/ddtrace/profiling/transport/io/response.rb +1 -0
  455. data/lib/ddtrace/profiling/transport/parcel.rb +1 -0
  456. data/lib/ddtrace/profiling/transport/request.rb +1 -0
  457. data/lib/ddtrace/profiling/transport/response.rb +1 -0
  458. data/lib/ddtrace/propagation/grpc_propagator.rb +1 -0
  459. data/lib/ddtrace/propagation/http_propagator.rb +3 -2
  460. data/lib/ddtrace/quantization/hash.rb +1 -0
  461. data/lib/ddtrace/quantization/http.rb +3 -0
  462. data/lib/ddtrace/runtime/metrics.rb +21 -14
  463. data/lib/ddtrace/sampler.rb +1 -0
  464. data/lib/ddtrace/sampling.rb +1 -0
  465. data/lib/ddtrace/sampling/matcher.rb +1 -0
  466. data/lib/ddtrace/sampling/rate_limiter.rb +1 -0
  467. data/lib/ddtrace/sampling/rule.rb +2 -1
  468. data/lib/ddtrace/sampling/rule_sampler.rb +2 -1
  469. data/lib/ddtrace/span.rb +37 -12
  470. data/lib/ddtrace/sync_writer.rb +5 -3
  471. data/lib/ddtrace/tasks/exec.rb +4 -5
  472. data/lib/ddtrace/tasks/help.rb +1 -0
  473. data/lib/ddtrace/tracer.rb +14 -18
  474. data/lib/ddtrace/transport/http.rb +10 -7
  475. data/lib/ddtrace/transport/http/adapters/net.rb +1 -0
  476. data/lib/ddtrace/transport/http/adapters/registry.rb +1 -0
  477. data/lib/ddtrace/transport/http/adapters/test.rb +1 -0
  478. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +1 -0
  479. data/lib/ddtrace/transport/http/api.rb +1 -0
  480. data/lib/ddtrace/transport/http/api/endpoint.rb +1 -0
  481. data/lib/ddtrace/transport/http/api/fallbacks.rb +1 -0
  482. data/lib/ddtrace/transport/http/api/instance.rb +1 -0
  483. data/lib/ddtrace/transport/http/api/map.rb +1 -0
  484. data/lib/ddtrace/transport/http/api/spec.rb +1 -0
  485. data/lib/ddtrace/transport/http/builder.rb +1 -0
  486. data/lib/ddtrace/transport/http/client.rb +3 -1
  487. data/lib/ddtrace/transport/http/env.rb +1 -0
  488. data/lib/ddtrace/transport/http/response.rb +1 -0
  489. data/lib/ddtrace/transport/http/statistics.rb +3 -2
  490. data/lib/ddtrace/transport/http/traces.rb +4 -3
  491. data/lib/ddtrace/transport/io.rb +1 -0
  492. data/lib/ddtrace/transport/io/client.rb +2 -1
  493. data/lib/ddtrace/transport/io/response.rb +1 -0
  494. data/lib/ddtrace/transport/io/traces.rb +4 -1
  495. data/lib/ddtrace/transport/parcel.rb +3 -0
  496. data/lib/ddtrace/transport/request.rb +1 -0
  497. data/lib/ddtrace/transport/response.rb +1 -0
  498. data/lib/ddtrace/transport/statistics.rb +1 -0
  499. data/lib/ddtrace/transport/traces.rb +3 -2
  500. data/lib/ddtrace/utils.rb +14 -2
  501. data/lib/ddtrace/utils/compression.rb +1 -0
  502. data/lib/ddtrace/utils/database.rb +1 -0
  503. data/lib/ddtrace/utils/forking.rb +2 -1
  504. data/lib/ddtrace/utils/object_set.rb +4 -5
  505. data/lib/ddtrace/utils/only_once.rb +1 -0
  506. data/lib/ddtrace/utils/sequence.rb +1 -0
  507. data/lib/ddtrace/utils/string_table.rb +1 -0
  508. data/lib/ddtrace/utils/time.rb +3 -2
  509. data/lib/ddtrace/vendor/active_record/connection_specification.rb +1 -0
  510. data/lib/ddtrace/vendor/multipart-post/multipart.rb +1 -0
  511. data/lib/ddtrace/vendor/multipart-post/multipart/post.rb +1 -0
  512. data/lib/ddtrace/vendor/multipart-post/multipart/post/composite_read_io.rb +1 -0
  513. data/lib/ddtrace/vendor/multipart-post/multipart/post/multipartable.rb +1 -0
  514. data/lib/ddtrace/vendor/multipart-post/multipart/post/parts.rb +1 -0
  515. data/lib/ddtrace/vendor/multipart-post/multipart/post/version.rb +1 -0
  516. data/lib/ddtrace/vendor/multipart-post/net/http/post/multipart.rb +1 -0
  517. data/lib/ddtrace/version.rb +3 -4
  518. data/lib/ddtrace/worker.rb +1 -0
  519. data/lib/ddtrace/workers.rb +3 -2
  520. data/lib/ddtrace/workers/async.rb +5 -3
  521. data/lib/ddtrace/workers/loop.rb +2 -1
  522. data/lib/ddtrace/workers/polling.rb +12 -5
  523. data/lib/ddtrace/workers/queue.rb +2 -1
  524. data/lib/ddtrace/workers/runtime_metrics.rb +1 -0
  525. data/lib/ddtrace/workers/trace_writer.rb +3 -2
  526. data/lib/ddtrace/writer.rb +3 -2
  527. metadata +56 -570
  528. data/.circleci/config.yml +0 -894
  529. data/.circleci/images/primary/Dockerfile-2.0.0 +0 -83
  530. data/.circleci/images/primary/Dockerfile-2.1.10 +0 -83
  531. data/.circleci/images/primary/Dockerfile-2.2.10 +0 -83
  532. data/.circleci/images/primary/Dockerfile-2.3.8 +0 -85
  533. data/.circleci/images/primary/Dockerfile-2.4.6 +0 -83
  534. data/.circleci/images/primary/Dockerfile-2.5.6 +0 -83
  535. data/.circleci/images/primary/Dockerfile-2.6.4 +0 -83
  536. data/.circleci/images/primary/Dockerfile-2.7.0 +0 -83
  537. data/.circleci/images/primary/Dockerfile-3.0.0 +0 -73
  538. data/.circleci/images/primary/Dockerfile-jruby-9.2-latest +0 -88
  539. data/.circleci/images/primary/Dockerfile-jruby-9.2.0.0 +0 -73
  540. data/.circleci/images/primary/Dockerfile-truffleruby-21.0.0 +0 -73
  541. data/.dockerignore +0 -0
  542. data/.env +0 -26
  543. data/.github/CODEOWNERS +0 -1
  544. data/.github/workflows/add-milestone-to-pull-requests.yml +0 -42
  545. data/.github/workflows/create-next-milestone.yml +0 -20
  546. data/.gitlab-ci.yml +0 -27
  547. data/.rspec +0 -1
  548. data/.rubocop.yml +0 -359
  549. data/.rubocop_todo.yml +0 -438
  550. data/.simplecov +0 -47
  551. data/Appraisals +0 -1429
  552. data/Gemfile +0 -69
  553. data/Rakefile +0 -994
  554. data/benchmarks/postgres_database.yml +0 -9
  555. data/benchmarks/profiler_sample_loop.rb +0 -69
  556. data/benchmarks/sidekiq_test.rb +0 -154
  557. data/docker-compose.yml +0 -444
  558. data/gemfiles/jruby_9.2.0.0_contrib.gemfile +0 -79
  559. data/gemfiles/jruby_9.2.0.0_contrib.gemfile.lock +0 -1518
  560. data/gemfiles/jruby_9.2.0.0_contrib_old.gemfile +0 -35
  561. data/gemfiles/jruby_9.2.0.0_contrib_old.gemfile.lock +0 -157
  562. data/gemfiles/jruby_9.2.0.0_core_old.gemfile +0 -34
  563. data/gemfiles/jruby_9.2.0.0_core_old.gemfile.lock +0 -153
  564. data/gemfiles/jruby_9.2.0.0_cucumber3.gemfile +0 -35
  565. data/gemfiles/jruby_9.2.0.0_cucumber3.gemfile.lock +0 -174
  566. data/gemfiles/jruby_9.2.0.0_cucumber4.gemfile +0 -35
  567. data/gemfiles/jruby_9.2.0.0_cucumber4.gemfile.lock +0 -206
  568. data/gemfiles/jruby_9.2.0.0_cucumber5.gemfile +0 -35
  569. data/gemfiles/jruby_9.2.0.0_cucumber5.gemfile.lock +0 -206
  570. data/gemfiles/jruby_9.2.0.0_rails5_mysql2.gemfile +0 -40
  571. data/gemfiles/jruby_9.2.0.0_rails5_mysql2.gemfile.lock +0 -271
  572. data/gemfiles/jruby_9.2.0.0_rails5_postgres.gemfile +0 -40
  573. data/gemfiles/jruby_9.2.0.0_rails5_postgres.gemfile.lock +0 -271
  574. data/gemfiles/jruby_9.2.0.0_rails5_postgres_redis.gemfile +0 -41
  575. data/gemfiles/jruby_9.2.0.0_rails5_postgres_redis.gemfile.lock +0 -273
  576. data/gemfiles/jruby_9.2.0.0_rails5_postgres_redis_activesupport.gemfile +0 -41
  577. data/gemfiles/jruby_9.2.0.0_rails5_postgres_redis_activesupport.gemfile.lock +0 -273
  578. data/gemfiles/jruby_9.2.0.0_rails5_postgres_sidekiq.gemfile +0 -42
  579. data/gemfiles/jruby_9.2.0.0_rails5_postgres_sidekiq.gemfile.lock +0 -279
  580. data/gemfiles/jruby_9.2.0.0_rails61_mysql2.gemfile +0 -40
  581. data/gemfiles/jruby_9.2.0.0_rails61_mysql2.gemfile.lock +0 -290
  582. data/gemfiles/jruby_9.2.0.0_rails61_postgres.gemfile +0 -40
  583. data/gemfiles/jruby_9.2.0.0_rails61_postgres.gemfile.lock +0 -290
  584. data/gemfiles/jruby_9.2.0.0_rails61_postgres_redis.gemfile +0 -41
  585. data/gemfiles/jruby_9.2.0.0_rails61_postgres_redis.gemfile.lock +0 -292
  586. data/gemfiles/jruby_9.2.0.0_rails61_postgres_sidekiq.gemfile +0 -41
  587. data/gemfiles/jruby_9.2.0.0_rails61_postgres_sidekiq.gemfile.lock +0 -297
  588. data/gemfiles/jruby_9.2.0.0_rails6_mysql2.gemfile +0 -40
  589. data/gemfiles/jruby_9.2.0.0_rails6_mysql2.gemfile.lock +0 -287
  590. data/gemfiles/jruby_9.2.0.0_rails6_postgres.gemfile +0 -40
  591. data/gemfiles/jruby_9.2.0.0_rails6_postgres.gemfile.lock +0 -287
  592. data/gemfiles/jruby_9.2.0.0_rails6_postgres_redis.gemfile +0 -41
  593. data/gemfiles/jruby_9.2.0.0_rails6_postgres_redis.gemfile.lock +0 -289
  594. data/gemfiles/jruby_9.2.0.0_rails6_postgres_redis_activesupport.gemfile +0 -41
  595. data/gemfiles/jruby_9.2.0.0_rails6_postgres_redis_activesupport.gemfile.lock +0 -289
  596. data/gemfiles/jruby_9.2.0.0_rails6_postgres_sidekiq.gemfile +0 -42
  597. data/gemfiles/jruby_9.2.0.0_rails6_postgres_sidekiq.gemfile.lock +0 -295
  598. data/gemfiles/jruby_9.2.0.0_resque2_redis3.gemfile +0 -36
  599. data/gemfiles/jruby_9.2.0.0_resque2_redis3.gemfile.lock +0 -180
  600. data/gemfiles/jruby_9.2.0.0_resque2_redis4.gemfile +0 -36
  601. data/gemfiles/jruby_9.2.0.0_resque2_redis4.gemfile.lock +0 -180
  602. data/gemfiles/jruby_9.2.11.1_contrib.gemfile +0 -79
  603. data/gemfiles/jruby_9.2.11.1_contrib.gemfile.lock +0 -1518
  604. data/gemfiles/jruby_9.2.11.1_contrib_old.gemfile +0 -35
  605. data/gemfiles/jruby_9.2.11.1_contrib_old.gemfile.lock +0 -157
  606. data/gemfiles/jruby_9.2.11.1_core_old.gemfile +0 -34
  607. data/gemfiles/jruby_9.2.11.1_core_old.gemfile.lock +0 -153
  608. data/gemfiles/jruby_9.2.11.1_cucumber3.gemfile +0 -35
  609. data/gemfiles/jruby_9.2.11.1_cucumber3.gemfile.lock +0 -174
  610. data/gemfiles/jruby_9.2.11.1_cucumber4.gemfile +0 -35
  611. data/gemfiles/jruby_9.2.11.1_cucumber4.gemfile.lock +0 -206
  612. data/gemfiles/jruby_9.2.11.1_cucumber5.gemfile +0 -35
  613. data/gemfiles/jruby_9.2.11.1_cucumber5.gemfile.lock +0 -206
  614. data/gemfiles/jruby_9.2.11.1_rails5_mysql2.gemfile +0 -40
  615. data/gemfiles/jruby_9.2.11.1_rails5_mysql2.gemfile.lock +0 -271
  616. data/gemfiles/jruby_9.2.11.1_rails5_postgres.gemfile +0 -40
  617. data/gemfiles/jruby_9.2.11.1_rails5_postgres.gemfile.lock +0 -271
  618. data/gemfiles/jruby_9.2.11.1_rails5_postgres_redis.gemfile +0 -41
  619. data/gemfiles/jruby_9.2.11.1_rails5_postgres_redis.gemfile.lock +0 -273
  620. data/gemfiles/jruby_9.2.11.1_rails5_postgres_redis_activesupport.gemfile +0 -41
  621. data/gemfiles/jruby_9.2.11.1_rails5_postgres_redis_activesupport.gemfile.lock +0 -273
  622. data/gemfiles/jruby_9.2.11.1_rails5_postgres_sidekiq.gemfile +0 -42
  623. data/gemfiles/jruby_9.2.11.1_rails5_postgres_sidekiq.gemfile.lock +0 -279
  624. data/gemfiles/jruby_9.2.11.1_rails61_mysql2.gemfile +0 -40
  625. data/gemfiles/jruby_9.2.11.1_rails61_mysql2.gemfile.lock +0 -290
  626. data/gemfiles/jruby_9.2.11.1_rails61_postgres.gemfile +0 -40
  627. data/gemfiles/jruby_9.2.11.1_rails61_postgres.gemfile.lock +0 -290
  628. data/gemfiles/jruby_9.2.11.1_rails61_postgres_redis.gemfile +0 -41
  629. data/gemfiles/jruby_9.2.11.1_rails61_postgres_redis.gemfile.lock +0 -292
  630. data/gemfiles/jruby_9.2.11.1_rails61_postgres_sidekiq.gemfile +0 -41
  631. data/gemfiles/jruby_9.2.11.1_rails61_postgres_sidekiq.gemfile.lock +0 -297
  632. data/gemfiles/jruby_9.2.11.1_rails6_mysql2.gemfile +0 -40
  633. data/gemfiles/jruby_9.2.11.1_rails6_mysql2.gemfile.lock +0 -287
  634. data/gemfiles/jruby_9.2.11.1_rails6_postgres.gemfile +0 -40
  635. data/gemfiles/jruby_9.2.11.1_rails6_postgres.gemfile.lock +0 -287
  636. data/gemfiles/jruby_9.2.11.1_rails6_postgres_redis.gemfile +0 -41
  637. data/gemfiles/jruby_9.2.11.1_rails6_postgres_redis.gemfile.lock +0 -289
  638. data/gemfiles/jruby_9.2.11.1_rails6_postgres_redis_activesupport.gemfile +0 -41
  639. data/gemfiles/jruby_9.2.11.1_rails6_postgres_redis_activesupport.gemfile.lock +0 -289
  640. data/gemfiles/jruby_9.2.11.1_rails6_postgres_sidekiq.gemfile +0 -42
  641. data/gemfiles/jruby_9.2.11.1_rails6_postgres_sidekiq.gemfile.lock +0 -295
  642. data/gemfiles/jruby_9.2.11.1_resque2_redis3.gemfile +0 -36
  643. data/gemfiles/jruby_9.2.11.1_resque2_redis3.gemfile.lock +0 -180
  644. data/gemfiles/jruby_9.2.11.1_resque2_redis4.gemfile +0 -36
  645. data/gemfiles/jruby_9.2.11.1_resque2_redis4.gemfile.lock +0 -180
  646. data/gemfiles/ruby_2.0.0_contrib_old.gemfile +0 -64
  647. data/gemfiles/ruby_2.0.0_contrib_old.gemfile.lock +0 -290
  648. data/gemfiles/ruby_2.0.0_core_old.gemfile +0 -33
  649. data/gemfiles/ruby_2.0.0_core_old.gemfile.lock +0 -118
  650. data/gemfiles/ruby_2.0.0_rails30_postgres.gemfile +0 -39
  651. data/gemfiles/ruby_2.0.0_rails30_postgres.gemfile.lock +0 -196
  652. data/gemfiles/ruby_2.0.0_rails30_postgres_sidekiq.gemfile +0 -40
  653. data/gemfiles/ruby_2.0.0_rails30_postgres_sidekiq.gemfile.lock +0 -205
  654. data/gemfiles/ruby_2.0.0_rails32_mysql2.gemfile +0 -43
  655. data/gemfiles/ruby_2.0.0_rails32_mysql2.gemfile.lock +0 -217
  656. data/gemfiles/ruby_2.0.0_rails32_postgres.gemfile +0 -39
  657. data/gemfiles/ruby_2.0.0_rails32_postgres.gemfile.lock +0 -204
  658. data/gemfiles/ruby_2.0.0_rails32_postgres_redis.gemfile +0 -41
  659. data/gemfiles/ruby_2.0.0_rails32_postgres_redis.gemfile.lock +0 -223
  660. data/gemfiles/ruby_2.0.0_rails32_postgres_sidekiq.gemfile +0 -40
  661. data/gemfiles/ruby_2.0.0_rails32_postgres_sidekiq.gemfile.lock +0 -213
  662. data/gemfiles/ruby_2.1.10_contrib_old.gemfile +0 -66
  663. data/gemfiles/ruby_2.1.10_contrib_old.gemfile.lock +0 -305
  664. data/gemfiles/ruby_2.1.10_core_old.gemfile +0 -33
  665. data/gemfiles/ruby_2.1.10_core_old.gemfile.lock +0 -118
  666. data/gemfiles/ruby_2.1.10_rails30_postgres.gemfile +0 -39
  667. data/gemfiles/ruby_2.1.10_rails30_postgres.gemfile.lock +0 -196
  668. data/gemfiles/ruby_2.1.10_rails30_postgres_sidekiq.gemfile +0 -40
  669. data/gemfiles/ruby_2.1.10_rails30_postgres_sidekiq.gemfile.lock +0 -205
  670. data/gemfiles/ruby_2.1.10_rails32_mysql2.gemfile +0 -42
  671. data/gemfiles/ruby_2.1.10_rails32_mysql2.gemfile.lock +0 -215
  672. data/gemfiles/ruby_2.1.10_rails32_postgres.gemfile +0 -39
  673. data/gemfiles/ruby_2.1.10_rails32_postgres.gemfile.lock +0 -204
  674. data/gemfiles/ruby_2.1.10_rails32_postgres_redis.gemfile +0 -41
  675. data/gemfiles/ruby_2.1.10_rails32_postgres_redis.gemfile.lock +0 -223
  676. data/gemfiles/ruby_2.1.10_rails32_postgres_sidekiq.gemfile +0 -40
  677. data/gemfiles/ruby_2.1.10_rails32_postgres_sidekiq.gemfile.lock +0 -213
  678. data/gemfiles/ruby_2.1.10_rails4_mysql2.gemfile +0 -38
  679. data/gemfiles/ruby_2.1.10_rails4_mysql2.gemfile.lock +0 -218
  680. data/gemfiles/ruby_2.1.10_rails4_postgres.gemfile +0 -38
  681. data/gemfiles/ruby_2.1.10_rails4_postgres.gemfile.lock +0 -218
  682. data/gemfiles/ruby_2.1.10_rails4_postgres_redis.gemfile +0 -40
  683. data/gemfiles/ruby_2.1.10_rails4_postgres_redis.gemfile.lock +0 -237
  684. data/gemfiles/ruby_2.2.10_contrib.gemfile +0 -73
  685. data/gemfiles/ruby_2.2.10_contrib.gemfile.lock +0 -1450
  686. data/gemfiles/ruby_2.2.10_core_old.gemfile +0 -33
  687. data/gemfiles/ruby_2.2.10_core_old.gemfile.lock +0 -118
  688. data/gemfiles/ruby_2.2.10_rails30_postgres.gemfile +0 -39
  689. data/gemfiles/ruby_2.2.10_rails30_postgres.gemfile.lock +0 -196
  690. data/gemfiles/ruby_2.2.10_rails30_postgres_sidekiq.gemfile +0 -40
  691. data/gemfiles/ruby_2.2.10_rails30_postgres_sidekiq.gemfile.lock +0 -205
  692. data/gemfiles/ruby_2.2.10_rails32_mysql2.gemfile +0 -41
  693. data/gemfiles/ruby_2.2.10_rails32_mysql2.gemfile.lock +0 -212
  694. data/gemfiles/ruby_2.2.10_rails32_postgres.gemfile +0 -39
  695. data/gemfiles/ruby_2.2.10_rails32_postgres.gemfile.lock +0 -204
  696. data/gemfiles/ruby_2.2.10_rails32_postgres_redis.gemfile +0 -41
  697. data/gemfiles/ruby_2.2.10_rails32_postgres_redis.gemfile.lock +0 -223
  698. data/gemfiles/ruby_2.2.10_rails32_postgres_sidekiq.gemfile +0 -40
  699. data/gemfiles/ruby_2.2.10_rails32_postgres_sidekiq.gemfile.lock +0 -213
  700. data/gemfiles/ruby_2.2.10_rails4_mysql2.gemfile +0 -38
  701. data/gemfiles/ruby_2.2.10_rails4_mysql2.gemfile.lock +0 -218
  702. data/gemfiles/ruby_2.2.10_rails4_postgres.gemfile +0 -38
  703. data/gemfiles/ruby_2.2.10_rails4_postgres.gemfile.lock +0 -218
  704. data/gemfiles/ruby_2.2.10_rails4_postgres_redis.gemfile +0 -40
  705. data/gemfiles/ruby_2.2.10_rails4_postgres_redis.gemfile.lock +0 -237
  706. data/gemfiles/ruby_2.2.10_rails4_postgres_sidekiq.gemfile +0 -40
  707. data/gemfiles/ruby_2.2.10_rails4_postgres_sidekiq.gemfile.lock +0 -229
  708. data/gemfiles/ruby_2.2.10_rails5_mysql2.gemfile +0 -38
  709. data/gemfiles/ruby_2.2.10_rails5_mysql2.gemfile.lock +0 -234
  710. data/gemfiles/ruby_2.2.10_rails5_postgres.gemfile +0 -38
  711. data/gemfiles/ruby_2.2.10_rails5_postgres.gemfile.lock +0 -234
  712. data/gemfiles/ruby_2.2.10_rails5_postgres_redis.gemfile +0 -39
  713. data/gemfiles/ruby_2.2.10_rails5_postgres_redis.gemfile.lock +0 -236
  714. data/gemfiles/ruby_2.2.10_rails5_postgres_redis_activesupport.gemfile +0 -39
  715. data/gemfiles/ruby_2.2.10_rails5_postgres_redis_activesupport.gemfile.lock +0 -236
  716. data/gemfiles/ruby_2.2.10_rails5_postgres_sidekiq.gemfile +0 -40
  717. data/gemfiles/ruby_2.2.10_rails5_postgres_sidekiq.gemfile.lock +0 -245
  718. data/gemfiles/ruby_2.3.8_contrib.gemfile +0 -73
  719. data/gemfiles/ruby_2.3.8_contrib.gemfile.lock +0 -1459
  720. data/gemfiles/ruby_2.3.8_contrib_old.gemfile +0 -34
  721. data/gemfiles/ruby_2.3.8_contrib_old.gemfile.lock +0 -127
  722. data/gemfiles/ruby_2.3.8_core_old.gemfile +0 -33
  723. data/gemfiles/ruby_2.3.8_core_old.gemfile.lock +0 -123
  724. data/gemfiles/ruby_2.3.8_cucumber3.gemfile +0 -34
  725. data/gemfiles/ruby_2.3.8_cucumber3.gemfile.lock +0 -144
  726. data/gemfiles/ruby_2.3.8_cucumber4.gemfile +0 -34
  727. data/gemfiles/ruby_2.3.8_cucumber4.gemfile.lock +0 -174
  728. data/gemfiles/ruby_2.3.8_rails30_postgres.gemfile +0 -39
  729. data/gemfiles/ruby_2.3.8_rails30_postgres.gemfile.lock +0 -201
  730. data/gemfiles/ruby_2.3.8_rails30_postgres_sidekiq.gemfile +0 -40
  731. data/gemfiles/ruby_2.3.8_rails30_postgres_sidekiq.gemfile.lock +0 -210
  732. data/gemfiles/ruby_2.3.8_rails32_mysql2.gemfile +0 -41
  733. data/gemfiles/ruby_2.3.8_rails32_mysql2.gemfile.lock +0 -217
  734. data/gemfiles/ruby_2.3.8_rails32_postgres.gemfile +0 -39
  735. data/gemfiles/ruby_2.3.8_rails32_postgres.gemfile.lock +0 -209
  736. data/gemfiles/ruby_2.3.8_rails32_postgres_redis.gemfile +0 -41
  737. data/gemfiles/ruby_2.3.8_rails32_postgres_redis.gemfile.lock +0 -228
  738. data/gemfiles/ruby_2.3.8_rails32_postgres_sidekiq.gemfile +0 -40
  739. data/gemfiles/ruby_2.3.8_rails32_postgres_sidekiq.gemfile.lock +0 -218
  740. data/gemfiles/ruby_2.3.8_rails4_mysql2.gemfile +0 -38
  741. data/gemfiles/ruby_2.3.8_rails4_mysql2.gemfile.lock +0 -223
  742. data/gemfiles/ruby_2.3.8_rails4_postgres.gemfile +0 -38
  743. data/gemfiles/ruby_2.3.8_rails4_postgres.gemfile.lock +0 -223
  744. data/gemfiles/ruby_2.3.8_rails4_postgres_redis.gemfile +0 -40
  745. data/gemfiles/ruby_2.3.8_rails4_postgres_redis.gemfile.lock +0 -242
  746. data/gemfiles/ruby_2.3.8_rails4_postgres_sidekiq.gemfile +0 -40
  747. data/gemfiles/ruby_2.3.8_rails4_postgres_sidekiq.gemfile.lock +0 -234
  748. data/gemfiles/ruby_2.3.8_rails5_mysql2.gemfile +0 -37
  749. data/gemfiles/ruby_2.3.8_rails5_mysql2.gemfile.lock +0 -234
  750. data/gemfiles/ruby_2.3.8_rails5_postgres.gemfile +0 -37
  751. data/gemfiles/ruby_2.3.8_rails5_postgres.gemfile.lock +0 -234
  752. data/gemfiles/ruby_2.3.8_rails5_postgres_redis.gemfile +0 -38
  753. data/gemfiles/ruby_2.3.8_rails5_postgres_redis.gemfile.lock +0 -236
  754. data/gemfiles/ruby_2.3.8_rails5_postgres_redis_activesupport.gemfile +0 -38
  755. data/gemfiles/ruby_2.3.8_rails5_postgres_redis_activesupport.gemfile.lock +0 -236
  756. data/gemfiles/ruby_2.3.8_rails5_postgres_sidekiq.gemfile +0 -39
  757. data/gemfiles/ruby_2.3.8_rails5_postgres_sidekiq.gemfile.lock +0 -245
  758. data/gemfiles/ruby_2.3.8_resque2_redis3.gemfile +0 -35
  759. data/gemfiles/ruby_2.3.8_resque2_redis3.gemfile.lock +0 -150
  760. data/gemfiles/ruby_2.3.8_resque2_redis4.gemfile +0 -35
  761. data/gemfiles/ruby_2.3.8_resque2_redis4.gemfile.lock +0 -150
  762. data/gemfiles/ruby_2.4.6_contrib.gemfile +0 -78
  763. data/gemfiles/ruby_2.4.6_contrib.gemfile.lock +0 -1513
  764. data/gemfiles/ruby_2.4.6_contrib_old.gemfile +0 -38
  765. data/gemfiles/ruby_2.4.6_contrib_old.gemfile.lock +0 -155
  766. data/gemfiles/ruby_2.4.6_core_old.gemfile +0 -37
  767. data/gemfiles/ruby_2.4.6_core_old.gemfile.lock +0 -151
  768. data/gemfiles/ruby_2.4.6_cucumber3.gemfile +0 -38
  769. data/gemfiles/ruby_2.4.6_cucumber3.gemfile.lock +0 -172
  770. data/gemfiles/ruby_2.4.6_cucumber4.gemfile +0 -38
  771. data/gemfiles/ruby_2.4.6_cucumber4.gemfile.lock +0 -202
  772. data/gemfiles/ruby_2.4.6_rails5_mysql2.gemfile +0 -41
  773. data/gemfiles/ruby_2.4.6_rails5_mysql2.gemfile.lock +0 -262
  774. data/gemfiles/ruby_2.4.6_rails5_postgres.gemfile +0 -41
  775. data/gemfiles/ruby_2.4.6_rails5_postgres.gemfile.lock +0 -262
  776. data/gemfiles/ruby_2.4.6_rails5_postgres_redis.gemfile +0 -42
  777. data/gemfiles/ruby_2.4.6_rails5_postgres_redis.gemfile.lock +0 -264
  778. data/gemfiles/ruby_2.4.6_rails5_postgres_redis_activesupport.gemfile +0 -42
  779. data/gemfiles/ruby_2.4.6_rails5_postgres_redis_activesupport.gemfile.lock +0 -264
  780. data/gemfiles/ruby_2.4.6_rails5_postgres_sidekiq.gemfile +0 -43
  781. data/gemfiles/ruby_2.4.6_rails5_postgres_sidekiq.gemfile.lock +0 -273
  782. data/gemfiles/ruby_2.4.6_resque2_redis3.gemfile +0 -39
  783. data/gemfiles/ruby_2.4.6_resque2_redis3.gemfile.lock +0 -178
  784. data/gemfiles/ruby_2.4.6_resque2_redis4.gemfile +0 -39
  785. data/gemfiles/ruby_2.4.6_resque2_redis4.gemfile.lock +0 -178
  786. data/gemfiles/ruby_2.5.6_contrib.gemfile +0 -83
  787. data/gemfiles/ruby_2.5.6_contrib.gemfile.lock +0 -1526
  788. data/gemfiles/ruby_2.5.6_contrib_old.gemfile +0 -39
  789. data/gemfiles/ruby_2.5.6_contrib_old.gemfile.lock +0 -165
  790. data/gemfiles/ruby_2.5.6_core_old.gemfile +0 -38
  791. data/gemfiles/ruby_2.5.6_core_old.gemfile.lock +0 -161
  792. data/gemfiles/ruby_2.5.6_cucumber3.gemfile +0 -39
  793. data/gemfiles/ruby_2.5.6_cucumber3.gemfile.lock +0 -182
  794. data/gemfiles/ruby_2.5.6_cucumber4.gemfile +0 -39
  795. data/gemfiles/ruby_2.5.6_cucumber4.gemfile.lock +0 -214
  796. data/gemfiles/ruby_2.5.6_cucumber5.gemfile +0 -39
  797. data/gemfiles/ruby_2.5.6_cucumber5.gemfile.lock +0 -214
  798. data/gemfiles/ruby_2.5.6_rails5_mysql2.gemfile +0 -44
  799. data/gemfiles/ruby_2.5.6_rails5_mysql2.gemfile.lock +0 -276
  800. data/gemfiles/ruby_2.5.6_rails5_postgres.gemfile +0 -44
  801. data/gemfiles/ruby_2.5.6_rails5_postgres.gemfile.lock +0 -276
  802. data/gemfiles/ruby_2.5.6_rails5_postgres_redis.gemfile +0 -45
  803. data/gemfiles/ruby_2.5.6_rails5_postgres_redis.gemfile.lock +0 -278
  804. data/gemfiles/ruby_2.5.6_rails5_postgres_redis_activesupport.gemfile +0 -45
  805. data/gemfiles/ruby_2.5.6_rails5_postgres_redis_activesupport.gemfile.lock +0 -278
  806. data/gemfiles/ruby_2.5.6_rails5_postgres_sidekiq.gemfile +0 -46
  807. data/gemfiles/ruby_2.5.6_rails5_postgres_sidekiq.gemfile.lock +0 -284
  808. data/gemfiles/ruby_2.5.6_rails61_mysql2.gemfile +0 -44
  809. data/gemfiles/ruby_2.5.6_rails61_mysql2.gemfile.lock +0 -295
  810. data/gemfiles/ruby_2.5.6_rails61_postgres.gemfile +0 -44
  811. data/gemfiles/ruby_2.5.6_rails61_postgres.gemfile.lock +0 -295
  812. data/gemfiles/ruby_2.5.6_rails61_postgres_redis.gemfile +0 -45
  813. data/gemfiles/ruby_2.5.6_rails61_postgres_redis.gemfile.lock +0 -297
  814. data/gemfiles/ruby_2.5.6_rails61_postgres_sidekiq.gemfile +0 -45
  815. data/gemfiles/ruby_2.5.6_rails61_postgres_sidekiq.gemfile.lock +0 -302
  816. data/gemfiles/ruby_2.5.6_rails6_mysql2.gemfile +0 -44
  817. data/gemfiles/ruby_2.5.6_rails6_mysql2.gemfile.lock +0 -292
  818. data/gemfiles/ruby_2.5.6_rails6_postgres.gemfile +0 -44
  819. data/gemfiles/ruby_2.5.6_rails6_postgres.gemfile.lock +0 -292
  820. data/gemfiles/ruby_2.5.6_rails6_postgres_redis.gemfile +0 -45
  821. data/gemfiles/ruby_2.5.6_rails6_postgres_redis.gemfile.lock +0 -294
  822. data/gemfiles/ruby_2.5.6_rails6_postgres_redis_activesupport.gemfile +0 -45
  823. data/gemfiles/ruby_2.5.6_rails6_postgres_redis_activesupport.gemfile.lock +0 -294
  824. data/gemfiles/ruby_2.5.6_rails6_postgres_sidekiq.gemfile +0 -46
  825. data/gemfiles/ruby_2.5.6_rails6_postgres_sidekiq.gemfile.lock +0 -300
  826. data/gemfiles/ruby_2.5.6_resque2_redis3.gemfile +0 -40
  827. data/gemfiles/ruby_2.5.6_resque2_redis3.gemfile.lock +0 -188
  828. data/gemfiles/ruby_2.5.6_resque2_redis4.gemfile +0 -40
  829. data/gemfiles/ruby_2.5.6_resque2_redis4.gemfile.lock +0 -188
  830. data/gemfiles/ruby_2.6.4_contrib.gemfile +0 -79
  831. data/gemfiles/ruby_2.6.4_contrib.gemfile.lock +0 -1524
  832. data/gemfiles/ruby_2.6.4_contrib_old.gemfile +0 -39
  833. data/gemfiles/ruby_2.6.4_contrib_old.gemfile.lock +0 -167
  834. data/gemfiles/ruby_2.6.4_core_old.gemfile +0 -38
  835. data/gemfiles/ruby_2.6.4_core_old.gemfile.lock +0 -163
  836. data/gemfiles/ruby_2.6.4_cucumber3.gemfile +0 -39
  837. data/gemfiles/ruby_2.6.4_cucumber3.gemfile.lock +0 -184
  838. data/gemfiles/ruby_2.6.4_cucumber4.gemfile +0 -39
  839. data/gemfiles/ruby_2.6.4_cucumber4.gemfile.lock +0 -216
  840. data/gemfiles/ruby_2.6.4_cucumber5.gemfile +0 -39
  841. data/gemfiles/ruby_2.6.4_cucumber5.gemfile.lock +0 -216
  842. data/gemfiles/ruby_2.6.4_rails5_mysql2.gemfile +0 -42
  843. data/gemfiles/ruby_2.6.4_rails5_mysql2.gemfile.lock +0 -276
  844. data/gemfiles/ruby_2.6.4_rails5_postgres.gemfile +0 -42
  845. data/gemfiles/ruby_2.6.4_rails5_postgres.gemfile.lock +0 -276
  846. data/gemfiles/ruby_2.6.4_rails5_postgres_redis.gemfile +0 -43
  847. data/gemfiles/ruby_2.6.4_rails5_postgres_redis.gemfile.lock +0 -278
  848. data/gemfiles/ruby_2.6.4_rails5_postgres_redis_activesupport.gemfile +0 -43
  849. data/gemfiles/ruby_2.6.4_rails5_postgres_redis_activesupport.gemfile.lock +0 -278
  850. data/gemfiles/ruby_2.6.4_rails5_postgres_sidekiq.gemfile +0 -44
  851. data/gemfiles/ruby_2.6.4_rails5_postgres_sidekiq.gemfile.lock +0 -284
  852. data/gemfiles/ruby_2.6.4_rails61_mysql2.gemfile +0 -42
  853. data/gemfiles/ruby_2.6.4_rails61_mysql2.gemfile.lock +0 -295
  854. data/gemfiles/ruby_2.6.4_rails61_postgres.gemfile +0 -42
  855. data/gemfiles/ruby_2.6.4_rails61_postgres.gemfile.lock +0 -295
  856. data/gemfiles/ruby_2.6.4_rails61_postgres_redis.gemfile +0 -43
  857. data/gemfiles/ruby_2.6.4_rails61_postgres_redis.gemfile.lock +0 -297
  858. data/gemfiles/ruby_2.6.4_rails61_postgres_sidekiq.gemfile +0 -43
  859. data/gemfiles/ruby_2.6.4_rails61_postgres_sidekiq.gemfile.lock +0 -302
  860. data/gemfiles/ruby_2.6.4_rails6_mysql2.gemfile +0 -42
  861. data/gemfiles/ruby_2.6.4_rails6_mysql2.gemfile.lock +0 -292
  862. data/gemfiles/ruby_2.6.4_rails6_postgres.gemfile +0 -42
  863. data/gemfiles/ruby_2.6.4_rails6_postgres.gemfile.lock +0 -292
  864. data/gemfiles/ruby_2.6.4_rails6_postgres_redis.gemfile +0 -43
  865. data/gemfiles/ruby_2.6.4_rails6_postgres_redis.gemfile.lock +0 -294
  866. data/gemfiles/ruby_2.6.4_rails6_postgres_redis_activesupport.gemfile +0 -43
  867. data/gemfiles/ruby_2.6.4_rails6_postgres_redis_activesupport.gemfile.lock +0 -294
  868. data/gemfiles/ruby_2.6.4_rails6_postgres_sidekiq.gemfile +0 -44
  869. data/gemfiles/ruby_2.6.4_rails6_postgres_sidekiq.gemfile.lock +0 -300
  870. data/gemfiles/ruby_2.6.4_resque2_redis3.gemfile +0 -40
  871. data/gemfiles/ruby_2.6.4_resque2_redis3.gemfile.lock +0 -190
  872. data/gemfiles/ruby_2.6.4_resque2_redis4.gemfile +0 -40
  873. data/gemfiles/ruby_2.6.4_resque2_redis4.gemfile.lock +0 -190
  874. data/gemfiles/ruby_2.7.0_contrib.gemfile +0 -78
  875. data/gemfiles/ruby_2.7.0_contrib.gemfile.lock +0 -1523
  876. data/gemfiles/ruby_2.7.0_contrib_old.gemfile +0 -39
  877. data/gemfiles/ruby_2.7.0_contrib_old.gemfile.lock +0 -167
  878. data/gemfiles/ruby_2.7.0_core_old.gemfile +0 -38
  879. data/gemfiles/ruby_2.7.0_core_old.gemfile.lock +0 -163
  880. data/gemfiles/ruby_2.7.0_cucumber3.gemfile +0 -39
  881. data/gemfiles/ruby_2.7.0_cucumber3.gemfile.lock +0 -184
  882. data/gemfiles/ruby_2.7.0_cucumber4.gemfile +0 -39
  883. data/gemfiles/ruby_2.7.0_cucumber4.gemfile.lock +0 -216
  884. data/gemfiles/ruby_2.7.0_cucumber5.gemfile +0 -39
  885. data/gemfiles/ruby_2.7.0_cucumber5.gemfile.lock +0 -216
  886. data/gemfiles/ruby_2.7.0_rails5_mysql2.gemfile +0 -42
  887. data/gemfiles/ruby_2.7.0_rails5_mysql2.gemfile.lock +0 -276
  888. data/gemfiles/ruby_2.7.0_rails5_postgres.gemfile +0 -42
  889. data/gemfiles/ruby_2.7.0_rails5_postgres.gemfile.lock +0 -276
  890. data/gemfiles/ruby_2.7.0_rails5_postgres_redis.gemfile +0 -44
  891. data/gemfiles/ruby_2.7.0_rails5_postgres_redis.gemfile.lock +0 -295
  892. data/gemfiles/ruby_2.7.0_rails5_postgres_redis_activesupport.gemfile +0 -44
  893. data/gemfiles/ruby_2.7.0_rails5_postgres_redis_activesupport.gemfile.lock +0 -295
  894. data/gemfiles/ruby_2.7.0_rails5_postgres_sidekiq.gemfile +0 -44
  895. data/gemfiles/ruby_2.7.0_rails5_postgres_sidekiq.gemfile.lock +0 -284
  896. data/gemfiles/ruby_2.7.0_rails61_mysql2.gemfile +0 -42
  897. data/gemfiles/ruby_2.7.0_rails61_mysql2.gemfile.lock +0 -295
  898. data/gemfiles/ruby_2.7.0_rails61_postgres.gemfile +0 -42
  899. data/gemfiles/ruby_2.7.0_rails61_postgres.gemfile.lock +0 -295
  900. data/gemfiles/ruby_2.7.0_rails61_postgres_redis.gemfile +0 -43
  901. data/gemfiles/ruby_2.7.0_rails61_postgres_redis.gemfile.lock +0 -297
  902. data/gemfiles/ruby_2.7.0_rails61_postgres_sidekiq.gemfile +0 -43
  903. data/gemfiles/ruby_2.7.0_rails61_postgres_sidekiq.gemfile.lock +0 -302
  904. data/gemfiles/ruby_2.7.0_rails6_mysql2.gemfile +0 -42
  905. data/gemfiles/ruby_2.7.0_rails6_mysql2.gemfile.lock +0 -292
  906. data/gemfiles/ruby_2.7.0_rails6_postgres.gemfile +0 -42
  907. data/gemfiles/ruby_2.7.0_rails6_postgres.gemfile.lock +0 -292
  908. data/gemfiles/ruby_2.7.0_rails6_postgres_redis.gemfile +0 -44
  909. data/gemfiles/ruby_2.7.0_rails6_postgres_redis.gemfile.lock +0 -311
  910. data/gemfiles/ruby_2.7.0_rails6_postgres_redis_activesupport.gemfile +0 -44
  911. data/gemfiles/ruby_2.7.0_rails6_postgres_redis_activesupport.gemfile.lock +0 -311
  912. data/gemfiles/ruby_2.7.0_rails6_postgres_sidekiq.gemfile +0 -44
  913. data/gemfiles/ruby_2.7.0_rails6_postgres_sidekiq.gemfile.lock +0 -300
  914. data/gemfiles/ruby_2.7.0_resque2_redis3.gemfile +0 -40
  915. data/gemfiles/ruby_2.7.0_resque2_redis3.gemfile.lock +0 -190
  916. data/gemfiles/ruby_2.7.0_resque2_redis4.gemfile +0 -40
  917. data/gemfiles/ruby_2.7.0_resque2_redis4.gemfile.lock +0 -190
  918. data/gemfiles/ruby_3.0.0_contrib.gemfile +0 -77
  919. data/gemfiles/ruby_3.0.0_contrib.gemfile.lock +0 -1534
  920. data/gemfiles/ruby_3.0.0_core_old.gemfile +0 -39
  921. data/gemfiles/ruby_3.0.0_core_old.gemfile.lock +0 -165
  922. data/gemfiles/ruby_3.0.0_cucumber3.gemfile +0 -40
  923. data/gemfiles/ruby_3.0.0_cucumber3.gemfile.lock +0 -186
  924. data/gemfiles/ruby_3.0.0_cucumber4.gemfile +0 -40
  925. data/gemfiles/ruby_3.0.0_cucumber4.gemfile.lock +0 -218
  926. data/gemfiles/ruby_3.0.0_cucumber5.gemfile +0 -40
  927. data/gemfiles/ruby_3.0.0_cucumber5.gemfile.lock +0 -218
  928. data/gemfiles/ruby_3.0.0_rails61_mysql2.gemfile +0 -43
  929. data/gemfiles/ruby_3.0.0_rails61_mysql2.gemfile.lock +0 -295
  930. data/gemfiles/ruby_3.0.0_rails61_postgres.gemfile +0 -43
  931. data/gemfiles/ruby_3.0.0_rails61_postgres.gemfile.lock +0 -295
  932. data/gemfiles/ruby_3.0.0_rails61_postgres_redis.gemfile +0 -44
  933. data/gemfiles/ruby_3.0.0_rails61_postgres_redis.gemfile.lock +0 -297
  934. data/gemfiles/ruby_3.0.0_rails61_postgres_sidekiq.gemfile +0 -44
  935. data/gemfiles/ruby_3.0.0_rails61_postgres_sidekiq.gemfile.lock +0 -302
  936. data/gemfiles/ruby_3.0.0_resque2_redis3.gemfile +0 -41
  937. data/gemfiles/ruby_3.0.0_resque2_redis3.gemfile.lock +0 -192
  938. data/gemfiles/ruby_3.0.0_resque2_redis4.gemfile +0 -41
  939. data/gemfiles/ruby_3.0.0_resque2_redis4.gemfile.lock +0 -192
  940. data/integration/README.md +0 -67
  941. data/integration/apps/rack/.dockerignore +0 -1
  942. data/integration/apps/rack/.envrc.sample +0 -1
  943. data/integration/apps/rack/.gitignore +0 -4
  944. data/integration/apps/rack/.rspec +0 -1
  945. data/integration/apps/rack/Dockerfile +0 -28
  946. data/integration/apps/rack/Dockerfile-ci +0 -11
  947. data/integration/apps/rack/Gemfile +0 -24
  948. data/integration/apps/rack/README.md +0 -93
  949. data/integration/apps/rack/app/acme.rb +0 -80
  950. data/integration/apps/rack/app/datadog.rb +0 -17
  951. data/integration/apps/rack/bin/run +0 -22
  952. data/integration/apps/rack/bin/setup +0 -17
  953. data/integration/apps/rack/bin/test +0 -24
  954. data/integration/apps/rack/config.ru +0 -6
  955. data/integration/apps/rack/config/puma.rb +0 -14
  956. data/integration/apps/rack/config/unicorn.rb +0 -23
  957. data/integration/apps/rack/docker-compose.ci.yml +0 -62
  958. data/integration/apps/rack/docker-compose.yml +0 -78
  959. data/integration/apps/rack/script/build-images +0 -38
  960. data/integration/apps/rack/script/ci +0 -50
  961. data/integration/apps/rack/spec/integration/basic_spec.rb +0 -10
  962. data/integration/apps/rack/spec/spec_helper.rb +0 -16
  963. data/integration/apps/rack/spec/support/integration_helper.rb +0 -22
  964. data/integration/apps/rails-five/.dockerignore +0 -1
  965. data/integration/apps/rails-five/.env +0 -3
  966. data/integration/apps/rails-five/.envrc.sample +0 -1
  967. data/integration/apps/rails-five/.gitignore +0 -30
  968. data/integration/apps/rails-five/Dockerfile +0 -25
  969. data/integration/apps/rails-five/Dockerfile-ci +0 -11
  970. data/integration/apps/rails-five/Gemfile +0 -104
  971. data/integration/apps/rails-five/README.md +0 -94
  972. data/integration/apps/rails-five/Rakefile +0 -6
  973. data/integration/apps/rails-five/app/channels/application_cable/channel.rb +0 -4
  974. data/integration/apps/rails-five/app/channels/application_cable/connection.rb +0 -4
  975. data/integration/apps/rails-five/app/controllers/application_controller.rb +0 -2
  976. data/integration/apps/rails-five/app/controllers/basic_controller.rb +0 -36
  977. data/integration/apps/rails-five/app/controllers/concerns/.keep +0 -0
  978. data/integration/apps/rails-five/app/controllers/health_controller.rb +0 -9
  979. data/integration/apps/rails-five/app/controllers/jobs_controller.rb +0 -12
  980. data/integration/apps/rails-five/app/jobs/application_job.rb +0 -2
  981. data/integration/apps/rails-five/app/jobs/test_job.rb +0 -12
  982. data/integration/apps/rails-five/app/mailers/application_mailer.rb +0 -4
  983. data/integration/apps/rails-five/app/models/application_record.rb +0 -3
  984. data/integration/apps/rails-five/app/models/concerns/.keep +0 -0
  985. data/integration/apps/rails-five/app/models/test.rb +0 -2
  986. data/integration/apps/rails-five/app/views/layouts/mailer.html.erb +0 -13
  987. data/integration/apps/rails-five/app/views/layouts/mailer.text.erb +0 -1
  988. data/integration/apps/rails-five/bin/bundle +0 -3
  989. data/integration/apps/rails-five/bin/rails +0 -9
  990. data/integration/apps/rails-five/bin/rake +0 -9
  991. data/integration/apps/rails-five/bin/run +0 -24
  992. data/integration/apps/rails-five/bin/setup +0 -27
  993. data/integration/apps/rails-five/bin/spring +0 -17
  994. data/integration/apps/rails-five/bin/test +0 -21
  995. data/integration/apps/rails-five/bin/update +0 -28
  996. data/integration/apps/rails-five/config.ru +0 -5
  997. data/integration/apps/rails-five/config/application.rb +0 -97
  998. data/integration/apps/rails-five/config/boot.rb +0 -4
  999. data/integration/apps/rails-five/config/cable.yml +0 -10
  1000. data/integration/apps/rails-five/config/credentials.yml.enc +0 -1
  1001. data/integration/apps/rails-five/config/database.yml +0 -28
  1002. data/integration/apps/rails-five/config/environment.rb +0 -5
  1003. data/integration/apps/rails-five/config/environments/development.rb +0 -51
  1004. data/integration/apps/rails-five/config/environments/production.rb +0 -82
  1005. data/integration/apps/rails-five/config/environments/test.rb +0 -43
  1006. data/integration/apps/rails-five/config/initializers/datadog.rb +0 -18
  1007. data/integration/apps/rails-five/config/initializers/filter_parameter_logging.rb +0 -4
  1008. data/integration/apps/rails-five/config/initializers/resque.rb +0 -4
  1009. data/integration/apps/rails-five/config/initializers/rollbar.rb +0 -5
  1010. data/integration/apps/rails-five/config/initializers/wrap_parameters.rb +0 -14
  1011. data/integration/apps/rails-five/config/locales/en.yml +0 -33
  1012. data/integration/apps/rails-five/config/puma.rb +0 -24
  1013. data/integration/apps/rails-five/config/routes.rb +0 -11
  1014. data/integration/apps/rails-five/config/spring.rb +0 -6
  1015. data/integration/apps/rails-five/config/unicorn.rb +0 -29
  1016. data/integration/apps/rails-five/db/migrate/20190927215052_create_tests.rb +0 -11
  1017. data/integration/apps/rails-five/db/schema.rb +0 -23
  1018. data/integration/apps/rails-five/db/seeds.rb +0 -7
  1019. data/integration/apps/rails-five/docker-compose.ci.yml +0 -98
  1020. data/integration/apps/rails-five/docker-compose.yml +0 -100
  1021. data/integration/apps/rails-five/lib/tasks/.keep +0 -0
  1022. data/integration/apps/rails-five/log/.keep +0 -0
  1023. data/integration/apps/rails-five/public/robots.txt +0 -1
  1024. data/integration/apps/rails-five/script/build-images +0 -35
  1025. data/integration/apps/rails-five/script/ci +0 -50
  1026. data/integration/apps/rails-five/spec/integration/basic_spec.rb +0 -10
  1027. data/integration/apps/rails-five/spec/spec_helper.rb +0 -16
  1028. data/integration/apps/rails-five/spec/support/integration_helper.rb +0 -22
  1029. data/integration/apps/rails-five/storage/.keep +0 -0
  1030. data/integration/apps/rails-five/tmp/.keep +0 -0
  1031. data/integration/apps/rails-five/vendor/.keep +0 -0
  1032. data/integration/apps/ruby/.dockerignore +0 -1
  1033. data/integration/apps/ruby/.envrc.sample +0 -1
  1034. data/integration/apps/ruby/.gitignore +0 -2
  1035. data/integration/apps/ruby/Dockerfile +0 -25
  1036. data/integration/apps/ruby/Dockerfile-ci +0 -11
  1037. data/integration/apps/ruby/Gemfile +0 -11
  1038. data/integration/apps/ruby/README.md +0 -70
  1039. data/integration/apps/ruby/agent.yaml +0 -3
  1040. data/integration/apps/ruby/app/datadog.rb +0 -13
  1041. data/integration/apps/ruby/app/fibonacci.rb +0 -58
  1042. data/integration/apps/ruby/bin/run +0 -20
  1043. data/integration/apps/ruby/bin/setup +0 -17
  1044. data/integration/apps/ruby/bin/test +0 -21
  1045. data/integration/apps/ruby/docker-compose.ci.yml +0 -51
  1046. data/integration/apps/ruby/docker-compose.yml +0 -63
  1047. data/integration/apps/ruby/script/build-images +0 -38
  1048. data/integration/apps/ruby/script/ci +0 -50
  1049. data/integration/images/agent/Dockerfile +0 -2
  1050. data/integration/images/agent/agent.yaml +0 -3
  1051. data/integration/images/include/datadog/analyzer.rb +0 -71
  1052. data/integration/images/include/datadog/demo_env.rb +0 -101
  1053. data/integration/images/include/http-health-check +0 -33
  1054. data/integration/images/ruby/2.0/Dockerfile +0 -54
  1055. data/integration/images/ruby/2.1/Dockerfile +0 -54
  1056. data/integration/images/ruby/2.2/Dockerfile +0 -54
  1057. data/integration/images/ruby/2.3/Dockerfile +0 -70
  1058. data/integration/images/ruby/2.4/Dockerfile +0 -54
  1059. data/integration/images/ruby/2.5/Dockerfile +0 -54
  1060. data/integration/images/ruby/2.6/Dockerfile +0 -54
  1061. data/integration/images/ruby/2.7/Dockerfile +0 -54
  1062. data/integration/images/ruby/3.0/Dockerfile +0 -54
  1063. data/integration/images/wrk/Dockerfile +0 -33
  1064. data/integration/images/wrk/scripts/entrypoint.sh +0 -17
  1065. data/integration/images/wrk/scripts/scenarios/basic/default.lua +0 -1
  1066. data/integration/images/wrk/scripts/scenarios/basic/fibonacci.lua +0 -1
  1067. data/integration/script/build-images +0 -43
  1068. data/lib/ddtrace/contrib/cucumber/configuration/settings.rb +0 -28
  1069. data/lib/ddtrace/contrib/cucumber/ext.rb +0 -17
  1070. data/lib/ddtrace/contrib/cucumber/formatter.rb +0 -98
  1071. data/lib/ddtrace/contrib/cucumber/instrumentation.rb +0 -24
  1072. data/lib/ddtrace/contrib/cucumber/integration.rb +0 -45
  1073. data/lib/ddtrace/contrib/cucumber/patcher.rb +0 -23
  1074. data/lib/ddtrace/contrib/rspec/configuration/settings.rb +0 -28
  1075. data/lib/ddtrace/contrib/rspec/example.rb +0 -75
  1076. data/lib/ddtrace/contrib/rspec/ext.rb +0 -16
  1077. data/lib/ddtrace/contrib/rspec/integration.rb +0 -46
  1078. data/lib/ddtrace/environment.rb +0 -41
  1079. data/lib/ddtrace/ext/ci.rb +0 -297
  1080. data/lib/ddtrace/runtime/cgroup.rb +0 -44
  1081. data/lib/ddtrace/runtime/class_count.rb +0 -17
  1082. data/lib/ddtrace/runtime/container.rb +0 -87
  1083. data/lib/ddtrace/runtime/gc.rb +0 -16
  1084. data/lib/ddtrace/runtime/identity.rb +0 -48
  1085. data/lib/ddtrace/runtime/object_space.rb +0 -19
  1086. data/lib/ddtrace/runtime/socket.rb +0 -14
  1087. data/lib/ddtrace/runtime/thread_count.rb +0 -16
  1088. data/tasks/release_gem.rake +0 -28
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  module Datadog
2
3
  module OpenTracer
3
4
  # OpenTracing propagator for Datadog::OpenTracer::Tracer
@@ -1,3 +1,4 @@
1
+ # typed: strict
1
2
  module Datadog
2
3
  module OpenTracer
3
4
  class Carrier < ::OpenTracing::Carrier
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  require 'ddtrace/span'
2
3
  require 'ddtrace/ext/distributed'
3
4
 
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  module Datadog
2
3
  module OpenTracer
3
4
  # Patch for OpenTracing module
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  module Datadog
2
3
  module OpenTracer
3
4
  # OpenTracing propagator for Datadog::OpenTracer::Tracer
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  require 'ddtrace/propagation/http_propagator'
2
3
 
3
4
  module Datadog
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  module Datadog
2
3
  module OpenTracer
3
4
  # OpenTracing adapter for scope
@@ -1,3 +1,4 @@
1
+ # typed: strict
1
2
  module Datadog
2
3
  module OpenTracer
3
4
  class ScopeManager < ::OpenTracing::ScopeManager
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  module Datadog
2
3
  module OpenTracer
3
4
  # OpenTracing adapter for Datadog::Span
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  module Datadog
2
3
  module OpenTracer
3
4
  # OpenTracing adapter for SpanContext
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  module Datadog
2
3
  module OpenTracer
3
4
  # Creates new Datadog::OpenTracer::SpanContext
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  require 'ddtrace/ext/distributed'
2
3
 
3
4
  module Datadog
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  module Datadog
2
3
  module OpenTracer
3
4
  # OpenTracing adapter for thread local scopes
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  module Datadog
2
3
  module OpenTracer
3
4
  # OpenTracing adapter for thread local scope management
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  require 'ddtrace/tracer'
2
3
 
3
4
  module Datadog
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  require 'ddtrace/utils/only_once'
2
3
 
3
4
  module Datadog
@@ -16,8 +17,8 @@ module Datadog
16
17
  )
17
18
  end
18
19
 
19
- base.send(:extend, CommonMethods)
20
- base.send(:include, CommonMethods)
20
+ base.extend(CommonMethods)
21
+ base.include(CommonMethods)
21
22
  end
22
23
 
23
24
  # Defines some common methods for patching, that can be used
data/lib/ddtrace/pin.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  require 'ddtrace/patcher'
2
3
  require 'ddtrace/utils/only_once'
3
4
 
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  module Datadog
2
3
  # Pipeline
3
4
  module Pipeline
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  module Datadog
2
3
  module Pipeline
3
4
  # SpanFilter implements a processor that filters entire span subtrees
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  module Datadog
2
3
  module Pipeline
3
4
  # SpanProcessor
@@ -1,54 +1,59 @@
1
+ # typed: true
2
+ require 'datadog/core/environment/variable_helpers'
3
+ require 'ddtrace/utils/only_once'
4
+
1
5
  module Datadog
2
6
  # Contains profiler for generating stack profiles, etc.
3
- module Profiling
4
- module_function
5
-
7
+ module Profiling # rubocop:disable Metrics/ModuleLength
6
8
  GOOGLE_PROTOBUF_MINIMUM_VERSION = Gem::Version.new('3.0')
7
9
  private_constant :GOOGLE_PROTOBUF_MINIMUM_VERSION
8
10
 
9
- def supported?
11
+ SKIPPED_NATIVE_EXTENSION_ONLY_ONCE = Datadog::Utils::OnlyOnce.new
12
+ private_constant :SKIPPED_NATIVE_EXTENSION_ONLY_ONCE
13
+
14
+ def self.supported?
10
15
  unsupported_reason.nil?
11
16
  end
12
17
 
13
- def unsupported_reason
18
+ def self.unsupported_reason
14
19
  # NOTE: Only the first matching reason is returned, so try to keep a nice order on reasons -- e.g. tell users
15
20
  # first that they can't use this on JRuby before telling them that they are missing protobuf
16
21
 
17
- ruby_engine_unsupported? || ruby_version_unsupported? ||
18
- protobuf_gem_unavailable? || protobuf_version_unsupported? || protobuf_failed_to_load?
22
+ ruby_engine_unsupported? ||
23
+ native_library_failed_to_load? ||
24
+ protobuf_gem_unavailable? ||
25
+ protobuf_version_unsupported? ||
26
+ protobuf_failed_to_load?
19
27
  end
20
28
 
21
- def self.ruby_engine_unsupported?
29
+ private_class_method def self.ruby_engine_unsupported?
22
30
  'JRuby is not supported' if RUBY_ENGINE == 'jruby'
23
31
  end
24
- private_class_method :ruby_engine_unsupported?
25
-
26
- def self.ruby_version_unsupported?
27
- 'Ruby >= 2.1 is required' if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.1')
28
- end
29
- private_class_method :ruby_version_unsupported?
30
32
 
31
- def self.protobuf_gem_unavailable?
32
- if Gem.loaded_specs['google-protobuf'].nil?
33
+ private_class_method def self.protobuf_gem_unavailable?
34
+ # NOTE: On environments where protobuf is already loaded, we skip the check. This allows us to support environments
35
+ # where no Gem.loaded_version is NOT available but customers are able to load protobuf; see for instance
36
+ # https://github.com/teamcapybara/capybara/commit/caf3bcd7664f4f2691d0ca9ef3be9a2a954fecfb
37
+ if !defined?(::Google::Protobuf) && Gem.loaded_specs['google-protobuf'].nil?
33
38
  "Missing google-protobuf dependency; please add `gem 'google-protobuf', '~> 3.0'` to your Gemfile or gems.rb file"
34
39
  end
35
40
  end
36
- private_class_method :protobuf_gem_unavailable?
37
41
 
38
- def self.protobuf_version_unsupported?
39
- if Gem.loaded_specs['google-protobuf'].version < GOOGLE_PROTOBUF_MINIMUM_VERSION
42
+ private_class_method def self.protobuf_version_unsupported?
43
+ # See above for why we skip the check when protobuf is already loaded; note that when protobuf was already loaded
44
+ # we skip the version check to avoid the call to Gem.loaded_specs. Unfortunately, protobuf does not seem to
45
+ # expose the gem version constant elsewhere, so in that setup we are not able to check the version.
46
+ if !defined?(::Google::Protobuf) && Gem.loaded_specs['google-protobuf'].version < GOOGLE_PROTOBUF_MINIMUM_VERSION
40
47
  'Your google-protobuf is too old; ensure that you have google-protobuf >= 3.0 by ' \
41
48
  "adding `gem 'google-protobuf', '~> 3.0'` to your Gemfile or gems.rb file"
42
49
  end
43
50
  end
44
- private_class_method :protobuf_version_unsupported?
45
51
 
46
- def self.protobuf_failed_to_load?
52
+ private_class_method def self.protobuf_failed_to_load?
47
53
  unless protobuf_loaded_successfully?
48
54
  'There was an error loading the google-protobuf library; see previous warning message for details'
49
55
  end
50
56
  end
51
- private_class_method :protobuf_failed_to_load?
52
57
 
53
58
  # The `google-protobuf` gem depends on a native component, and its creators helpfully tried to provide precompiled
54
59
  # versions of this extension on rubygems.org.
@@ -59,15 +64,18 @@ module Datadog
59
64
  #
60
65
  # Thus, the gem can still be installed, but can be in a broken state. To avoid breaking customer applications, we
61
66
  # use this helper to load it and gracefully handle failures.
62
- def self.protobuf_loaded_successfully?
67
+ private_class_method def self.protobuf_loaded_successfully?
63
68
  return @protobuf_loaded if defined?(@protobuf_loaded)
64
69
 
65
70
  begin
66
71
  require 'google/protobuf'
67
72
  @protobuf_loaded = true
68
73
  rescue LoadError => e
74
+ # NOTE: We use Kernel#warn here because this code gets run BEFORE Datadog.logger is actually set up.
75
+ # In the future it'd be nice to shuffle the logger startup to happen first to avoid this special case.
69
76
  Kernel.warn(
70
- "[DDTRACE] Error while loading google-protobuf gem. Cause: '#{e.message}' Location: '#{e.backtrace.first}'. " \
77
+ '[DDTRACE] Error while loading google-protobuf gem. ' \
78
+ "Cause: '#{e.message}' Location: '#{Array(e.backtrace).first}'. " \
71
79
  'This can happen when google-protobuf is missing its native components. ' \
72
80
  'To fix this, try removing and reinstalling the gem, forcing it to recompile the components: ' \
73
81
  '`gem uninstall google-protobuf -a; BUNDLE_FORCE_RUBY_PLATFORM=true bundle install`. ' \
@@ -77,9 +85,47 @@ module Datadog
77
85
  @protobuf_loaded = false
78
86
  end
79
87
  end
80
- private_class_method :protobuf_loaded_successfully?
81
88
 
82
- def self.load_profiling
89
+ private_class_method def self.native_library_failed_to_load?
90
+ success, exception = try_loading_native_library
91
+
92
+ unless success
93
+ if exception
94
+ 'There was an error loading the profiling native extension due to ' \
95
+ "'#{exception.message}' at '#{exception.backtrace.first}'"
96
+ else
97
+ 'The profiling native extension did not load correctly. ' \
98
+ 'If the error persists, please contact support via <https://docs.datadoghq.com/help/> or ' \
99
+ 'file a bug at <https://github.com/DataDog/dd-trace-rb/blob/master/CONTRIBUTING.md#found-a-bug>.'
100
+ end
101
+ end
102
+ end
103
+
104
+ private_class_method def self.try_loading_native_library
105
+ if Datadog::Core::Environment::VariableHelpers.env_to_bool('DD_PROFILING_NO_EXTENSION', false)
106
+ SKIPPED_NATIVE_EXTENSION_ONLY_ONCE.run do
107
+ Kernel.warn(
108
+ '[DDTRACE] Skipped loading of profiling native extension due to DD_PROFILING_NO_EXTENSION environment ' \
109
+ 'variable being set. ' \
110
+ 'This option is experimental and will lead to the profiler not working in future releases. ' \
111
+ 'If you needed to use this, please tell us why on <https://github.com/DataDog/dd-trace-rb/issues/new>.'
112
+ )
113
+ end
114
+
115
+ return [true, nil]
116
+ end
117
+
118
+ begin
119
+ require "ddtrace_profiling_native_extension.#{RUBY_VERSION}_#{RUBY_PLATFORM}"
120
+ success =
121
+ defined?(Datadog::Profiling::NativeExtension) && Datadog::Profiling::NativeExtension.send(:native_working?)
122
+ [success, nil]
123
+ rescue StandardError, LoadError => e
124
+ [false, e]
125
+ end
126
+ end
127
+
128
+ private_class_method def self.load_profiling
83
129
  return false unless supported?
84
130
 
85
131
  require 'ddtrace/profiling/ext/cpu'
@@ -93,12 +139,12 @@ module Datadog
93
139
  require 'ddtrace/profiling/transport/io'
94
140
  require 'ddtrace/profiling/transport/http'
95
141
  require 'ddtrace/profiling/profiler'
96
-
142
+ require 'ddtrace/profiling/native_extension'
143
+ require 'ddtrace/profiling/trace_identifiers/helper'
97
144
  require 'ddtrace/profiling/pprof/pprof_pb'
98
145
 
99
146
  true
100
147
  end
101
- private_class_method :load_profiling
102
148
 
103
149
  load_profiling if supported?
104
150
  end
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  module Datadog
2
3
  module Profiling
3
4
  # Entity class used to represent an entry in a stack trace.
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  require 'ddtrace/buffer'
2
3
  require 'ddtrace/utils/string_table'
3
4
  require 'ddtrace/utils/object_set'
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  require 'ddtrace/profiling/backtrace_location'
2
3
  require 'ddtrace/profiling/events/stack'
3
4
  require 'ddtrace/utils/only_once'
@@ -11,8 +12,7 @@ module Datadog
11
12
  # Collects stack trace samples from Ruby threads for both CPU-time (if available) and wall-clock.
12
13
  # Runs on its own background thread.
13
14
  #
14
- # rubocop:disable Metrics/ClassLength
15
- class Stack < Worker
15
+ class Stack < Worker # rubocop:disable Metrics/ClassLength
16
16
  include Workers::Polling
17
17
 
18
18
  DEFAULT_MAX_TIME_USAGE_PCT = 2.0
@@ -22,6 +22,7 @@ module Datadog
22
22
  attr_reader \
23
23
  :recorder,
24
24
  :max_frames,
25
+ :trace_identifiers_helper,
25
26
  :ignore_thread,
26
27
  :max_time_usage_pct,
27
28
  :thread_api
@@ -29,6 +30,7 @@ module Datadog
29
30
  def initialize(
30
31
  recorder,
31
32
  max_frames:,
33
+ trace_identifiers_helper:, # Usually an instance of Datadog::Profiling::TraceIdentifiers::Helper
32
34
  ignore_thread: nil,
33
35
  max_time_usage_pct: DEFAULT_MAX_TIME_USAGE_PCT,
34
36
  thread_api: Thread,
@@ -38,6 +40,7 @@ module Datadog
38
40
  )
39
41
  @recorder = recorder
40
42
  @max_frames = max_frames
43
+ @trace_identifiers_helper = trace_identifiers_helper
41
44
  @ignore_thread = ignore_thread
42
45
  @max_time_usage_pct = max_time_usage_pct
43
46
  @thread_api = thread_api
@@ -122,8 +125,8 @@ module Datadog
122
125
  # Convert backtrace locations into structs
123
126
  locations = convert_backtrace_locations(locations)
124
127
 
125
- thread_id = thread.respond_to?(:native_thread_id) ? thread.native_thread_id : thread.object_id
126
- trace_id, span_id = get_trace_identifiers(thread)
128
+ thread_id = thread.respond_to?(:pthread_thread_id) ? thread.pthread_thread_id : thread.object_id
129
+ trace_id, span_id, trace_resource_container = trace_identifiers_helper.trace_identifiers_for(thread)
127
130
  cpu_time = get_cpu_time_interval!(thread)
128
131
 
129
132
  Events::StackSample.new(
@@ -133,6 +136,7 @@ module Datadog
133
136
  thread_id,
134
137
  trace_id,
135
138
  span_id,
139
+ trace_resource_container,
136
140
  cpu_time,
137
141
  wall_time_interval_ns
138
142
  )
@@ -152,24 +156,16 @@ module Datadog
152
156
  # *before* the thread had time to finish the initialization
153
157
  return unless current_cpu_time_ns
154
158
 
155
- last_cpu_time_ns = (thread[THREAD_LAST_CPU_TIME_KEY] || current_cpu_time_ns)
159
+ last_cpu_time_ns = (thread.thread_variable_get(THREAD_LAST_CPU_TIME_KEY) || current_cpu_time_ns)
156
160
  interval = current_cpu_time_ns - last_cpu_time_ns
157
161
 
158
162
  # Update CPU time for thread
159
- thread[THREAD_LAST_CPU_TIME_KEY] = current_cpu_time_ns
163
+ thread.thread_variable_set(THREAD_LAST_CPU_TIME_KEY, current_cpu_time_ns)
160
164
 
161
165
  # Return interval
162
166
  interval
163
167
  end
164
168
 
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]
171
- end
172
-
173
169
  def compute_wait_time(used_time)
174
170
  # We took used_time to get the last sample.
175
171
  #
@@ -224,6 +220,7 @@ module Datadog
224
220
  # In this case, the fix is to make sure ddtrace gets loaded before any other parts of the application.
225
221
  #
226
222
  # b) The thread was started using the Ruby native APIs (e.g. from a C extension such as ffi).
223
+ # Known cases right now that trigger this are the ethon/typhoeus gems.
227
224
  # We currently have no solution for this case; these threads will always be missing our CPU instrumentation.
228
225
  #
229
226
  # c) The thread was started with `Thread.start`/`Thread.fork` and hasn't yet enabled the instrumentation.
@@ -232,13 +229,15 @@ module Datadog
232
229
  # it to run and our instrumentation to be applied.
233
230
  #
234
231
  if thread_api.current.respond_to?(:cpu_time) && thread_api.current.cpu_time
235
- Datadog.logger.debug("Detected thread ('#{thread}') with missing CPU profiling instrumentation.")
232
+ Datadog.logger.debug(
233
+ "Thread ('#{thread}') is missing profiling instrumentation; other threads should be unaffected"
234
+ )
236
235
  end
237
236
  end
238
237
  end
239
238
 
240
239
  # If the profiler is started for a while, stopped and then restarted OR whenever the process forks, we need to
241
- # clean up the per-thread cpu time counters we keep, so that the first sample after starting doesn't end up with:
240
+ # clean up any leftover per-thread cpu time counters, so that the first sample after starting doesn't end up with:
242
241
  #
243
242
  # a) negative time: At least on my test docker container, and on the reliability environment, after the process
244
243
  # forks, the clock reference changes and (old cpu time - new cpu time) can be < 0
@@ -249,11 +248,10 @@ module Datadog
249
248
  # By resetting the last cpu time seen, we start with a clean slate every time we start the stack collector.
250
249
  def reset_cpu_time_tracking
251
250
  thread_api.list.each do |thread|
252
- thread[THREAD_LAST_CPU_TIME_KEY] = nil if thread[THREAD_LAST_CPU_TIME_KEY]
251
+ thread.thread_variable_set(THREAD_LAST_CPU_TIME_KEY, nil)
253
252
  end
254
253
  end
255
254
  end
256
- # rubocop:enable Metrics/ClassLength
257
255
  end
258
256
  end
259
257
  end
@@ -1,4 +1,6 @@
1
+ # typed: true
1
2
  require 'set'
3
+ require 'time'
2
4
 
3
5
  require 'ddtrace/profiling/flush'
4
6
  require 'ddtrace/profiling/pprof/template'
@@ -21,6 +23,11 @@ module Datadog
21
23
  # Add all events to the pprof
22
24
  flush.event_groups.each { |event_group| template.add_events!(event_group.event_class, event_group.events) }
23
25
 
26
+ Datadog.logger.debug do
27
+ "Encoding profile covering #{flush.start.iso8601} to #{flush.finish.iso8601}, " \
28
+ "events: #{flush.event_count} (#{template.debug_statistics})"
29
+ end
30
+
24
31
  # Build the profile and encode it
25
32
  template.to_pprof
26
33
  end