ddtrace 0.54.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1125) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +7 -16
  3. data/CHANGELOG.md +189 -2
  4. data/LICENSE-3rdparty.csv +3 -1
  5. data/README.md +4 -0
  6. data/bin/ddtracerb +5 -5
  7. data/ddtrace.gemspec +18 -6
  8. data/docs/0.x-trace.png +0 -0
  9. data/docs/1.0-trace.png +0 -0
  10. data/docs/AutoInstrumentation.md +36 -0
  11. data/docs/Deprecation.md +8 -0
  12. data/docs/DevelopmentGuide.md +1 -1
  13. data/docs/GettingStarted.md +574 -508
  14. data/docs/ProfilingDevelopment.md +20 -17
  15. data/docs/PublicApi.md +14 -0
  16. data/docs/UpgradeGuide.md +736 -0
  17. data/ext/ddtrace_profiling_loader/ddtrace_profiling_loader.c +118 -0
  18. data/ext/ddtrace_profiling_loader/extconf.rb +53 -0
  19. data/ext/ddtrace_profiling_native_extension/NativeExtensionDesign.md +31 -5
  20. data/ext/ddtrace_profiling_native_extension/clock_id_from_pthread.c +0 -8
  21. data/ext/ddtrace_profiling_native_extension/collectors_stack.c +278 -0
  22. data/ext/ddtrace_profiling_native_extension/extconf.rb +95 -55
  23. data/ext/ddtrace_profiling_native_extension/libddprof_helpers.h +13 -0
  24. data/ext/ddtrace_profiling_native_extension/native_extension_helpers.rb +186 -0
  25. data/ext/ddtrace_profiling_native_extension/private_vm_api_access.c +579 -7
  26. data/ext/ddtrace_profiling_native_extension/private_vm_api_access.h +30 -0
  27. data/ext/ddtrace_profiling_native_extension/profiling.c +10 -1
  28. data/ext/ddtrace_profiling_native_extension/stack_recorder.c +139 -0
  29. data/ext/ddtrace_profiling_native_extension/stack_recorder.h +28 -0
  30. data/lib/datadog/appsec/assets/blocked.html +4 -0
  31. data/lib/datadog/appsec/assets/waf_rules/README.md +7 -0
  32. data/lib/datadog/appsec/assets/waf_rules/recommended.json +5638 -0
  33. data/lib/datadog/appsec/assets/waf_rules/risky.json +1499 -0
  34. data/lib/datadog/appsec/assets/waf_rules/strict.json +1298 -0
  35. data/lib/datadog/appsec/assets.rb +38 -0
  36. data/lib/datadog/appsec/autoload.rb +16 -0
  37. data/lib/datadog/appsec/configuration/settings.rb +194 -0
  38. data/lib/datadog/appsec/configuration.rb +80 -0
  39. data/lib/datadog/appsec/contrib/auto_instrument.rb +29 -0
  40. data/lib/datadog/appsec/contrib/configuration/settings.rb +20 -0
  41. data/lib/datadog/appsec/contrib/integration.rb +37 -0
  42. data/lib/datadog/appsec/contrib/patcher.rb +12 -0
  43. data/lib/datadog/appsec/contrib/rack/configuration/settings.rb +22 -0
  44. data/lib/datadog/appsec/contrib/rack/ext.rb +15 -0
  45. data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +169 -0
  46. data/lib/datadog/appsec/contrib/rack/integration.rb +49 -0
  47. data/lib/datadog/appsec/contrib/rack/patcher.rb +32 -0
  48. data/lib/datadog/appsec/contrib/rack/reactive/request.rb +87 -0
  49. data/lib/datadog/appsec/contrib/rack/reactive/request_body.rb +64 -0
  50. data/lib/datadog/appsec/contrib/rack/reactive/response.rb +64 -0
  51. data/lib/datadog/appsec/contrib/rack/request.rb +58 -0
  52. data/lib/datadog/appsec/contrib/rack/request_body_middleware.rb +41 -0
  53. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +112 -0
  54. data/lib/datadog/appsec/contrib/rack/response.rb +24 -0
  55. data/lib/datadog/appsec/contrib/rails/configuration/settings.rb +22 -0
  56. data/lib/datadog/appsec/contrib/rails/ext.rb +15 -0
  57. data/lib/datadog/appsec/contrib/rails/framework.rb +30 -0
  58. data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +81 -0
  59. data/lib/datadog/appsec/contrib/rails/integration.rb +48 -0
  60. data/lib/datadog/appsec/contrib/rails/patcher.rb +158 -0
  61. data/lib/datadog/appsec/contrib/rails/reactive/action.rb +68 -0
  62. data/lib/datadog/appsec/contrib/rails/request.rb +33 -0
  63. data/lib/datadog/appsec/contrib/rails/request_middleware.rb +20 -0
  64. data/lib/datadog/appsec/contrib/sinatra/configuration/settings.rb +22 -0
  65. data/lib/datadog/appsec/contrib/sinatra/ext.rb +15 -0
  66. data/lib/datadog/appsec/contrib/sinatra/framework.rb +34 -0
  67. data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +124 -0
  68. data/lib/datadog/appsec/contrib/sinatra/integration.rb +48 -0
  69. data/lib/datadog/appsec/contrib/sinatra/patcher.rb +144 -0
  70. data/lib/datadog/appsec/contrib/sinatra/reactive/routed.rb +63 -0
  71. data/lib/datadog/appsec/contrib/sinatra/request_middleware.rb +20 -0
  72. data/lib/datadog/appsec/event.rb +121 -0
  73. data/lib/datadog/appsec/extensions.rb +118 -0
  74. data/lib/datadog/appsec/instrumentation/gateway.rb +44 -0
  75. data/lib/datadog/appsec/processor.rb +164 -0
  76. data/lib/datadog/appsec/rate_limiter.rb +60 -0
  77. data/lib/datadog/appsec/reactive/address_hash.rb +18 -0
  78. data/lib/datadog/appsec/reactive/engine.rb +44 -0
  79. data/lib/datadog/appsec/reactive/operation.rb +51 -0
  80. data/lib/datadog/appsec/reactive/subscriber.rb +18 -0
  81. data/lib/datadog/appsec.rb +23 -0
  82. data/lib/datadog/ci/configuration/components.rb +9 -8
  83. data/lib/datadog/ci/configuration/settings.rb +19 -3
  84. data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +4 -2
  85. data/lib/datadog/ci/contrib/cucumber/ext.rb +2 -0
  86. data/lib/datadog/ci/contrib/cucumber/formatter.rb +4 -9
  87. data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +2 -1
  88. data/lib/datadog/ci/contrib/cucumber/integration.rb +3 -2
  89. data/lib/datadog/ci/contrib/cucumber/patcher.rb +3 -2
  90. data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +4 -2
  91. data/lib/datadog/ci/contrib/rspec/example.rb +4 -9
  92. data/lib/datadog/ci/contrib/rspec/ext.rb +2 -0
  93. data/lib/datadog/ci/contrib/rspec/integration.rb +3 -2
  94. data/lib/datadog/ci/contrib/rspec/patcher.rb +3 -2
  95. data/lib/datadog/ci/ext/app_types.rb +2 -1
  96. data/lib/datadog/ci/ext/environment.rb +128 -110
  97. data/lib/datadog/ci/ext/settings.rb +2 -1
  98. data/lib/datadog/ci/ext/test.rb +1 -0
  99. data/lib/datadog/ci/extensions.rb +5 -4
  100. data/lib/datadog/ci/flush.rb +38 -0
  101. data/lib/datadog/ci/test.rb +15 -13
  102. data/lib/datadog/ci.rb +4 -1
  103. data/lib/datadog/core/buffer/cruby.rb +55 -0
  104. data/lib/datadog/core/buffer/random.rb +134 -0
  105. data/lib/datadog/core/buffer/thread_safe.rb +58 -0
  106. data/lib/datadog/core/chunker.rb +35 -0
  107. data/lib/datadog/core/configuration/agent_settings_resolver.rb +365 -0
  108. data/lib/datadog/core/configuration/base.rb +89 -0
  109. data/lib/datadog/core/configuration/components.rb +411 -0
  110. data/lib/datadog/core/configuration/dependency_resolver.rb +28 -0
  111. data/lib/datadog/core/configuration/option.rb +69 -0
  112. data/lib/datadog/core/configuration/option_definition.rb +126 -0
  113. data/lib/datadog/core/configuration/option_definition_set.rb +22 -0
  114. data/lib/datadog/core/configuration/option_set.rb +10 -0
  115. data/lib/datadog/core/configuration/options.rb +118 -0
  116. data/lib/datadog/core/configuration/settings.rb +618 -0
  117. data/lib/datadog/core/configuration.rb +286 -0
  118. data/lib/datadog/core/diagnostics/environment_logger.rb +283 -0
  119. data/lib/datadog/core/diagnostics/ext.rb +41 -0
  120. data/lib/datadog/core/diagnostics/health.rb +37 -0
  121. data/lib/datadog/core/encoding.rb +76 -0
  122. data/lib/datadog/core/environment/cgroup.rb +4 -1
  123. data/lib/datadog/core/environment/class_count.rb +1 -0
  124. data/lib/datadog/core/environment/container.rb +3 -1
  125. data/lib/datadog/core/environment/ext.rb +28 -9
  126. data/lib/datadog/core/environment/gc.rb +1 -0
  127. data/lib/datadog/core/environment/identity.rb +11 -4
  128. data/lib/datadog/core/environment/socket.rb +9 -2
  129. data/lib/datadog/core/environment/thread_count.rb +1 -0
  130. data/lib/datadog/core/environment/variable_helpers.rb +28 -2
  131. data/lib/datadog/core/environment/vm_cache.rb +1 -0
  132. data/lib/datadog/core/error.rb +101 -0
  133. data/lib/datadog/core/extensions.rb +16 -0
  134. data/lib/datadog/core/git/ext.rb +35 -0
  135. data/lib/datadog/core/logger.rb +46 -0
  136. data/lib/datadog/core/logging/ext.rb +11 -0
  137. data/lib/datadog/core/metrics/client.rb +198 -0
  138. data/lib/datadog/core/metrics/ext.rb +20 -0
  139. data/lib/datadog/core/metrics/helpers.rb +25 -0
  140. data/lib/datadog/core/metrics/logging.rb +44 -0
  141. data/lib/datadog/core/metrics/metric.rb +14 -0
  142. data/lib/datadog/core/metrics/options.rb +50 -0
  143. data/lib/datadog/core/pin.rb +75 -0
  144. data/lib/datadog/core/runtime/ext.rb +28 -0
  145. data/lib/datadog/core/runtime/metrics.rb +126 -0
  146. data/lib/datadog/core/utils/compression.rb +32 -0
  147. data/lib/datadog/core/utils/forking.rb +63 -0
  148. data/lib/datadog/core/utils/object_set.rb +43 -0
  149. data/lib/datadog/core/utils/only_once.rb +44 -0
  150. data/lib/datadog/core/utils/safe_dup.rb +27 -0
  151. data/lib/datadog/core/utils/sequence.rb +21 -0
  152. data/lib/datadog/core/utils/string_table.rb +49 -0
  153. data/lib/datadog/core/utils/time.rb +54 -0
  154. data/lib/datadog/core/utils.rb +115 -0
  155. data/lib/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rb +120 -0
  156. data/lib/datadog/core/vendor/multipart-post/multipart/post/multipartable.rb +61 -0
  157. data/lib/datadog/core/vendor/multipart-post/multipart/post/parts.rb +139 -0
  158. data/lib/datadog/core/vendor/multipart-post/multipart/post/version.rb +13 -0
  159. data/lib/datadog/core/vendor/multipart-post/multipart/post.rb +12 -0
  160. data/lib/datadog/core/vendor/multipart-post/multipart.rb +16 -0
  161. data/lib/datadog/core/vendor/multipart-post/net/http/post/multipart.rb +36 -0
  162. data/lib/datadog/core/worker.rb +24 -0
  163. data/lib/datadog/core/workers/async.rb +182 -0
  164. data/lib/datadog/core/workers/interval_loop.rb +119 -0
  165. data/lib/datadog/core/workers/polling.rb +59 -0
  166. data/lib/datadog/core/workers/queue.rb +44 -0
  167. data/lib/datadog/core/workers/runtime_metrics.rb +62 -0
  168. data/lib/datadog/core.rb +80 -0
  169. data/lib/datadog/kit/enable_core_dumps.rb +50 -0
  170. data/lib/datadog/kit/identity.rb +63 -0
  171. data/lib/datadog/kit.rb +11 -0
  172. data/lib/datadog/opentracer/binary_propagator.rb +26 -0
  173. data/lib/datadog/opentracer/carrier.rb +9 -0
  174. data/lib/datadog/opentracer/distributed_headers.rb +58 -0
  175. data/lib/datadog/opentracer/global_tracer.rb +17 -0
  176. data/lib/datadog/opentracer/propagator.rb +26 -0
  177. data/lib/datadog/opentracer/rack_propagator.rb +72 -0
  178. data/lib/datadog/opentracer/scope.rb +18 -0
  179. data/lib/datadog/opentracer/scope_manager.rb +9 -0
  180. data/lib/datadog/opentracer/span.rb +101 -0
  181. data/lib/datadog/opentracer/span_context.rb +19 -0
  182. data/lib/datadog/opentracer/span_context_factory.rb +27 -0
  183. data/lib/datadog/opentracer/text_map_propagator.rb +87 -0
  184. data/lib/datadog/opentracer/thread_local_scope.rb +34 -0
  185. data/lib/datadog/opentracer/thread_local_scope_manager.rb +43 -0
  186. data/lib/datadog/opentracer/tracer.rb +212 -0
  187. data/lib/datadog/opentracer.rb +24 -0
  188. data/lib/datadog/profiling/backtrace_location.rb +34 -0
  189. data/lib/datadog/profiling/buffer.rb +43 -0
  190. data/lib/datadog/profiling/collectors/code_provenance.rb +114 -0
  191. data/lib/datadog/profiling/collectors/old_stack.rb +298 -0
  192. data/lib/datadog/profiling/collectors/stack.rb +16 -0
  193. data/lib/datadog/profiling/encoding/profile.rb +47 -0
  194. data/lib/datadog/profiling/event.rb +15 -0
  195. data/lib/datadog/profiling/events/stack.rb +82 -0
  196. data/lib/datadog/profiling/exporter.rb +25 -0
  197. data/lib/datadog/profiling/ext/forking.rb +99 -0
  198. data/lib/datadog/profiling/ext.rb +57 -0
  199. data/lib/datadog/profiling/flush.rb +69 -0
  200. data/lib/datadog/profiling/load_native_extension.rb +22 -0
  201. data/lib/datadog/profiling/native_extension.rb +41 -0
  202. data/lib/datadog/profiling/pprof/builder.rb +127 -0
  203. data/lib/datadog/profiling/pprof/converter.rb +104 -0
  204. data/lib/datadog/profiling/pprof/message_set.rb +16 -0
  205. data/lib/datadog/profiling/pprof/payload.rb +20 -0
  206. data/lib/datadog/profiling/pprof/pprof_pb.rb +83 -0
  207. data/lib/datadog/profiling/pprof/stack_sample.rb +141 -0
  208. data/lib/datadog/profiling/pprof/string_table.rb +12 -0
  209. data/lib/datadog/profiling/pprof/template.rb +120 -0
  210. data/lib/datadog/profiling/preload.rb +5 -0
  211. data/lib/datadog/profiling/profiler.rb +34 -0
  212. data/lib/datadog/profiling/recorder.rb +117 -0
  213. data/lib/datadog/profiling/scheduler.rb +151 -0
  214. data/lib/datadog/profiling/stack_recorder.rb +33 -0
  215. data/lib/datadog/profiling/tag_builder.rb +48 -0
  216. data/lib/datadog/profiling/tasks/exec.rb +50 -0
  217. data/lib/datadog/profiling/tasks/help.rb +18 -0
  218. data/lib/datadog/profiling/tasks/setup.rb +93 -0
  219. data/lib/datadog/profiling/trace_identifiers/ddtrace.rb +45 -0
  220. data/lib/datadog/profiling/trace_identifiers/helper.rb +47 -0
  221. data/lib/datadog/profiling/transport/client.rb +16 -0
  222. data/lib/datadog/profiling/transport/http/api/endpoint.rb +107 -0
  223. data/lib/datadog/profiling/transport/http/api/instance.rb +38 -0
  224. data/lib/datadog/profiling/transport/http/api/spec.rb +42 -0
  225. data/lib/datadog/profiling/transport/http/api.rb +45 -0
  226. data/lib/datadog/profiling/transport/http/builder.rb +30 -0
  227. data/lib/datadog/profiling/transport/http/client.rb +35 -0
  228. data/lib/datadog/profiling/transport/http/response.rb +23 -0
  229. data/lib/datadog/profiling/transport/http.rb +112 -0
  230. data/lib/datadog/profiling/transport/io/client.rb +29 -0
  231. data/lib/datadog/profiling/transport/io/response.rb +18 -0
  232. data/lib/datadog/profiling/transport/io.rb +32 -0
  233. data/lib/datadog/profiling/transport/parcel.rb +19 -0
  234. data/lib/datadog/profiling/transport/request.rb +17 -0
  235. data/lib/datadog/profiling/transport/response.rb +10 -0
  236. data/lib/datadog/profiling.rb +170 -0
  237. data/lib/datadog/tracing/analytics.rb +25 -0
  238. data/lib/datadog/tracing/buffer.rb +132 -0
  239. data/lib/datadog/tracing/configuration/ext.rb +51 -0
  240. data/lib/datadog/tracing/context.rb +68 -0
  241. data/lib/datadog/tracing/context_provider.rb +66 -0
  242. data/lib/datadog/tracing/contrib/action_cable/configuration/settings.rb +35 -0
  243. data/lib/datadog/tracing/contrib/action_cable/event.rb +72 -0
  244. data/lib/datadog/tracing/contrib/action_cable/events/broadcast.rb +58 -0
  245. data/lib/datadog/tracing/contrib/action_cable/events/perform_action.rb +63 -0
  246. data/lib/datadog/tracing/contrib/action_cable/events/transmit.rb +59 -0
  247. data/lib/datadog/tracing/contrib/action_cable/events.rb +37 -0
  248. data/lib/datadog/tracing/contrib/action_cable/ext.rb +32 -0
  249. data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +91 -0
  250. data/lib/datadog/tracing/contrib/action_cable/integration.rb +50 -0
  251. data/lib/datadog/tracing/contrib/action_cable/patcher.rb +31 -0
  252. data/lib/datadog/tracing/contrib/action_mailer/configuration/settings.rb +36 -0
  253. data/lib/datadog/tracing/contrib/action_mailer/event.rb +52 -0
  254. data/lib/datadog/tracing/contrib/action_mailer/events/deliver.rb +60 -0
  255. data/lib/datadog/tracing/contrib/action_mailer/events/process.rb +47 -0
  256. data/lib/datadog/tracing/contrib/action_mailer/events.rb +34 -0
  257. data/lib/datadog/tracing/contrib/action_mailer/ext.rb +33 -0
  258. data/lib/datadog/tracing/contrib/action_mailer/integration.rb +50 -0
  259. data/lib/datadog/tracing/contrib/action_mailer/patcher.rb +29 -0
  260. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +156 -0
  261. data/lib/datadog/tracing/contrib/action_pack/action_controller/patcher.rb +29 -0
  262. data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +36 -0
  263. data/lib/datadog/tracing/contrib/action_pack/ext.rb +22 -0
  264. data/lib/datadog/tracing/contrib/action_pack/integration.rb +50 -0
  265. data/lib/datadog/tracing/contrib/action_pack/patcher.rb +27 -0
  266. data/lib/datadog/tracing/contrib/action_pack/utils.rb +40 -0
  267. data/lib/datadog/tracing/contrib/action_view/configuration/settings.rb +36 -0
  268. data/lib/datadog/tracing/contrib/action_view/event.rb +35 -0
  269. data/lib/datadog/tracing/contrib/action_view/events/render_partial.rb +54 -0
  270. data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +57 -0
  271. data/lib/datadog/tracing/contrib/action_view/events.rb +34 -0
  272. data/lib/datadog/tracing/contrib/action_view/ext.rb +24 -0
  273. data/lib/datadog/tracing/contrib/action_view/instrumentation/partial_renderer.rb +78 -0
  274. data/lib/datadog/tracing/contrib/action_view/instrumentation/template_renderer.rb +91 -0
  275. data/lib/datadog/tracing/contrib/action_view/integration.rb +57 -0
  276. data/lib/datadog/tracing/contrib/action_view/patcher.rb +47 -0
  277. data/lib/datadog/tracing/contrib/action_view/utils.rb +36 -0
  278. data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +37 -0
  279. data/lib/datadog/tracing/contrib/active_job/event.rb +58 -0
  280. data/lib/datadog/tracing/contrib/active_job/events/discard.rb +50 -0
  281. data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +49 -0
  282. data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +49 -0
  283. data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +51 -0
  284. data/lib/datadog/tracing/contrib/active_job/events/perform.rb +49 -0
  285. data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +50 -0
  286. data/lib/datadog/tracing/contrib/active_job/events.rb +42 -0
  287. data/lib/datadog/tracing/contrib/active_job/ext.rb +39 -0
  288. data/lib/datadog/tracing/contrib/active_job/integration.rb +50 -0
  289. data/lib/datadog/tracing/contrib/active_job/log_injection.rb +26 -0
  290. data/lib/datadog/tracing/contrib/active_job/patcher.rb +36 -0
  291. data/lib/datadog/tracing/contrib/active_model_serializers/configuration/settings.rb +33 -0
  292. data/lib/datadog/tracing/contrib/active_model_serializers/event.rb +69 -0
  293. data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +45 -0
  294. data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +47 -0
  295. data/lib/datadog/tracing/contrib/active_model_serializers/events.rb +34 -0
  296. data/lib/datadog/tracing/contrib/active_model_serializers/ext.rb +24 -0
  297. data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +45 -0
  298. data/lib/datadog/tracing/contrib/active_model_serializers/patcher.rb +33 -0
  299. data/lib/datadog/tracing/contrib/active_record/configuration/makara_resolver.rb +36 -0
  300. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +138 -0
  301. data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +39 -0
  302. data/lib/datadog/tracing/contrib/active_record/event.rb +30 -0
  303. data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +58 -0
  304. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +78 -0
  305. data/lib/datadog/tracing/contrib/active_record/events.rb +34 -0
  306. data/lib/datadog/tracing/contrib/active_record/ext.rb +29 -0
  307. data/lib/datadog/tracing/contrib/active_record/integration.rb +56 -0
  308. data/lib/datadog/tracing/contrib/active_record/patcher.rb +27 -0
  309. data/lib/datadog/tracing/contrib/active_record/utils.rb +128 -0
  310. data/lib/datadog/tracing/contrib/active_record/vendor/connection_specification.rb +307 -0
  311. data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +270 -0
  312. data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +73 -0
  313. data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +47 -0
  314. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +35 -0
  315. data/lib/datadog/tracing/contrib/active_support/ext.rb +31 -0
  316. data/lib/datadog/tracing/contrib/active_support/integration.rb +51 -0
  317. data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +71 -0
  318. data/lib/datadog/tracing/contrib/active_support/notifications/subscriber.rb +71 -0
  319. data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +164 -0
  320. data/lib/datadog/tracing/contrib/active_support/patcher.rb +27 -0
  321. data/lib/datadog/tracing/contrib/analytics.rb +29 -0
  322. data/lib/datadog/tracing/contrib/auto_instrument.rb +53 -0
  323. data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +35 -0
  324. data/lib/datadog/tracing/contrib/aws/ext.rb +27 -0
  325. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +95 -0
  326. data/lib/datadog/tracing/contrib/aws/integration.rb +47 -0
  327. data/lib/datadog/tracing/contrib/aws/parsed_context.rb +60 -0
  328. data/lib/datadog/tracing/contrib/aws/patcher.rb +57 -0
  329. data/lib/datadog/tracing/contrib/aws/services.rb +123 -0
  330. data/lib/datadog/tracing/contrib/concurrent_ruby/configuration/settings.rb +23 -0
  331. data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +53 -0
  332. data/lib/datadog/tracing/contrib/concurrent_ruby/ext.rb +16 -0
  333. data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +27 -0
  334. data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +43 -0
  335. data/lib/datadog/tracing/contrib/concurrent_ruby/patcher.rb +33 -0
  336. data/lib/datadog/tracing/contrib/configurable.rb +102 -0
  337. data/lib/datadog/tracing/contrib/configuration/resolver.rb +85 -0
  338. data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +43 -0
  339. data/lib/datadog/tracing/contrib/configuration/settings.rb +43 -0
  340. data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +35 -0
  341. data/lib/datadog/tracing/contrib/dalli/ext.rb +24 -0
  342. data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +58 -0
  343. data/lib/datadog/tracing/contrib/dalli/integration.rb +52 -0
  344. data/lib/datadog/tracing/contrib/dalli/patcher.rb +28 -0
  345. data/lib/datadog/tracing/contrib/dalli/quantize.rb +26 -0
  346. data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +38 -0
  347. data/lib/datadog/tracing/contrib/delayed_job/ext.rb +26 -0
  348. data/lib/datadog/tracing/contrib/delayed_job/integration.rb +43 -0
  349. data/lib/datadog/tracing/contrib/delayed_job/patcher.rb +31 -0
  350. data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +101 -0
  351. data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +36 -0
  352. data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +26 -0
  353. data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +50 -0
  354. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +151 -0
  355. data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +89 -0
  356. data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +37 -0
  357. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +177 -0
  358. data/lib/datadog/tracing/contrib/ethon/ext.rb +24 -0
  359. data/lib/datadog/tracing/contrib/ethon/integration.rb +48 -0
  360. data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +96 -0
  361. data/lib/datadog/tracing/contrib/ethon/patcher.rb +31 -0
  362. data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +38 -0
  363. data/lib/datadog/tracing/contrib/excon/ext.rb +21 -0
  364. data/lib/datadog/tracing/contrib/excon/integration.rb +48 -0
  365. data/lib/datadog/tracing/contrib/excon/middleware.rb +170 -0
  366. data/lib/datadog/tracing/contrib/excon/patcher.rb +31 -0
  367. data/lib/datadog/tracing/contrib/extensions.rb +197 -0
  368. data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +42 -0
  369. data/lib/datadog/tracing/contrib/faraday/connection.rb +22 -0
  370. data/lib/datadog/tracing/contrib/faraday/ext.rb +21 -0
  371. data/lib/datadog/tracing/contrib/faraday/integration.rb +48 -0
  372. data/lib/datadog/tracing/contrib/faraday/middleware.rb +93 -0
  373. data/lib/datadog/tracing/contrib/faraday/patcher.rb +56 -0
  374. data/lib/datadog/tracing/contrib/faraday/rack_builder.rb +22 -0
  375. data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +42 -0
  376. data/lib/datadog/tracing/contrib/grape/endpoint.rb +253 -0
  377. data/lib/datadog/tracing/contrib/grape/ext.rb +28 -0
  378. data/lib/datadog/tracing/contrib/grape/instrumentation.rb +37 -0
  379. data/lib/datadog/tracing/contrib/grape/integration.rb +44 -0
  380. data/lib/datadog/tracing/contrib/grape/patcher.rb +33 -0
  381. data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +36 -0
  382. data/lib/datadog/tracing/contrib/graphql/ext.rb +19 -0
  383. data/lib/datadog/tracing/contrib/graphql/integration.rb +44 -0
  384. data/lib/datadog/tracing/contrib/graphql/patcher.rb +91 -0
  385. data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +37 -0
  386. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +84 -0
  387. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +90 -0
  388. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb +104 -0
  389. data/lib/datadog/tracing/contrib/grpc/ext.rb +23 -0
  390. data/lib/datadog/tracing/contrib/grpc/integration.rb +43 -0
  391. data/lib/datadog/tracing/contrib/grpc/intercept_with_datadog.rb +53 -0
  392. data/lib/datadog/tracing/contrib/grpc/patcher.rb +37 -0
  393. data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +44 -0
  394. data/lib/datadog/tracing/contrib/http/configuration/settings.rb +37 -0
  395. data/lib/datadog/tracing/contrib/http/ext.rb +21 -0
  396. data/lib/datadog/tracing/contrib/http/instrumentation.rb +139 -0
  397. data/lib/datadog/tracing/contrib/http/integration.rb +49 -0
  398. data/lib/datadog/tracing/contrib/http/patcher.rb +30 -0
  399. data/lib/datadog/tracing/contrib/http_annotation_helper.rb +17 -0
  400. data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +37 -0
  401. data/lib/datadog/tracing/contrib/httpclient/ext.rb +21 -0
  402. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +117 -0
  403. data/lib/datadog/tracing/contrib/httpclient/integration.rb +48 -0
  404. data/lib/datadog/tracing/contrib/httpclient/patcher.rb +42 -0
  405. data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +37 -0
  406. data/lib/datadog/tracing/contrib/httprb/ext.rb +21 -0
  407. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +128 -0
  408. data/lib/datadog/tracing/contrib/httprb/integration.rb +48 -0
  409. data/lib/datadog/tracing/contrib/httprb/patcher.rb +42 -0
  410. data/lib/datadog/tracing/contrib/integration.rb +78 -0
  411. data/lib/datadog/tracing/contrib/kafka/configuration/settings.rb +35 -0
  412. data/lib/datadog/tracing/contrib/kafka/consumer_event.rb +18 -0
  413. data/lib/datadog/tracing/contrib/kafka/consumer_group_event.rb +18 -0
  414. data/lib/datadog/tracing/contrib/kafka/event.rb +52 -0
  415. data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +42 -0
  416. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +49 -0
  417. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +47 -0
  418. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +47 -0
  419. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +37 -0
  420. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +37 -0
  421. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +37 -0
  422. data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +40 -0
  423. data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +43 -0
  424. data/lib/datadog/tracing/contrib/kafka/events.rb +48 -0
  425. data/lib/datadog/tracing/contrib/kafka/ext.rb +52 -0
  426. data/lib/datadog/tracing/contrib/kafka/integration.rb +44 -0
  427. data/lib/datadog/tracing/contrib/kafka/patcher.rb +29 -0
  428. data/lib/datadog/tracing/contrib/lograge/configuration/settings.rb +23 -0
  429. data/lib/datadog/tracing/contrib/lograge/ext.rb +15 -0
  430. data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +47 -0
  431. data/lib/datadog/tracing/contrib/lograge/integration.rb +50 -0
  432. data/lib/datadog/tracing/contrib/lograge/patcher.rb +29 -0
  433. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +38 -0
  434. data/lib/datadog/tracing/contrib/mongodb/ext.rb +27 -0
  435. data/lib/datadog/tracing/contrib/mongodb/instrumentation.rb +47 -0
  436. data/lib/datadog/tracing/contrib/mongodb/integration.rb +48 -0
  437. data/lib/datadog/tracing/contrib/mongodb/parsers.rb +49 -0
  438. data/lib/datadog/tracing/contrib/mongodb/patcher.rb +34 -0
  439. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +121 -0
  440. data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +35 -0
  441. data/lib/datadog/tracing/contrib/mysql2/ext.rb +22 -0
  442. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +62 -0
  443. data/lib/datadog/tracing/contrib/mysql2/integration.rb +43 -0
  444. data/lib/datadog/tracing/contrib/mysql2/patcher.rb +31 -0
  445. data/lib/datadog/tracing/contrib/patchable.rb +109 -0
  446. data/lib/datadog/tracing/contrib/patcher.rb +74 -0
  447. data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +35 -0
  448. data/lib/datadog/tracing/contrib/presto/ext.rb +32 -0
  449. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +125 -0
  450. data/lib/datadog/tracing/contrib/presto/integration.rb +43 -0
  451. data/lib/datadog/tracing/contrib/presto/patcher.rb +37 -0
  452. data/lib/datadog/tracing/contrib/qless/configuration/settings.rb +40 -0
  453. data/lib/datadog/tracing/contrib/qless/ext.rb +26 -0
  454. data/lib/datadog/tracing/contrib/qless/integration.rb +43 -0
  455. data/lib/datadog/tracing/contrib/qless/patcher.rb +38 -0
  456. data/lib/datadog/tracing/contrib/qless/qless_job.rb +75 -0
  457. data/lib/datadog/tracing/contrib/qless/tracer_cleaner.rb +32 -0
  458. data/lib/datadog/tracing/contrib/que/configuration/settings.rb +49 -0
  459. data/lib/datadog/tracing/contrib/que/ext.rb +34 -0
  460. data/lib/datadog/tracing/contrib/que/integration.rb +46 -0
  461. data/lib/datadog/tracing/contrib/que/patcher.rb +28 -0
  462. data/lib/datadog/tracing/contrib/que/tracer.rb +61 -0
  463. data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +35 -0
  464. data/lib/datadog/tracing/contrib/racecar/event.rb +79 -0
  465. data/lib/datadog/tracing/contrib/racecar/events/batch.rb +35 -0
  466. data/lib/datadog/tracing/contrib/racecar/events/consume.rb +35 -0
  467. data/lib/datadog/tracing/contrib/racecar/events/message.rb +35 -0
  468. data/lib/datadog/tracing/contrib/racecar/events.rb +36 -0
  469. data/lib/datadog/tracing/contrib/racecar/ext.rb +31 -0
  470. data/lib/datadog/tracing/contrib/racecar/integration.rb +44 -0
  471. data/lib/datadog/tracing/contrib/racecar/patcher.rb +29 -0
  472. data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +51 -0
  473. data/lib/datadog/tracing/contrib/rack/ext.rb +25 -0
  474. data/lib/datadog/tracing/contrib/rack/integration.rb +50 -0
  475. data/lib/datadog/tracing/contrib/rack/middlewares.rb +255 -0
  476. data/lib/datadog/tracing/contrib/rack/patcher.rb +109 -0
  477. data/lib/datadog/tracing/contrib/rack/request_queue.rb +48 -0
  478. data/lib/datadog/tracing/contrib/rails/auto_instrument_railtie.rb +12 -0
  479. data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +71 -0
  480. data/lib/datadog/tracing/contrib/rails/ext.rb +19 -0
  481. data/lib/datadog/tracing/contrib/rails/framework.rb +152 -0
  482. data/lib/datadog/tracing/contrib/rails/integration.rb +49 -0
  483. data/lib/datadog/tracing/contrib/rails/log_injection.rb +34 -0
  484. data/lib/datadog/tracing/contrib/rails/middlewares.rb +47 -0
  485. data/lib/datadog/tracing/contrib/rails/patcher.rb +121 -0
  486. data/lib/datadog/tracing/contrib/rails/railtie.rb +19 -0
  487. data/lib/datadog/tracing/contrib/rails/utils.rb +28 -0
  488. data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +36 -0
  489. data/lib/datadog/tracing/contrib/rake/ext.rb +26 -0
  490. data/lib/datadog/tracing/contrib/rake/instrumentation.rb +98 -0
  491. data/lib/datadog/tracing/contrib/rake/integration.rb +43 -0
  492. data/lib/datadog/tracing/contrib/rake/patcher.rb +34 -0
  493. data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +49 -0
  494. data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +40 -0
  495. data/lib/datadog/tracing/contrib/redis/ext.rb +26 -0
  496. data/lib/datadog/tracing/contrib/redis/instrumentation.rb +78 -0
  497. data/lib/datadog/tracing/contrib/redis/integration.rb +47 -0
  498. data/lib/datadog/tracing/contrib/redis/patcher.rb +35 -0
  499. data/lib/datadog/tracing/contrib/redis/quantize.rb +79 -0
  500. data/lib/datadog/tracing/contrib/redis/tags.rb +54 -0
  501. data/lib/datadog/tracing/contrib/redis/vendor/resolver.rb +162 -0
  502. data/lib/datadog/tracing/contrib/registerable.rb +50 -0
  503. data/lib/datadog/tracing/contrib/registry.rb +52 -0
  504. data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +37 -0
  505. data/lib/datadog/tracing/contrib/resque/ext.rb +21 -0
  506. data/lib/datadog/tracing/contrib/resque/integration.rb +48 -0
  507. data/lib/datadog/tracing/contrib/resque/patcher.rb +29 -0
  508. data/lib/datadog/tracing/contrib/resque/resque_job.rb +103 -0
  509. data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +36 -0
  510. data/lib/datadog/tracing/contrib/rest_client/ext.rb +21 -0
  511. data/lib/datadog/tracing/contrib/rest_client/integration.rb +43 -0
  512. data/lib/datadog/tracing/contrib/rest_client/patcher.rb +29 -0
  513. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +105 -0
  514. data/lib/datadog/tracing/contrib/semantic_logger/configuration/settings.rb +23 -0
  515. data/lib/datadog/tracing/contrib/semantic_logger/ext.rb +15 -0
  516. data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +51 -0
  517. data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +52 -0
  518. data/lib/datadog/tracing/contrib/semantic_logger/patcher.rb +29 -0
  519. data/lib/datadog/tracing/contrib/sequel/configuration/settings.rb +33 -0
  520. data/lib/datadog/tracing/contrib/sequel/database.rb +60 -0
  521. data/lib/datadog/tracing/contrib/sequel/dataset.rb +65 -0
  522. data/lib/datadog/tracing/contrib/sequel/ext.rb +22 -0
  523. data/lib/datadog/tracing/contrib/sequel/integration.rb +43 -0
  524. data/lib/datadog/tracing/contrib/sequel/patcher.rb +37 -0
  525. data/lib/datadog/tracing/contrib/sequel/utils.rb +87 -0
  526. data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +38 -0
  527. data/lib/datadog/tracing/contrib/shoryuken/ext.rb +25 -0
  528. data/lib/datadog/tracing/contrib/shoryuken/integration.rb +44 -0
  529. data/lib/datadog/tracing/contrib/shoryuken/patcher.rb +28 -0
  530. data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +61 -0
  531. data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +53 -0
  532. data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +44 -0
  533. data/lib/datadog/tracing/contrib/sidekiq/ext.rb +38 -0
  534. data/lib/datadog/tracing/contrib/sidekiq/integration.rb +53 -0
  535. data/lib/datadog/tracing/contrib/sidekiq/patcher.rb +71 -0
  536. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/heartbeat.rb +34 -0
  537. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/job_fetch.rb +34 -0
  538. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/scheduled_push.rb +33 -0
  539. data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +98 -0
  540. data/lib/datadog/tracing/contrib/sidekiq/tracing.rb +44 -0
  541. data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +43 -0
  542. data/lib/datadog/tracing/contrib/sinatra/env.rb +66 -0
  543. data/lib/datadog/tracing/contrib/sinatra/ext.rb +32 -0
  544. data/lib/datadog/tracing/contrib/sinatra/framework.rb +118 -0
  545. data/lib/datadog/tracing/contrib/sinatra/headers.rb +35 -0
  546. data/lib/datadog/tracing/contrib/sinatra/integration.rb +43 -0
  547. data/lib/datadog/tracing/contrib/sinatra/patcher.rb +76 -0
  548. data/lib/datadog/tracing/contrib/sinatra/tracer.rb +159 -0
  549. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +123 -0
  550. data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +38 -0
  551. data/lib/datadog/tracing/contrib/sneakers/ext.rb +26 -0
  552. data/lib/datadog/tracing/contrib/sneakers/integration.rb +46 -0
  553. data/lib/datadog/tracing/contrib/sneakers/patcher.rb +29 -0
  554. data/lib/datadog/tracing/contrib/sneakers/tracer.rb +58 -0
  555. data/lib/datadog/tracing/contrib/status_code_matcher.rb +75 -0
  556. data/lib/datadog/tracing/contrib/sucker_punch/configuration/settings.rb +35 -0
  557. data/lib/datadog/tracing/contrib/sucker_punch/exception_handler.rb +28 -0
  558. data/lib/datadog/tracing/contrib/sucker_punch/ext.rb +27 -0
  559. data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +105 -0
  560. data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +43 -0
  561. data/lib/datadog/tracing/contrib/sucker_punch/patcher.rb +37 -0
  562. data/lib/datadog/tracing/contrib/utils/database.rb +31 -0
  563. data/lib/datadog/tracing/contrib/utils/quantization/hash.rb +111 -0
  564. data/lib/datadog/tracing/contrib/utils/quantization/http.rb +99 -0
  565. data/lib/datadog/tracing/contrib.rb +76 -0
  566. data/lib/datadog/tracing/correlation.rb +100 -0
  567. data/lib/datadog/tracing/distributed/headers/b3.rb +55 -0
  568. data/lib/datadog/tracing/distributed/headers/b3_single.rb +67 -0
  569. data/lib/datadog/tracing/distributed/headers/datadog.rb +52 -0
  570. data/lib/datadog/tracing/distributed/headers/ext.rb +31 -0
  571. data/lib/datadog/tracing/distributed/helpers.rb +44 -0
  572. data/lib/datadog/tracing/distributed/parser.rb +70 -0
  573. data/lib/datadog/tracing/event.rb +78 -0
  574. data/lib/datadog/tracing/flush.rb +74 -0
  575. data/lib/datadog/tracing/metadata/analytics.rb +26 -0
  576. data/lib/datadog/tracing/metadata/errors.rb +24 -0
  577. data/lib/datadog/tracing/metadata/ext.rb +151 -0
  578. data/lib/datadog/tracing/metadata/tagging.rb +110 -0
  579. data/lib/datadog/tracing/metadata.rb +20 -0
  580. data/lib/datadog/tracing/pipeline/span_filter.rb +42 -0
  581. data/lib/datadog/tracing/pipeline/span_processor.rb +39 -0
  582. data/lib/datadog/tracing/pipeline.rb +65 -0
  583. data/lib/datadog/tracing/propagation/grpc.rb +88 -0
  584. data/lib/datadog/tracing/propagation/http.rb +109 -0
  585. data/lib/datadog/tracing/runtime/metrics.rb +19 -0
  586. data/lib/datadog/tracing/sampling/all_sampler.rb +25 -0
  587. data/lib/datadog/tracing/sampling/ext.rb +27 -0
  588. data/lib/datadog/tracing/sampling/matcher.rb +68 -0
  589. data/lib/datadog/tracing/sampling/priority_sampler.rb +112 -0
  590. data/lib/datadog/tracing/sampling/rate_by_key_sampler.rb +97 -0
  591. data/lib/datadog/tracing/sampling/rate_by_service_sampler.rb +41 -0
  592. data/lib/datadog/tracing/sampling/rate_limiter.rb +185 -0
  593. data/lib/datadog/tracing/sampling/rate_sampler.rb +55 -0
  594. data/lib/datadog/tracing/sampling/rule.rb +76 -0
  595. data/lib/datadog/tracing/sampling/rule_sampler.rb +131 -0
  596. data/lib/datadog/tracing/sampling/sampler.rb +44 -0
  597. data/lib/datadog/tracing/span.rb +212 -0
  598. data/lib/datadog/tracing/span_operation.rb +520 -0
  599. data/lib/datadog/tracing/sync_writer.rb +69 -0
  600. data/lib/datadog/tracing/trace_digest.rb +60 -0
  601. data/lib/datadog/tracing/trace_operation.rb +431 -0
  602. data/lib/datadog/tracing/trace_segment.rb +207 -0
  603. data/lib/datadog/tracing/tracer.rb +505 -0
  604. data/lib/datadog/tracing/workers/trace_writer.rb +195 -0
  605. data/lib/datadog/tracing/workers.rb +125 -0
  606. data/lib/datadog/tracing/writer.rb +180 -0
  607. data/lib/datadog/tracing.rb +142 -0
  608. data/lib/ddtrace/auto_instrument.rb +6 -2
  609. data/lib/ddtrace/auto_instrument_base.rb +1 -0
  610. data/lib/ddtrace/profiling/preload.rb +2 -2
  611. data/lib/ddtrace/transport/ext.rb +35 -0
  612. data/lib/ddtrace/transport/http/adapters/net.rb +3 -2
  613. data/lib/ddtrace/transport/http/adapters/registry.rb +1 -0
  614. data/lib/ddtrace/transport/http/adapters/test.rb +1 -0
  615. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +3 -2
  616. data/lib/ddtrace/transport/http/api/endpoint.rb +1 -0
  617. data/lib/ddtrace/transport/http/api/fallbacks.rb +1 -0
  618. data/lib/ddtrace/transport/http/api/instance.rb +1 -0
  619. data/lib/ddtrace/transport/http/api/map.rb +1 -0
  620. data/lib/ddtrace/transport/http/api/spec.rb +1 -0
  621. data/lib/ddtrace/transport/http/api.rb +5 -11
  622. data/lib/ddtrace/transport/http/builder.rb +3 -2
  623. data/lib/ddtrace/transport/http/client.rb +3 -1
  624. data/lib/ddtrace/transport/http/env.rb +1 -0
  625. data/lib/ddtrace/transport/http/response.rb +35 -4
  626. data/lib/ddtrace/transport/http/statistics.rb +1 -0
  627. data/lib/ddtrace/transport/http/traces.rb +3 -0
  628. data/lib/ddtrace/transport/http.rb +33 -28
  629. data/lib/ddtrace/transport/io/client.rb +4 -1
  630. data/lib/ddtrace/transport/io/response.rb +1 -0
  631. data/lib/ddtrace/transport/io/traces.rb +2 -1
  632. data/lib/ddtrace/transport/io.rb +3 -2
  633. data/lib/ddtrace/transport/parcel.rb +2 -0
  634. data/lib/ddtrace/transport/request.rb +1 -0
  635. data/lib/ddtrace/transport/response.rb +1 -0
  636. data/lib/ddtrace/transport/serializable_trace.rb +118 -0
  637. data/lib/ddtrace/transport/statistics.rb +6 -4
  638. data/lib/ddtrace/transport/trace_formatter.rb +187 -0
  639. data/lib/ddtrace/transport/traces.rb +15 -5
  640. data/lib/ddtrace/version.rb +14 -12
  641. data/lib/ddtrace.rb +9 -48
  642. metadata +604 -490
  643. data/.yardopts +0 -5
  644. data/lib/datadog/ci/context_flush.rb +0 -29
  645. data/lib/datadog/contrib.rb +0 -71
  646. data/lib/ddtrace/analytics.rb +0 -39
  647. data/lib/ddtrace/buffer.rb +0 -340
  648. data/lib/ddtrace/chunker.rb +0 -35
  649. data/lib/ddtrace/configuration/agent_settings_resolver.rb +0 -309
  650. data/lib/ddtrace/configuration/base.rb +0 -82
  651. data/lib/ddtrace/configuration/components.rb +0 -292
  652. data/lib/ddtrace/configuration/dependency_resolver.rb +0 -25
  653. data/lib/ddtrace/configuration/option.rb +0 -65
  654. data/lib/ddtrace/configuration/option_definition.rb +0 -122
  655. data/lib/ddtrace/configuration/option_definition_set.rb +0 -19
  656. data/lib/ddtrace/configuration/option_set.rb +0 -7
  657. data/lib/ddtrace/configuration/options.rb +0 -112
  658. data/lib/ddtrace/configuration/pin_setup.rb +0 -32
  659. data/lib/ddtrace/configuration/settings.rb +0 -413
  660. data/lib/ddtrace/configuration.rb +0 -195
  661. data/lib/ddtrace/context.rb +0 -334
  662. data/lib/ddtrace/context_flush.rb +0 -82
  663. data/lib/ddtrace/context_provider.rb +0 -62
  664. data/lib/ddtrace/contrib/action_cable/configuration/settings.rb +0 -31
  665. data/lib/ddtrace/contrib/action_cable/event.rb +0 -67
  666. data/lib/ddtrace/contrib/action_cable/events/broadcast.rb +0 -50
  667. data/lib/ddtrace/contrib/action_cable/events/perform_action.rb +0 -56
  668. data/lib/ddtrace/contrib/action_cable/events/transmit.rb +0 -51
  669. data/lib/ddtrace/contrib/action_cable/events.rb +0 -34
  670. data/lib/ddtrace/contrib/action_cable/ext.rb +0 -27
  671. data/lib/ddtrace/contrib/action_cable/instrumentation.rb +0 -78
  672. data/lib/ddtrace/contrib/action_cable/integration.rb +0 -46
  673. data/lib/ddtrace/contrib/action_cable/patcher.rb +0 -29
  674. data/lib/ddtrace/contrib/action_mailer/configuration/settings.rb +0 -32
  675. data/lib/ddtrace/contrib/action_mailer/event.rb +0 -50
  676. data/lib/ddtrace/contrib/action_mailer/events/deliver.rb +0 -54
  677. data/lib/ddtrace/contrib/action_mailer/events/process.rb +0 -41
  678. data/lib/ddtrace/contrib/action_mailer/events.rb +0 -31
  679. data/lib/ddtrace/contrib/action_mailer/ext.rb +0 -32
  680. data/lib/ddtrace/contrib/action_mailer/integration.rb +0 -45
  681. data/lib/ddtrace/contrib/action_mailer/patcher.rb +0 -27
  682. data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +0 -157
  683. data/lib/ddtrace/contrib/action_pack/action_controller/patcher.rb +0 -26
  684. data/lib/ddtrace/contrib/action_pack/configuration/settings.rb +0 -33
  685. data/lib/ddtrace/contrib/action_pack/ext.rb +0 -20
  686. data/lib/ddtrace/contrib/action_pack/integration.rb +0 -46
  687. data/lib/ddtrace/contrib/action_pack/patcher.rb +0 -24
  688. data/lib/ddtrace/contrib/action_pack/utils.rb +0 -37
  689. data/lib/ddtrace/contrib/action_view/configuration/settings.rb +0 -32
  690. data/lib/ddtrace/contrib/action_view/event.rb +0 -36
  691. data/lib/ddtrace/contrib/action_view/events/render_partial.rb +0 -47
  692. data/lib/ddtrace/contrib/action_view/events/render_template.rb +0 -50
  693. data/lib/ddtrace/contrib/action_view/events.rb +0 -31
  694. data/lib/ddtrace/contrib/action_view/ext.rb +0 -21
  695. data/lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb +0 -75
  696. data/lib/ddtrace/contrib/action_view/instrumentation/template_renderer.rb +0 -168
  697. data/lib/ddtrace/contrib/action_view/integration.rb +0 -53
  698. data/lib/ddtrace/contrib/action_view/patcher.rb +0 -48
  699. data/lib/ddtrace/contrib/action_view/utils.rb +0 -33
  700. data/lib/ddtrace/contrib/active_job/configuration/settings.rb +0 -33
  701. data/lib/ddtrace/contrib/active_job/event.rb +0 -54
  702. data/lib/ddtrace/contrib/active_job/events/discard.rb +0 -46
  703. data/lib/ddtrace/contrib/active_job/events/enqueue.rb +0 -45
  704. data/lib/ddtrace/contrib/active_job/events/enqueue_at.rb +0 -45
  705. data/lib/ddtrace/contrib/active_job/events/enqueue_retry.rb +0 -47
  706. data/lib/ddtrace/contrib/active_job/events/perform.rb +0 -45
  707. data/lib/ddtrace/contrib/active_job/events/retry_stopped.rb +0 -46
  708. data/lib/ddtrace/contrib/active_job/events.rb +0 -39
  709. data/lib/ddtrace/contrib/active_job/ext.rb +0 -32
  710. data/lib/ddtrace/contrib/active_job/integration.rb +0 -46
  711. data/lib/ddtrace/contrib/active_job/log_injection.rb +0 -21
  712. data/lib/ddtrace/contrib/active_job/patcher.rb +0 -33
  713. data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +0 -31
  714. data/lib/ddtrace/contrib/active_model_serializers/event.rb +0 -69
  715. data/lib/ddtrace/contrib/active_model_serializers/events/render.rb +0 -33
  716. data/lib/ddtrace/contrib/active_model_serializers/events/serialize.rb +0 -36
  717. data/lib/ddtrace/contrib/active_model_serializers/events.rb +0 -31
  718. data/lib/ddtrace/contrib/active_model_serializers/ext.rb +0 -21
  719. data/lib/ddtrace/contrib/active_model_serializers/integration.rb +0 -41
  720. data/lib/ddtrace/contrib/active_model_serializers/patcher.rb +0 -30
  721. data/lib/ddtrace/contrib/active_record/configuration/makara_resolver.rb +0 -31
  722. data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +0 -135
  723. data/lib/ddtrace/contrib/active_record/configuration/settings.rb +0 -36
  724. data/lib/ddtrace/contrib/active_record/event.rb +0 -31
  725. data/lib/ddtrace/contrib/active_record/events/instantiation.rb +0 -61
  726. data/lib/ddtrace/contrib/active_record/events/sql.rb +0 -69
  727. data/lib/ddtrace/contrib/active_record/events.rb +0 -31
  728. data/lib/ddtrace/contrib/active_record/ext.rb +0 -25
  729. data/lib/ddtrace/contrib/active_record/integration.rb +0 -54
  730. data/lib/ddtrace/contrib/active_record/patcher.rb +0 -24
  731. data/lib/ddtrace/contrib/active_record/utils.rb +0 -124
  732. data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +0 -259
  733. data/lib/ddtrace/contrib/active_support/cache/patcher.rb +0 -70
  734. data/lib/ddtrace/contrib/active_support/cache/redis.rb +0 -44
  735. data/lib/ddtrace/contrib/active_support/configuration/settings.rb +0 -31
  736. data/lib/ddtrace/contrib/active_support/ext.rb +0 -28
  737. data/lib/ddtrace/contrib/active_support/integration.rb +0 -47
  738. data/lib/ddtrace/contrib/active_support/notifications/event.rb +0 -76
  739. data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +0 -68
  740. data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +0 -164
  741. data/lib/ddtrace/contrib/active_support/patcher.rb +0 -24
  742. data/lib/ddtrace/contrib/analytics.rb +0 -25
  743. data/lib/ddtrace/contrib/auto_instrument.rb +0 -48
  744. data/lib/ddtrace/contrib/aws/configuration/settings.rb +0 -31
  745. data/lib/ddtrace/contrib/aws/ext.rb +0 -24
  746. data/lib/ddtrace/contrib/aws/instrumentation.rb +0 -91
  747. data/lib/ddtrace/contrib/aws/integration.rb +0 -43
  748. data/lib/ddtrace/contrib/aws/parsed_context.rb +0 -57
  749. data/lib/ddtrace/contrib/aws/patcher.rb +0 -54
  750. data/lib/ddtrace/contrib/aws/services.rb +0 -119
  751. data/lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb +0 -21
  752. data/lib/ddtrace/contrib/concurrent_ruby/context_composite_executor_service.rb +0 -42
  753. data/lib/ddtrace/contrib/concurrent_ruby/ext.rb +0 -13
  754. data/lib/ddtrace/contrib/concurrent_ruby/future_patch.rb +0 -24
  755. data/lib/ddtrace/contrib/concurrent_ruby/integration.rb +0 -39
  756. data/lib/ddtrace/contrib/concurrent_ruby/patcher.rb +0 -30
  757. data/lib/ddtrace/contrib/configurable.rb +0 -103
  758. data/lib/ddtrace/contrib/configuration/resolver.rb +0 -82
  759. data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +0 -40
  760. data/lib/ddtrace/contrib/configuration/settings.rb +0 -56
  761. data/lib/ddtrace/contrib/dalli/configuration/settings.rb +0 -31
  762. data/lib/ddtrace/contrib/dalli/ext.rb +0 -21
  763. data/lib/ddtrace/contrib/dalli/instrumentation.rb +0 -55
  764. data/lib/ddtrace/contrib/dalli/integration.rb +0 -39
  765. data/lib/ddtrace/contrib/dalli/patcher.rb +0 -26
  766. data/lib/ddtrace/contrib/dalli/quantize.rb +0 -23
  767. data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +0 -33
  768. data/lib/ddtrace/contrib/delayed_job/ext.rb +0 -24
  769. data/lib/ddtrace/contrib/delayed_job/integration.rb +0 -39
  770. data/lib/ddtrace/contrib/delayed_job/patcher.rb +0 -29
  771. data/lib/ddtrace/contrib/delayed_job/plugin.rb +0 -85
  772. data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +0 -32
  773. data/lib/ddtrace/contrib/elasticsearch/ext.rb +0 -23
  774. data/lib/ddtrace/contrib/elasticsearch/integration.rb +0 -40
  775. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +0 -123
  776. data/lib/ddtrace/contrib/elasticsearch/quantize.rb +0 -84
  777. data/lib/ddtrace/contrib/ethon/configuration/settings.rb +0 -33
  778. data/lib/ddtrace/contrib/ethon/easy_patch.rb +0 -152
  779. data/lib/ddtrace/contrib/ethon/ext.rb +0 -20
  780. data/lib/ddtrace/contrib/ethon/integration.rb +0 -44
  781. data/lib/ddtrace/contrib/ethon/multi_patch.rb +0 -85
  782. data/lib/ddtrace/contrib/ethon/patcher.rb +0 -27
  783. data/lib/ddtrace/contrib/excon/configuration/settings.rb +0 -34
  784. data/lib/ddtrace/contrib/excon/ext.rb +0 -18
  785. data/lib/ddtrace/contrib/excon/integration.rb +0 -44
  786. data/lib/ddtrace/contrib/excon/middleware.rb +0 -164
  787. data/lib/ddtrace/contrib/excon/patcher.rb +0 -28
  788. data/lib/ddtrace/contrib/extensions.rb +0 -169
  789. data/lib/ddtrace/contrib/faraday/configuration/settings.rb +0 -39
  790. data/lib/ddtrace/contrib/faraday/connection.rb +0 -19
  791. data/lib/ddtrace/contrib/faraday/ext.rb +0 -18
  792. data/lib/ddtrace/contrib/faraday/integration.rb +0 -44
  793. data/lib/ddtrace/contrib/faraday/middleware.rb +0 -86
  794. data/lib/ddtrace/contrib/faraday/patcher.rb +0 -54
  795. data/lib/ddtrace/contrib/faraday/rack_builder.rb +0 -19
  796. data/lib/ddtrace/contrib/grape/configuration/settings.rb +0 -39
  797. data/lib/ddtrace/contrib/grape/endpoint.rb +0 -246
  798. data/lib/ddtrace/contrib/grape/ext.rb +0 -24
  799. data/lib/ddtrace/contrib/grape/instrumentation.rb +0 -34
  800. data/lib/ddtrace/contrib/grape/integration.rb +0 -40
  801. data/lib/ddtrace/contrib/grape/patcher.rb +0 -32
  802. data/lib/ddtrace/contrib/graphql/configuration/settings.rb +0 -33
  803. data/lib/ddtrace/contrib/graphql/ext.rb +0 -17
  804. data/lib/ddtrace/contrib/graphql/integration.rb +0 -40
  805. data/lib/ddtrace/contrib/graphql/patcher.rb +0 -61
  806. data/lib/ddtrace/contrib/grpc/configuration/settings.rb +0 -32
  807. data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +0 -59
  808. data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +0 -80
  809. data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +0 -79
  810. data/lib/ddtrace/contrib/grpc/ext.rb +0 -19
  811. data/lib/ddtrace/contrib/grpc/integration.rb +0 -39
  812. data/lib/ddtrace/contrib/grpc/intercept_with_datadog.rb +0 -50
  813. data/lib/ddtrace/contrib/grpc/patcher.rb +0 -34
  814. data/lib/ddtrace/contrib/http/circuit_breaker.rb +0 -38
  815. data/lib/ddtrace/contrib/http/configuration/settings.rb +0 -33
  816. data/lib/ddtrace/contrib/http/ext.rb +0 -18
  817. data/lib/ddtrace/contrib/http/instrumentation.rb +0 -180
  818. data/lib/ddtrace/contrib/http/integration.rb +0 -46
  819. data/lib/ddtrace/contrib/http/patcher.rb +0 -27
  820. data/lib/ddtrace/contrib/http_annotation_helper.rb +0 -11
  821. data/lib/ddtrace/contrib/httpclient/configuration/settings.rb +0 -33
  822. data/lib/ddtrace/contrib/httpclient/ext.rb +0 -18
  823. data/lib/ddtrace/contrib/httpclient/instrumentation.rb +0 -148
  824. data/lib/ddtrace/contrib/httpclient/integration.rb +0 -44
  825. data/lib/ddtrace/contrib/httpclient/patcher.rb +0 -39
  826. data/lib/ddtrace/contrib/httprb/configuration/settings.rb +0 -33
  827. data/lib/ddtrace/contrib/httprb/ext.rb +0 -18
  828. data/lib/ddtrace/contrib/httprb/instrumentation.rb +0 -158
  829. data/lib/ddtrace/contrib/httprb/integration.rb +0 -44
  830. data/lib/ddtrace/contrib/httprb/patcher.rb +0 -39
  831. data/lib/ddtrace/contrib/integration.rb +0 -17
  832. data/lib/ddtrace/contrib/kafka/configuration/settings.rb +0 -31
  833. data/lib/ddtrace/contrib/kafka/consumer_event.rb +0 -15
  834. data/lib/ddtrace/contrib/kafka/consumer_group_event.rb +0 -15
  835. data/lib/ddtrace/contrib/kafka/event.rb +0 -52
  836. data/lib/ddtrace/contrib/kafka/events/connection/request.rb +0 -35
  837. data/lib/ddtrace/contrib/kafka/events/consumer/process_batch.rb +0 -42
  838. data/lib/ddtrace/contrib/kafka/events/consumer/process_message.rb +0 -40
  839. data/lib/ddtrace/contrib/kafka/events/consumer_group/heartbeat.rb +0 -40
  840. data/lib/ddtrace/contrib/kafka/events/consumer_group/join_group.rb +0 -30
  841. data/lib/ddtrace/contrib/kafka/events/consumer_group/leave_group.rb +0 -30
  842. data/lib/ddtrace/contrib/kafka/events/consumer_group/sync_group.rb +0 -30
  843. data/lib/ddtrace/contrib/kafka/events/produce_operation/send_messages.rb +0 -33
  844. data/lib/ddtrace/contrib/kafka/events/producer/deliver_messages.rb +0 -36
  845. data/lib/ddtrace/contrib/kafka/events.rb +0 -45
  846. data/lib/ddtrace/contrib/kafka/ext.rb +0 -42
  847. data/lib/ddtrace/contrib/kafka/integration.rb +0 -40
  848. data/lib/ddtrace/contrib/kafka/patcher.rb +0 -27
  849. data/lib/ddtrace/contrib/lograge/configuration/settings.rb +0 -19
  850. data/lib/ddtrace/contrib/lograge/ext.rb +0 -11
  851. data/lib/ddtrace/contrib/lograge/instrumentation.rb +0 -39
  852. data/lib/ddtrace/contrib/lograge/integration.rb +0 -46
  853. data/lib/ddtrace/contrib/lograge/patcher.rb +0 -26
  854. data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +0 -34
  855. data/lib/ddtrace/contrib/mongodb/ext.rb +0 -24
  856. data/lib/ddtrace/contrib/mongodb/instrumentation.rb +0 -70
  857. data/lib/ddtrace/contrib/mongodb/integration.rb +0 -44
  858. data/lib/ddtrace/contrib/mongodb/parsers.rb +0 -69
  859. data/lib/ddtrace/contrib/mongodb/patcher.rb +0 -32
  860. data/lib/ddtrace/contrib/mongodb/subscribers.rb +0 -112
  861. data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +0 -31
  862. data/lib/ddtrace/contrib/mysql2/ext.rb +0 -19
  863. data/lib/ddtrace/contrib/mysql2/instrumentation.rb +0 -65
  864. data/lib/ddtrace/contrib/mysql2/integration.rb +0 -39
  865. data/lib/ddtrace/contrib/mysql2/patcher.rb +0 -28
  866. data/lib/ddtrace/contrib/patchable.rb +0 -71
  867. data/lib/ddtrace/contrib/patcher.rb +0 -66
  868. data/lib/ddtrace/contrib/presto/configuration/settings.rb +0 -31
  869. data/lib/ddtrace/contrib/presto/ext.rb +0 -29
  870. data/lib/ddtrace/contrib/presto/instrumentation.rb +0 -111
  871. data/lib/ddtrace/contrib/presto/integration.rb +0 -39
  872. data/lib/ddtrace/contrib/presto/patcher.rb +0 -34
  873. data/lib/ddtrace/contrib/qless/configuration/settings.rb +0 -36
  874. data/lib/ddtrace/contrib/qless/ext.rb +0 -21
  875. data/lib/ddtrace/contrib/qless/integration.rb +0 -39
  876. data/lib/ddtrace/contrib/qless/patcher.rb +0 -35
  877. data/lib/ddtrace/contrib/qless/qless_job.rb +0 -74
  878. data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +0 -34
  879. data/lib/ddtrace/contrib/que/configuration/settings.rb +0 -44
  880. data/lib/ddtrace/contrib/que/ext.rb +0 -31
  881. data/lib/ddtrace/contrib/que/integration.rb +0 -43
  882. data/lib/ddtrace/contrib/que/patcher.rb +0 -25
  883. data/lib/ddtrace/contrib/que/tracer.rb +0 -58
  884. data/lib/ddtrace/contrib/racecar/configuration/settings.rb +0 -31
  885. data/lib/ddtrace/contrib/racecar/event.rb +0 -77
  886. data/lib/ddtrace/contrib/racecar/events/batch.rb +0 -28
  887. data/lib/ddtrace/contrib/racecar/events/consume.rb +0 -28
  888. data/lib/ddtrace/contrib/racecar/events/message.rb +0 -28
  889. data/lib/ddtrace/contrib/racecar/events.rb +0 -33
  890. data/lib/ddtrace/contrib/racecar/ext.rb +0 -26
  891. data/lib/ddtrace/contrib/racecar/integration.rb +0 -40
  892. data/lib/ddtrace/contrib/racecar/patcher.rb +0 -27
  893. data/lib/ddtrace/contrib/rack/configuration/settings.rb +0 -47
  894. data/lib/ddtrace/contrib/rack/ext.rb +0 -22
  895. data/lib/ddtrace/contrib/rack/integration.rb +0 -46
  896. data/lib/ddtrace/contrib/rack/middlewares.rb +0 -288
  897. data/lib/ddtrace/contrib/rack/patcher.rb +0 -106
  898. data/lib/ddtrace/contrib/rack/request_queue.rb +0 -45
  899. data/lib/ddtrace/contrib/rails/auto_instrument_railtie.rb +0 -10
  900. data/lib/ddtrace/contrib/rails/configuration/settings.rb +0 -101
  901. data/lib/ddtrace/contrib/rails/ext.rb +0 -18
  902. data/lib/ddtrace/contrib/rails/framework.rb +0 -172
  903. data/lib/ddtrace/contrib/rails/integration.rb +0 -45
  904. data/lib/ddtrace/contrib/rails/log_injection.rb +0 -42
  905. data/lib/ddtrace/contrib/rails/middlewares.rb +0 -44
  906. data/lib/ddtrace/contrib/rails/patcher.rb +0 -119
  907. data/lib/ddtrace/contrib/rails/railtie.rb +0 -18
  908. data/lib/ddtrace/contrib/rails/utils.rb +0 -25
  909. data/lib/ddtrace/contrib/rake/configuration/settings.rb +0 -32
  910. data/lib/ddtrace/contrib/rake/ext.rb +0 -22
  911. data/lib/ddtrace/contrib/rake/instrumentation.rb +0 -91
  912. data/lib/ddtrace/contrib/rake/integration.rb +0 -39
  913. data/lib/ddtrace/contrib/rake/patcher.rb +0 -31
  914. data/lib/ddtrace/contrib/redis/configuration/resolver.rb +0 -46
  915. data/lib/ddtrace/contrib/redis/configuration/settings.rb +0 -36
  916. data/lib/ddtrace/contrib/redis/ext.rb +0 -23
  917. data/lib/ddtrace/contrib/redis/instrumentation.rb +0 -90
  918. data/lib/ddtrace/contrib/redis/integration.rb +0 -43
  919. data/lib/ddtrace/contrib/redis/patcher.rb +0 -33
  920. data/lib/ddtrace/contrib/redis/quantize.rb +0 -76
  921. data/lib/ddtrace/contrib/redis/tags.rb +0 -47
  922. data/lib/ddtrace/contrib/redis/vendor/resolver.rb +0 -159
  923. data/lib/ddtrace/contrib/registerable.rb +0 -33
  924. data/lib/ddtrace/contrib/registry.rb +0 -43
  925. data/lib/ddtrace/contrib/resque/configuration/settings.rb +0 -49
  926. data/lib/ddtrace/contrib/resque/ext.rb +0 -18
  927. data/lib/ddtrace/contrib/resque/integration.rb +0 -44
  928. data/lib/ddtrace/contrib/resque/patcher.rb +0 -30
  929. data/lib/ddtrace/contrib/resque/resque_job.rb +0 -104
  930. data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +0 -32
  931. data/lib/ddtrace/contrib/rest_client/ext.rb +0 -18
  932. data/lib/ddtrace/contrib/rest_client/integration.rb +0 -39
  933. data/lib/ddtrace/contrib/rest_client/patcher.rb +0 -25
  934. data/lib/ddtrace/contrib/rest_client/request_patch.rb +0 -92
  935. data/lib/ddtrace/contrib/semantic_logger/configuration/settings.rb +0 -19
  936. data/lib/ddtrace/contrib/semantic_logger/ext.rb +0 -11
  937. data/lib/ddtrace/contrib/semantic_logger/instrumentation.rb +0 -43
  938. data/lib/ddtrace/contrib/semantic_logger/integration.rb +0 -48
  939. data/lib/ddtrace/contrib/semantic_logger/patcher.rb +0 -26
  940. data/lib/ddtrace/contrib/sequel/configuration/settings.rb +0 -29
  941. data/lib/ddtrace/contrib/sequel/database.rb +0 -64
  942. data/lib/ddtrace/contrib/sequel/dataset.rb +0 -64
  943. data/lib/ddtrace/contrib/sequel/ext.rb +0 -20
  944. data/lib/ddtrace/contrib/sequel/integration.rb +0 -39
  945. data/lib/ddtrace/contrib/sequel/patcher.rb +0 -34
  946. data/lib/ddtrace/contrib/sequel/utils.rb +0 -75
  947. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +0 -32
  948. data/lib/ddtrace/contrib/shoryuken/ext.rb +0 -22
  949. data/lib/ddtrace/contrib/shoryuken/integration.rb +0 -40
  950. data/lib/ddtrace/contrib/shoryuken/patcher.rb +0 -25
  951. data/lib/ddtrace/contrib/shoryuken/tracer.rb +0 -56
  952. data/lib/ddtrace/contrib/sidekiq/client_tracer.rb +0 -44
  953. data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +0 -38
  954. data/lib/ddtrace/contrib/sidekiq/ext.rb +0 -31
  955. data/lib/ddtrace/contrib/sidekiq/integration.rb +0 -49
  956. data/lib/ddtrace/contrib/sidekiq/patcher.rb +0 -68
  957. data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/heartbeat.rb +0 -30
  958. data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/job_fetch.rb +0 -30
  959. data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/scheduled_push.rb +0 -29
  960. data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +0 -66
  961. data/lib/ddtrace/contrib/sidekiq/tracing.rb +0 -45
  962. data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +0 -40
  963. data/lib/ddtrace/contrib/sinatra/env.rb +0 -59
  964. data/lib/ddtrace/contrib/sinatra/ext.rb +0 -28
  965. data/lib/ddtrace/contrib/sinatra/headers.rb +0 -30
  966. data/lib/ddtrace/contrib/sinatra/integration.rb +0 -39
  967. data/lib/ddtrace/contrib/sinatra/patcher.rb +0 -30
  968. data/lib/ddtrace/contrib/sinatra/tracer.rb +0 -150
  969. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +0 -112
  970. data/lib/ddtrace/contrib/sneakers/configuration/settings.rb +0 -34
  971. data/lib/ddtrace/contrib/sneakers/ext.rb +0 -23
  972. data/lib/ddtrace/contrib/sneakers/integration.rb +0 -42
  973. data/lib/ddtrace/contrib/sneakers/patcher.rb +0 -25
  974. data/lib/ddtrace/contrib/sneakers/tracer.rb +0 -54
  975. data/lib/ddtrace/contrib/status_code_matcher.rb +0 -70
  976. data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +0 -31
  977. data/lib/ddtrace/contrib/sucker_punch/exception_handler.rb +0 -25
  978. data/lib/ddtrace/contrib/sucker_punch/ext.rb +0 -22
  979. data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +0 -89
  980. data/lib/ddtrace/contrib/sucker_punch/integration.rb +0 -39
  981. data/lib/ddtrace/contrib/sucker_punch/patcher.rb +0 -44
  982. data/lib/ddtrace/correlation.rb +0 -40
  983. data/lib/ddtrace/diagnostics/environment_logger.rb +0 -280
  984. data/lib/ddtrace/diagnostics/health.rb +0 -34
  985. data/lib/ddtrace/distributed_tracing/headers/b3.rb +0 -45
  986. data/lib/ddtrace/distributed_tracing/headers/b3_single.rb +0 -57
  987. data/lib/ddtrace/distributed_tracing/headers/datadog.rb +0 -43
  988. data/lib/ddtrace/distributed_tracing/headers/headers.rb +0 -72
  989. data/lib/ddtrace/distributed_tracing/headers/helpers.rb +0 -44
  990. data/lib/ddtrace/encoding.rb +0 -72
  991. data/lib/ddtrace/error.rb +0 -97
  992. data/lib/ddtrace/event.rb +0 -53
  993. data/lib/ddtrace/ext/analytics.rb +0 -13
  994. data/lib/ddtrace/ext/app_types.rb +0 -12
  995. data/lib/ddtrace/ext/correlation.rb +0 -12
  996. data/lib/ddtrace/ext/diagnostics.rb +0 -37
  997. data/lib/ddtrace/ext/distributed.rb +0 -40
  998. data/lib/ddtrace/ext/environment.rb +0 -24
  999. data/lib/ddtrace/ext/errors.rb +0 -11
  1000. data/lib/ddtrace/ext/forced_tracing.rb +0 -26
  1001. data/lib/ddtrace/ext/git.rb +0 -32
  1002. data/lib/ddtrace/ext/http.rb +0 -47
  1003. data/lib/ddtrace/ext/integration.rb +0 -9
  1004. data/lib/ddtrace/ext/manual_tracing.rb +0 -10
  1005. data/lib/ddtrace/ext/metrics.rb +0 -16
  1006. data/lib/ddtrace/ext/net.rb +0 -11
  1007. data/lib/ddtrace/ext/priority.rb +0 -19
  1008. data/lib/ddtrace/ext/profiling.rb +0 -57
  1009. data/lib/ddtrace/ext/runtime.rb +0 -25
  1010. data/lib/ddtrace/ext/sampling.rb +0 -17
  1011. data/lib/ddtrace/ext/sql.rb +0 -9
  1012. data/lib/ddtrace/ext/test.rb +0 -9
  1013. data/lib/ddtrace/ext/transport.rb +0 -32
  1014. data/lib/ddtrace/forced_tracing.rb +0 -39
  1015. data/lib/ddtrace/logger.rb +0 -41
  1016. data/lib/ddtrace/metrics.rb +0 -282
  1017. data/lib/ddtrace/opentelemetry/extensions.rb +0 -14
  1018. data/lib/ddtrace/opentelemetry/span.rb +0 -34
  1019. data/lib/ddtrace/opentracer/binary_propagator.rb +0 -25
  1020. data/lib/ddtrace/opentracer/carrier.rb +0 -7
  1021. data/lib/ddtrace/opentracer/distributed_headers.rb +0 -56
  1022. data/lib/ddtrace/opentracer/global_tracer.rb +0 -16
  1023. data/lib/ddtrace/opentracer/propagator.rb +0 -23
  1024. data/lib/ddtrace/opentracer/rack_propagator.rb +0 -61
  1025. data/lib/ddtrace/opentracer/scope.rb +0 -16
  1026. data/lib/ddtrace/opentracer/scope_manager.rb +0 -7
  1027. data/lib/ddtrace/opentracer/span.rb +0 -95
  1028. data/lib/ddtrace/opentracer/span_context.rb +0 -15
  1029. data/lib/ddtrace/opentracer/span_context_factory.rb +0 -24
  1030. data/lib/ddtrace/opentracer/text_map_propagator.rb +0 -76
  1031. data/lib/ddtrace/opentracer/thread_local_scope.rb +0 -32
  1032. data/lib/ddtrace/opentracer/thread_local_scope_manager.rb +0 -41
  1033. data/lib/ddtrace/opentracer/tracer.rb +0 -209
  1034. data/lib/ddtrace/opentracer.rb +0 -22
  1035. data/lib/ddtrace/patcher.rb +0 -69
  1036. data/lib/ddtrace/pin.rb +0 -86
  1037. data/lib/ddtrace/pipeline/span_filter.rb +0 -39
  1038. data/lib/ddtrace/pipeline/span_processor.rb +0 -21
  1039. data/lib/ddtrace/pipeline.rb +0 -47
  1040. data/lib/ddtrace/profiling/backtrace_location.rb +0 -33
  1041. data/lib/ddtrace/profiling/buffer.rb +0 -42
  1042. data/lib/ddtrace/profiling/collectors/stack.rb +0 -301
  1043. data/lib/ddtrace/profiling/encoding/profile.rb +0 -46
  1044. data/lib/ddtrace/profiling/event.rb +0 -14
  1045. data/lib/ddtrace/profiling/events/stack.rb +0 -81
  1046. data/lib/ddtrace/profiling/exporter.rb +0 -24
  1047. data/lib/ddtrace/profiling/ext/forking.rb +0 -98
  1048. data/lib/ddtrace/profiling/flush.rb +0 -44
  1049. data/lib/ddtrace/profiling/native_extension.rb +0 -40
  1050. data/lib/ddtrace/profiling/pprof/builder.rb +0 -126
  1051. data/lib/ddtrace/profiling/pprof/converter.rb +0 -103
  1052. data/lib/ddtrace/profiling/pprof/message_set.rb +0 -15
  1053. data/lib/ddtrace/profiling/pprof/payload.rb +0 -19
  1054. data/lib/ddtrace/profiling/pprof/pprof_pb.rb +0 -82
  1055. data/lib/ddtrace/profiling/pprof/stack_sample.rb +0 -140
  1056. data/lib/ddtrace/profiling/pprof/string_table.rb +0 -11
  1057. data/lib/ddtrace/profiling/pprof/template.rb +0 -119
  1058. data/lib/ddtrace/profiling/profiler.rb +0 -31
  1059. data/lib/ddtrace/profiling/recorder.rb +0 -96
  1060. data/lib/ddtrace/profiling/scheduler.rb +0 -134
  1061. data/lib/ddtrace/profiling/tasks/setup.rb +0 -90
  1062. data/lib/ddtrace/profiling/trace_identifiers/ddtrace.rb +0 -42
  1063. data/lib/ddtrace/profiling/trace_identifiers/helper.rb +0 -46
  1064. data/lib/ddtrace/profiling/transport/client.rb +0 -15
  1065. data/lib/ddtrace/profiling/transport/http/api/endpoint.rb +0 -101
  1066. data/lib/ddtrace/profiling/transport/http/api/instance.rb +0 -37
  1067. data/lib/ddtrace/profiling/transport/http/api/spec.rb +0 -41
  1068. data/lib/ddtrace/profiling/transport/http/api.rb +0 -44
  1069. data/lib/ddtrace/profiling/transport/http/builder.rb +0 -29
  1070. data/lib/ddtrace/profiling/transport/http/client.rb +0 -34
  1071. data/lib/ddtrace/profiling/transport/http/response.rb +0 -22
  1072. data/lib/ddtrace/profiling/transport/http.rb +0 -111
  1073. data/lib/ddtrace/profiling/transport/io/client.rb +0 -28
  1074. data/lib/ddtrace/profiling/transport/io/response.rb +0 -17
  1075. data/lib/ddtrace/profiling/transport/io.rb +0 -31
  1076. data/lib/ddtrace/profiling/transport/parcel.rb +0 -18
  1077. data/lib/ddtrace/profiling/transport/request.rb +0 -16
  1078. data/lib/ddtrace/profiling/transport/response.rb +0 -9
  1079. data/lib/ddtrace/profiling.rb +0 -149
  1080. data/lib/ddtrace/propagation/grpc_propagator.rb +0 -75
  1081. data/lib/ddtrace/propagation/http_propagator.rb +0 -91
  1082. data/lib/ddtrace/quantization/hash.rb +0 -104
  1083. data/lib/ddtrace/quantization/http.rb +0 -90
  1084. data/lib/ddtrace/runtime/metrics.rb +0 -135
  1085. data/lib/ddtrace/sampler.rb +0 -303
  1086. data/lib/ddtrace/sampling/matcher.rb +0 -58
  1087. data/lib/ddtrace/sampling/rate_limiter.rb +0 -177
  1088. data/lib/ddtrace/sampling/rule.rb +0 -62
  1089. data/lib/ddtrace/sampling/rule_sampler.rb +0 -133
  1090. data/lib/ddtrace/sampling.rb +0 -3
  1091. data/lib/ddtrace/span.rb +0 -445
  1092. data/lib/ddtrace/sync_writer.rb +0 -69
  1093. data/lib/ddtrace/tasks/exec.rb +0 -47
  1094. data/lib/ddtrace/tasks/help.rb +0 -15
  1095. data/lib/ddtrace/tracer.rb +0 -449
  1096. data/lib/ddtrace/utils/compression.rb +0 -28
  1097. data/lib/ddtrace/utils/database.rb +0 -26
  1098. data/lib/ddtrace/utils/forking.rb +0 -53
  1099. data/lib/ddtrace/utils/object_set.rb +0 -40
  1100. data/lib/ddtrace/utils/only_once.rb +0 -41
  1101. data/lib/ddtrace/utils/sequence.rb +0 -18
  1102. data/lib/ddtrace/utils/string_table.rb +0 -46
  1103. data/lib/ddtrace/utils/time.rb +0 -51
  1104. data/lib/ddtrace/utils.rb +0 -80
  1105. data/lib/ddtrace/vendor/active_record/connection_specification.rb +0 -302
  1106. data/lib/ddtrace/vendor/multipart-post/multipart/post/composite_read_io.rb +0 -117
  1107. data/lib/ddtrace/vendor/multipart-post/multipart/post/multipartable.rb +0 -58
  1108. data/lib/ddtrace/vendor/multipart-post/multipart/post/parts.rb +0 -136
  1109. data/lib/ddtrace/vendor/multipart-post/multipart/post/version.rb +0 -10
  1110. data/lib/ddtrace/vendor/multipart-post/multipart/post.rb +0 -9
  1111. data/lib/ddtrace/vendor/multipart-post/multipart.rb +0 -13
  1112. data/lib/ddtrace/vendor/multipart-post/net/http/post/multipart.rb +0 -33
  1113. data/lib/ddtrace/worker.rb +0 -21
  1114. data/lib/ddtrace/workers/async.rb +0 -175
  1115. data/lib/ddtrace/workers/loop.rb +0 -132
  1116. data/lib/ddtrace/workers/polling.rb +0 -56
  1117. data/lib/ddtrace/workers/queue.rb +0 -41
  1118. data/lib/ddtrace/workers/runtime_metrics.rb +0 -65
  1119. data/lib/ddtrace/workers/trace_writer.rb +0 -200
  1120. data/lib/ddtrace/workers.rb +0 -123
  1121. data/lib/ddtrace/writer.rb +0 -200
  1122. /data/lib/{ddtrace → datadog/core}/vendor/multipart-post/LICENSE +0 -0
  1123. /data/lib/{ddtrace → datadog}/profiling/pprof/pprof.proto +0 -0
  1124. /data/lib/{ddtrace/vendor/active_record → datadog/tracing/contrib/active_record/vendor}/MIT-LICENSE +0 -0
  1125. /data/lib/{ddtrace → datadog/tracing}/contrib/redis/vendor/LICENSE +0 -0
@@ -0,0 +1,49 @@
1
+ # typed: false
2
+
3
+ require 'datadog/tracing/contrib/integration'
4
+
5
+ require 'datadog/tracing/contrib/rails/ext'
6
+ require 'datadog/tracing/contrib/rails/configuration/settings'
7
+ require 'datadog/tracing/contrib/rails/patcher'
8
+
9
+ module Datadog
10
+ module Tracing
11
+ module Contrib
12
+ module Rails
13
+ # Description of Rails integration
14
+ class Integration
15
+ include Contrib::Integration
16
+
17
+ MINIMUM_VERSION = Gem::Version.new('3.2')
18
+
19
+ # @public_api Changing the integration name or integration options can cause breaking changes
20
+ register_as :rails, auto_patch: false
21
+
22
+ def self.version
23
+ Gem.loaded_specs['railties'] && Gem.loaded_specs['railties'].version
24
+ end
25
+
26
+ def self.loaded?
27
+ !defined?(::Rails).nil?
28
+ end
29
+
30
+ def self.compatible?
31
+ super && version >= MINIMUM_VERSION
32
+ end
33
+
34
+ def self.patchable?
35
+ super && !ENV.key?(Ext::ENV_DISABLE)
36
+ end
37
+
38
+ def new_configuration
39
+ Configuration::Settings.new
40
+ end
41
+
42
+ def patcher
43
+ Patcher
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,34 @@
1
+ # typed: false
2
+
3
+ require 'datadog/tracing'
4
+
5
+ module Datadog
6
+ module Tracing
7
+ module Contrib
8
+ # Instrument Rails.
9
+ module Rails
10
+ # Rails log injection helper methods
11
+ module LogInjection
12
+ module_function
13
+
14
+ def add_as_tagged_logging_logger(app)
15
+ # we want to check if the current logger is a tagger logger instance
16
+ # log_tags defaults to nil so we have to set as an array if nothing exists yet
17
+ if (log_tags = app.config.log_tags).nil?
18
+ app.config.log_tags = [proc { Tracing.log_correlation }]
19
+ # if existing log_tags configuration exists, append to the end of the array
20
+ elsif log_tags.is_a?(Array)
21
+ app.config.log_tags << proc { Tracing.log_correlation }
22
+ end
23
+ rescue StandardError => e
24
+ # TODO: can we use Datadog.logger at this point?
25
+ Datadog.logger.warn(
26
+ "Unable to add Datadog Trace context to ActiveSupport::TaggedLogging: #{e.class.name} #{e.message}"
27
+ )
28
+ false
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,47 @@
1
+ # typed: true
2
+
3
+ require 'datadog/tracing'
4
+ require 'datadog/tracing/contrib/action_pack/utils'
5
+
6
+ module Datadog
7
+ module Tracing
8
+ module Contrib
9
+ # Rails module includes middlewares that are required for Rails to be properly instrumented.
10
+ module Rails
11
+ # This is only here to catch errors, the Rack module does something very similar, however,
12
+ # since it's not in the same place in the stack, when the Rack middleware is called,
13
+ # error is already swallowed and handled by Rails so we miss the call stack, for instance.
14
+ class ExceptionMiddleware
15
+ def initialize(app)
16
+ @app = app
17
+ end
18
+
19
+ def call(env)
20
+ @app.call(env)
21
+ # rubocop:disable Lint/RescueException
22
+ # Here we really want to catch *any* exception, not only StandardError,
23
+ # as we really have no clue of what is in the block,
24
+ # and it is user code which should be executed no matter what.
25
+ # It's not a problem since we re-raise it afterwards so for example a
26
+ # SignalException::Interrupt would still bubble up.
27
+ rescue Exception => e
28
+ span = Tracing.active_span
29
+ if !span.nil? && ActionPack::Utils.exception_is_error?(e)
30
+ # Only set error if it's supposed to be flagged as such
31
+ # e.g. we don't want to flag 404s.
32
+ # You can add custom errors via `config.action_dispatch.rescue_responses`
33
+ span.set_error(e)
34
+
35
+ # Some exception gets handled by Rails middleware before it can be set on Rack middleware
36
+ # The rack span is the root span of the request and should make sure it has the full exception
37
+ # set on it.
38
+ env[Contrib::Rack::Ext::RACK_ENV_REQUEST_SPAN].set_error(e) if env[Contrib::Rack::Ext::RACK_ENV_REQUEST_SPAN]
39
+ end
40
+ raise e
41
+ end
42
+ # rubocop:enable Lint/RescueException
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,121 @@
1
+ # typed: ignore
2
+
3
+ require 'datadog/core/utils/only_once'
4
+ require 'datadog/tracing'
5
+ require 'datadog/tracing/contrib/rack/middlewares'
6
+ require 'datadog/tracing/contrib/rails/framework'
7
+ require 'datadog/tracing/contrib/rails/log_injection'
8
+ require 'datadog/tracing/contrib/rails/middlewares'
9
+ require 'datadog/tracing/contrib/rails/utils'
10
+ require 'datadog/tracing/contrib/semantic_logger/patcher'
11
+
12
+ module Datadog
13
+ module Tracing
14
+ module Contrib
15
+ module Rails
16
+ # Patcher enables patching of 'rails' module.
17
+ module Patcher
18
+ include Contrib::Patcher
19
+
20
+ BEFORE_INITIALIZE_ONLY_ONCE_PER_APP = Hash.new { |h, key| h[key] = Core::Utils::OnlyOnce.new }
21
+ AFTER_INITIALIZE_ONLY_ONCE_PER_APP = Hash.new { |h, key| h[key] = Core::Utils::OnlyOnce.new }
22
+
23
+ module_function
24
+
25
+ def target_version
26
+ Integration.version
27
+ end
28
+
29
+ def patch
30
+ patch_before_intialize
31
+ patch_after_intialize
32
+ end
33
+
34
+ def patch_before_intialize
35
+ ::ActiveSupport.on_load(:before_initialize) do
36
+ Contrib::Rails::Patcher.before_intialize(self)
37
+ end
38
+ end
39
+
40
+ def before_intialize(app)
41
+ BEFORE_INITIALIZE_ONLY_ONCE_PER_APP[app].run do
42
+ # Middleware must be added before the application is initialized.
43
+ # Otherwise the middleware stack will be frozen.
44
+ # Sometimes we don't want to activate middleware e.g. OpenTracing, etc.
45
+ add_middleware(app) if Datadog.configuration.tracing[:rails][:middleware]
46
+ add_logger(app) if Datadog.configuration.tracing.log_injection
47
+ end
48
+ end
49
+
50
+ def add_middleware(app)
51
+ # Add trace middleware at the top of the middleware stack,
52
+ # to ensure we capture the complete execution time.
53
+ app.middleware.insert_before(0, Contrib::Rack::TraceMiddleware)
54
+
55
+ # Some Rails middleware can swallow an application error, preventing
56
+ # the error propagation to the encompassing Rack span.
57
+ #
58
+ # We insert our own middleware right before these Rails middleware
59
+ # have a chance to swallow the error.
60
+ #
61
+ # Note: because the middleware stack is push/pop, "before" and "after" are reversed
62
+ # for our use case: we insert ourselves with "after" a middleware to ensure we are
63
+ # able to pop the request "before" it.
64
+ app.middleware.insert_after(::ActionDispatch::DebugExceptions, Contrib::Rails::ExceptionMiddleware)
65
+ end
66
+
67
+ def add_logger(app)
68
+ should_warn = true
69
+ # check if lograge key exists
70
+ # Note: Rails executes initializers sequentially based on alphabetical order,
71
+ # and lograge config could occur after datadog config.
72
+ # So checking for `app.config.lograge.enabled` may yield a false negative,
73
+ # and adding custom options naively if `config.lograge` exists from the lograge Railtie,
74
+ # is inconsistent since a lograge initializer would override it.
75
+ # Instead, we patch Lograge `custom_options` internals directly
76
+ # as part of Rails framework patching
77
+ # and just flag off the warning log here.
78
+ # SemanticLogger we similarly patch in the after_initiaize block, and should flag
79
+ # off the warning log here if we know we'll patch this gem later.
80
+ should_warn = false if app.config.respond_to?(:lograge) || defined?(::SemanticLogger)
81
+
82
+ # if lograge isn't set, check if tagged logged is enabled.
83
+ # if so, add proc that injects trace identifiers for tagged logging.
84
+ logger = app.config.logger || ::Rails.logger
85
+
86
+ if logger \
87
+ && defined?(::ActiveSupport::TaggedLogging) \
88
+ && logger.is_a?(::ActiveSupport::TaggedLogging)
89
+
90
+ Contrib::Rails::LogInjection.add_as_tagged_logging_logger(app)
91
+ should_warn = false
92
+ end
93
+
94
+ if should_warn
95
+ Datadog.logger.warn("Unable to enable Datadog Trace context, Logger #{logger.class} is not supported")
96
+ end
97
+ end
98
+
99
+ def patch_after_intialize
100
+ ::ActiveSupport.on_load(:after_initialize) do
101
+ Contrib::Rails::Patcher.after_intialize(self)
102
+ end
103
+ end
104
+
105
+ def after_intialize(app)
106
+ AFTER_INITIALIZE_ONLY_ONCE_PER_APP[app].run do
107
+ # Finish configuring the tracer after the application is initialized.
108
+ # We need to wait for some things, like application name, middleware stack, etc.
109
+ setup_tracer
110
+ end
111
+ end
112
+
113
+ # Configure Rails tracing with settings
114
+ def setup_tracer
115
+ Contrib::Rails::Framework.setup
116
+ end
117
+ end
118
+ end
119
+ end
120
+ end
121
+ end
@@ -0,0 +1,19 @@
1
+ # typed: ignore
2
+
3
+ require 'datadog/tracing/contrib/rails/framework'
4
+ require 'datadog/tracing/contrib/rails/middlewares'
5
+ require 'datadog/tracing/contrib/rack/middlewares'
6
+
7
+ module Datadog
8
+ # Railtie class initializes
9
+ class Railtie < Rails::Railtie
10
+ # Add the trace middleware to the application stack
11
+ initializer 'datadog.before_intialize' do |app|
12
+ Tracing::Contrib::Rails::Patcher.before_intialize(app)
13
+ end
14
+
15
+ config.after_initialize do
16
+ Tracing::Contrib::Rails::Patcher.after_intialize(self)
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,28 @@
1
+ # typed: false
2
+
3
+ require 'datadog/tracing/contrib/analytics'
4
+
5
+ module Datadog
6
+ module Tracing
7
+ module Contrib
8
+ module Rails
9
+ # common utilities for Rails
10
+ module Utils
11
+ def self.app_name
12
+ if ::Rails::VERSION::MAJOR >= 6
13
+ ::Rails.application.class.module_parent_name.underscore
14
+ elsif ::Rails::VERSION::MAJOR >= 4
15
+ ::Rails.application.class.parent_name.underscore
16
+ else
17
+ ::Rails.application.class.to_s.underscore
18
+ end
19
+ end
20
+
21
+ def self.railtie_supported?
22
+ !(defined?(::Rails::VERSION::MAJOR) && ::Rails::VERSION::MAJOR >= 3 && defined?(::Rails::Railtie)).nil?
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,36 @@
1
+ # typed: false
2
+
3
+ require 'datadog/tracing/contrib/configuration/settings'
4
+ require 'datadog/tracing/contrib/rake/ext'
5
+
6
+ module Datadog
7
+ module Tracing
8
+ module Contrib
9
+ module Rake
10
+ module Configuration
11
+ # Custom settings for the Rake integration
12
+ # @public_api
13
+ class Settings < Contrib::Configuration::Settings
14
+ option :enabled do |o|
15
+ o.default { env_to_bool(Ext::ENV_ENABLED, true) }
16
+ o.lazy
17
+ end
18
+
19
+ option :analytics_enabled do |o|
20
+ o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) }
21
+ o.lazy
22
+ end
23
+
24
+ option :analytics_sample_rate do |o|
25
+ o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
26
+ o.lazy
27
+ end
28
+
29
+ option :quantize, default: {}
30
+ option :service_name
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,26 @@
1
+ # typed: true
2
+
3
+ module Datadog
4
+ module Tracing
5
+ module Contrib
6
+ module Rake
7
+ # Rake integration constants
8
+ # @public_api Changing resource names, tag names, or environment variables creates breaking changes.
9
+ module Ext
10
+ ENV_ENABLED = 'DD_TRACE_RAKE_ENABLED'.freeze
11
+ ENV_ANALYTICS_ENABLED = 'DD_TRACE_RAKE_ANALYTICS_ENABLED'.freeze
12
+ ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_RAKE_ANALYTICS_SAMPLE_RATE'.freeze
13
+ SERVICE_NAME = 'rake'.freeze
14
+ SPAN_INVOKE = 'rake.invoke'.freeze
15
+ SPAN_EXECUTE = 'rake.execute'.freeze
16
+ TAG_EXECUTE_ARGS = 'rake.execute.args'.freeze
17
+ TAG_INVOKE_ARGS = 'rake.invoke.args'.freeze
18
+ TAG_TASK_ARG_NAMES = 'rake.task.arg_names'.freeze
19
+ TAG_COMPONENT = 'rake'.freeze
20
+ TAG_OPERATION_EXECUTE = 'execute'.freeze
21
+ TAG_OPERATION_INVOKE = 'invoke'.freeze
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,98 @@
1
+ # typed: false
2
+
3
+ require 'datadog/tracing'
4
+ require 'datadog/tracing/metadata/ext'
5
+ require 'datadog/tracing/contrib/analytics'
6
+ require 'datadog/tracing/contrib/rake/ext'
7
+ require 'datadog/tracing/contrib/utils/quantization/hash'
8
+
9
+ module Datadog
10
+ module Tracing
11
+ module Contrib
12
+ module Rake
13
+ # Instrumentation for Rake tasks
14
+ module Instrumentation
15
+ def self.included(base)
16
+ base.prepend(InstanceMethods)
17
+ end
18
+
19
+ # Instance methods for Rake instrumentation
20
+ module InstanceMethods
21
+ def invoke(*args)
22
+ return super unless enabled?
23
+
24
+ Tracing.trace(Ext::SPAN_INVOKE, **span_options) do |span|
25
+ annotate_invoke!(span, args)
26
+ super
27
+ end
28
+ ensure
29
+ shutdown_tracer!
30
+ end
31
+
32
+ def execute(args = nil)
33
+ return super unless enabled?
34
+
35
+ Tracing.trace(Ext::SPAN_EXECUTE, **span_options) do |span|
36
+ annotate_execute!(span, args)
37
+ super
38
+ end
39
+ ensure
40
+ shutdown_tracer!
41
+ end
42
+
43
+ private
44
+
45
+ def shutdown_tracer!
46
+ Tracing.shutdown! if Tracing.active_span.nil? && ::Rake.application.top_level_tasks.include?(name)
47
+ end
48
+
49
+ def annotate_invoke!(span, args)
50
+ span.resource = name
51
+ # Set analytics sample rate
52
+ if Contrib::Analytics.enabled?(configuration[:analytics_enabled])
53
+ Contrib::Analytics.set_sample_rate(span, configuration[:analytics_sample_rate])
54
+ end
55
+
56
+ # Measure service stats
57
+ Contrib::Analytics.set_measured(span)
58
+
59
+ span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
60
+ span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_INVOKE)
61
+ span.set_tag(Ext::TAG_TASK_ARG_NAMES, arg_names)
62
+ span.set_tag(Ext::TAG_INVOKE_ARGS, quantize_args(args)) unless args.nil?
63
+ rescue StandardError => e
64
+ Datadog.logger.debug("Error while tracing Rake invoke: #{e.class.name} #{e.message}")
65
+ end
66
+
67
+ def annotate_execute!(span, args)
68
+ span.resource = name
69
+ span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
70
+ span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_EXECUTE)
71
+ span.set_tag(Ext::TAG_EXECUTE_ARGS, quantize_args(args.to_hash)) unless args.nil?
72
+ rescue StandardError => e
73
+ Datadog.logger.debug("Error while tracing Rake execute: #{e.class.name} #{e.message}")
74
+ end
75
+
76
+ def quantize_args(args)
77
+ quantize_options = configuration[:quantize][:args]
78
+ Contrib::Utils::Quantization::Hash.format(args, quantize_options)
79
+ end
80
+
81
+ def enabled?
82
+ Datadog.configuration.tracing.enabled && \
83
+ configuration[:enabled] == true
84
+ end
85
+
86
+ def span_options
87
+ { service: configuration[:service_name] }
88
+ end
89
+
90
+ def configuration
91
+ Datadog.configuration.tracing[:rake]
92
+ end
93
+ end
94
+ end
95
+ end
96
+ end
97
+ end
98
+ end
@@ -0,0 +1,43 @@
1
+ # typed: false
2
+
3
+ require 'datadog/tracing/contrib/integration'
4
+ require 'datadog/tracing/contrib/rake/configuration/settings'
5
+ require 'datadog/tracing/contrib/rake/patcher'
6
+
7
+ module Datadog
8
+ module Tracing
9
+ module Contrib
10
+ module Rake
11
+ # Description of Rake integration
12
+ class Integration
13
+ include Contrib::Integration
14
+
15
+ MINIMUM_VERSION = Gem::Version.new('12.0')
16
+
17
+ # @public_api Changing the integration name or integration options can cause breaking changes
18
+ register_as :rake
19
+
20
+ def self.version
21
+ Gem.loaded_specs['rake'] && Gem.loaded_specs['rake'].version
22
+ end
23
+
24
+ def self.loaded?
25
+ !defined?(::Rake::Task).nil?
26
+ end
27
+
28
+ def self.compatible?
29
+ super && version >= MINIMUM_VERSION
30
+ end
31
+
32
+ def new_configuration
33
+ Configuration::Settings.new
34
+ end
35
+
36
+ def patcher
37
+ Patcher
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,34 @@
1
+ # typed: true
2
+
3
+ require 'datadog/tracing'
4
+ require 'datadog/tracing/contrib/patcher'
5
+ require 'datadog/tracing/contrib/rake/ext'
6
+ require 'datadog/tracing/contrib/rake/instrumentation'
7
+
8
+ module Datadog
9
+ module Tracing
10
+ module Contrib
11
+ module Rake
12
+ # Patcher enables patching of 'rake' module.
13
+ module Patcher
14
+ include Contrib::Patcher
15
+
16
+ module_function
17
+
18
+ def target_version
19
+ Integration.version
20
+ end
21
+
22
+ def patch
23
+ # Add instrumentation patch to Rake task
24
+ ::Rake::Task.include(Instrumentation)
25
+ end
26
+
27
+ def get_option(option)
28
+ Datadog.configuration.tracing[:rake].get_option(option)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,49 @@
1
+ # typed: true
2
+
3
+ require 'datadog/tracing/contrib/redis/vendor/resolver'
4
+
5
+ module Datadog
6
+ module Tracing
7
+ module Contrib
8
+ module Redis
9
+ module Configuration
10
+ UNIX_SCHEME = 'unix'.freeze
11
+
12
+ # Converts String URLs and Hashes to a normalized connection settings Hash.
13
+ class Resolver < Contrib::Configuration::Resolver
14
+ # @param [Hash,String] Redis connection information
15
+ def resolve(hash)
16
+ super(parse_matcher(hash))
17
+ end
18
+
19
+ protected
20
+
21
+ def parse_matcher(matcher)
22
+ matcher = { url: matcher } if matcher.is_a?(String)
23
+
24
+ normalize(connection_resolver.resolve(matcher))
25
+ end
26
+
27
+ def normalize(hash)
28
+ return { url: hash[:url] } if hash[:scheme] == UNIX_SCHEME
29
+
30
+ # Connexion strings are always converted to host, port, db and scheme
31
+ # but the host, port, db and scheme will generate the :url only after
32
+ # establishing a first connexion
33
+ {
34
+ host: hash[:host],
35
+ port: hash[:port],
36
+ db: hash[:db],
37
+ scheme: hash[:scheme]
38
+ }
39
+ end
40
+
41
+ def connection_resolver
42
+ @connection_resolver ||= Vendor::Resolver.new
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,40 @@
1
+ # typed: false
2
+
3
+ require 'datadog/tracing/contrib/configuration/settings'
4
+ require 'datadog/tracing/contrib/redis/ext'
5
+
6
+ module Datadog
7
+ module Tracing
8
+ module Contrib
9
+ module Redis
10
+ module Configuration
11
+ # Custom settings for the Redis integration
12
+ # @public_api
13
+ class Settings < Contrib::Configuration::Settings
14
+ option :enabled do |o|
15
+ o.default { env_to_bool(Ext::ENV_ENABLED, true) }
16
+ o.lazy
17
+ end
18
+
19
+ option :analytics_enabled do |o|
20
+ o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) }
21
+ o.lazy
22
+ end
23
+
24
+ option :analytics_sample_rate do |o|
25
+ o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
26
+ o.lazy
27
+ end
28
+
29
+ option :command_args do |o|
30
+ o.default { env_to_bool(Ext::ENV_COMMAND_ARGS, true) }
31
+ o.lazy
32
+ end
33
+
34
+ option :service_name, default: Ext::DEFAULT_PEER_SERVICE_NAME
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,26 @@
1
+ # typed: true
2
+
3
+ module Datadog
4
+ module Tracing
5
+ module Contrib
6
+ module Redis
7
+ # Redis integration constants
8
+ # @public_api Changing resource names, tag names, or environment variables creates breaking changes.
9
+ module Ext
10
+ ENV_ENABLED = 'DD_TRACE_REDIS_ENABLED'.freeze
11
+ ENV_ANALYTICS_ENABLED = 'DD_TRACE_REDIS_ANALYTICS_ENABLED'.freeze
12
+ ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_REDIS_ANALYTICS_SAMPLE_RATE'.freeze
13
+ ENV_COMMAND_ARGS = 'DD_REDIS_COMMAND_ARGS'.freeze
14
+ METRIC_PIPELINE_LEN = 'redis.pipeline_length'.freeze
15
+ DEFAULT_PEER_SERVICE_NAME = 'redis'.freeze
16
+ SPAN_COMMAND = 'redis.command'.freeze
17
+ TAG_DB = 'out.redis_db'.freeze
18
+ TAG_RAW_COMMAND = 'redis.raw_command'.freeze
19
+ TYPE = 'redis'.freeze
20
+ TAG_COMPONENT = 'redis'.freeze
21
+ TAG_OPERATION_COMMAND = 'command'.freeze
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end