ddtrace 0.51.1 → 0.54.1

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