ddtrace 0.54.2 → 1.4.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 (1160) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +283 -1
  3. data/LICENSE-3rdparty.csv +5 -1
  4. data/README.md +10 -1
  5. data/bin/ddtracerb +5 -5
  6. data/ext/ddtrace_profiling_loader/ddtrace_profiling_loader.c +118 -0
  7. data/ext/ddtrace_profiling_loader/extconf.rb +54 -0
  8. data/ext/ddtrace_profiling_native_extension/NativeExtensionDesign.md +43 -9
  9. data/ext/ddtrace_profiling_native_extension/clock_id.h +21 -1
  10. data/ext/ddtrace_profiling_native_extension/clock_id_from_pthread.c +31 -10
  11. data/ext/ddtrace_profiling_native_extension/clock_id_noop.c +11 -2
  12. data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time.c +390 -0
  13. data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time.h +6 -0
  14. data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +391 -0
  15. data/ext/ddtrace_profiling_native_extension/collectors_stack.c +282 -0
  16. data/ext/ddtrace_profiling_native_extension/collectors_stack.h +9 -0
  17. data/ext/ddtrace_profiling_native_extension/extconf.rb +140 -113
  18. data/ext/ddtrace_profiling_native_extension/helpers.h +12 -0
  19. data/ext/ddtrace_profiling_native_extension/http_transport.c +334 -0
  20. data/ext/ddtrace_profiling_native_extension/libdatadog_helpers.h +14 -0
  21. data/ext/ddtrace_profiling_native_extension/native_extension_helpers.rb +290 -0
  22. data/ext/ddtrace_profiling_native_extension/private_vm_api_access.c +665 -8
  23. data/ext/ddtrace_profiling_native_extension/private_vm_api_access.h +30 -0
  24. data/ext/ddtrace_profiling_native_extension/profiling.c +16 -2
  25. data/ext/ddtrace_profiling_native_extension/ruby_helpers.c +25 -0
  26. data/ext/ddtrace_profiling_native_extension/ruby_helpers.h +65 -0
  27. data/ext/ddtrace_profiling_native_extension/stack_recorder.c +422 -0
  28. data/ext/ddtrace_profiling_native_extension/stack_recorder.h +38 -0
  29. data/lib/datadog/appsec/assets/blocked.html +4 -0
  30. data/lib/datadog/appsec/assets/waf_rules/README.md +7 -0
  31. data/lib/datadog/appsec/assets/waf_rules/recommended.json +5638 -0
  32. data/lib/datadog/appsec/assets/waf_rules/risky.json +1499 -0
  33. data/lib/datadog/appsec/assets/waf_rules/strict.json +1298 -0
  34. data/lib/datadog/appsec/assets.rb +38 -0
  35. data/lib/datadog/appsec/autoload.rb +18 -0
  36. data/lib/datadog/appsec/configuration/settings.rb +194 -0
  37. data/lib/datadog/appsec/configuration.rb +80 -0
  38. data/lib/datadog/appsec/contrib/auto_instrument.rb +27 -0
  39. data/lib/datadog/appsec/contrib/configuration/settings.rb +20 -0
  40. data/lib/datadog/appsec/contrib/integration.rb +37 -0
  41. data/lib/datadog/appsec/contrib/patcher.rb +12 -0
  42. data/lib/datadog/appsec/contrib/rack/configuration/settings.rb +22 -0
  43. data/lib/datadog/appsec/contrib/rack/ext.rb +15 -0
  44. data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +169 -0
  45. data/lib/datadog/appsec/contrib/rack/integration.rb +49 -0
  46. data/lib/datadog/appsec/contrib/rack/patcher.rb +32 -0
  47. data/lib/datadog/appsec/contrib/rack/reactive/request.rb +87 -0
  48. data/lib/datadog/appsec/contrib/rack/reactive/request_body.rb +64 -0
  49. data/lib/datadog/appsec/contrib/rack/reactive/response.rb +64 -0
  50. data/lib/datadog/appsec/contrib/rack/request.rb +58 -0
  51. data/lib/datadog/appsec/contrib/rack/request_body_middleware.rb +41 -0
  52. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +112 -0
  53. data/lib/datadog/appsec/contrib/rack/response.rb +24 -0
  54. data/lib/datadog/appsec/contrib/rails/configuration/settings.rb +22 -0
  55. data/lib/datadog/appsec/contrib/rails/ext.rb +15 -0
  56. data/lib/datadog/appsec/contrib/rails/framework.rb +30 -0
  57. data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +81 -0
  58. data/lib/datadog/appsec/contrib/rails/integration.rb +48 -0
  59. data/lib/datadog/appsec/contrib/rails/patcher.rb +162 -0
  60. data/lib/datadog/appsec/contrib/rails/reactive/action.rb +68 -0
  61. data/lib/datadog/appsec/contrib/rails/request.rb +33 -0
  62. data/lib/datadog/appsec/contrib/rails/request_middleware.rb +20 -0
  63. data/lib/datadog/appsec/contrib/sinatra/configuration/settings.rb +22 -0
  64. data/lib/datadog/appsec/contrib/sinatra/ext.rb +15 -0
  65. data/lib/datadog/appsec/contrib/sinatra/framework.rb +34 -0
  66. data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +124 -0
  67. data/lib/datadog/appsec/contrib/sinatra/integration.rb +48 -0
  68. data/lib/datadog/appsec/contrib/sinatra/patcher.rb +148 -0
  69. data/lib/datadog/appsec/contrib/sinatra/reactive/routed.rb +63 -0
  70. data/lib/datadog/appsec/contrib/sinatra/request_middleware.rb +20 -0
  71. data/lib/datadog/appsec/event.rb +121 -0
  72. data/lib/datadog/appsec/extensions.rb +118 -0
  73. data/lib/datadog/appsec/instrumentation/gateway.rb +44 -0
  74. data/lib/datadog/appsec/processor.rb +164 -0
  75. data/lib/datadog/appsec/rate_limiter.rb +60 -0
  76. data/lib/datadog/appsec/reactive/address_hash.rb +18 -0
  77. data/lib/datadog/appsec/reactive/engine.rb +44 -0
  78. data/lib/datadog/appsec/reactive/operation.rb +51 -0
  79. data/lib/datadog/appsec/reactive/subscriber.rb +18 -0
  80. data/lib/datadog/appsec.rb +23 -0
  81. data/lib/datadog/ci/configuration/components.rb +9 -8
  82. data/lib/datadog/ci/configuration/settings.rb +20 -4
  83. data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +5 -3
  84. data/lib/datadog/ci/contrib/cucumber/ext.rb +2 -0
  85. data/lib/datadog/ci/contrib/cucumber/formatter.rb +9 -14
  86. data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +3 -2
  87. data/lib/datadog/ci/contrib/cucumber/integration.rb +6 -5
  88. data/lib/datadog/ci/contrib/cucumber/patcher.rb +4 -3
  89. data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +5 -3
  90. data/lib/datadog/ci/contrib/rspec/example.rb +9 -14
  91. data/lib/datadog/ci/contrib/rspec/ext.rb +2 -0
  92. data/lib/datadog/ci/contrib/rspec/integration.rb +6 -5
  93. data/lib/datadog/ci/contrib/rspec/patcher.rb +4 -3
  94. data/lib/datadog/ci/ext/app_types.rb +2 -1
  95. data/lib/datadog/ci/ext/environment.rb +135 -115
  96. data/lib/datadog/ci/ext/settings.rb +2 -1
  97. data/lib/datadog/ci/ext/test.rb +1 -0
  98. data/lib/datadog/ci/extensions.rb +7 -6
  99. data/lib/datadog/ci/flush.rb +38 -0
  100. data/lib/datadog/ci/test.rb +17 -15
  101. data/lib/datadog/ci.rb +7 -4
  102. data/lib/datadog/core/buffer/cruby.rb +55 -0
  103. data/lib/datadog/core/buffer/random.rb +134 -0
  104. data/lib/datadog/core/buffer/thread_safe.rb +58 -0
  105. data/lib/datadog/core/chunker.rb +35 -0
  106. data/lib/datadog/core/configuration/agent_settings_resolver.rb +365 -0
  107. data/lib/datadog/core/configuration/base.rb +98 -0
  108. data/lib/datadog/core/configuration/components.rb +429 -0
  109. data/lib/datadog/core/configuration/dependency_resolver.rb +28 -0
  110. data/lib/datadog/core/configuration/option.rb +69 -0
  111. data/lib/datadog/core/configuration/option_definition.rb +126 -0
  112. data/lib/datadog/core/configuration/option_definition_set.rb +22 -0
  113. data/lib/datadog/core/configuration/option_set.rb +10 -0
  114. data/lib/datadog/core/configuration/options.rb +118 -0
  115. data/lib/datadog/core/configuration/settings.rb +652 -0
  116. data/lib/datadog/core/configuration.rb +289 -0
  117. data/lib/datadog/core/diagnostics/environment_logger.rb +283 -0
  118. data/lib/datadog/core/diagnostics/ext.rb +41 -0
  119. data/lib/datadog/core/diagnostics/health.rb +37 -0
  120. data/lib/datadog/core/encoding.rb +76 -0
  121. data/lib/datadog/core/environment/cgroup.rb +5 -2
  122. data/lib/datadog/core/environment/class_count.rb +1 -0
  123. data/lib/datadog/core/environment/container.rb +4 -2
  124. data/lib/datadog/core/environment/ext.rb +29 -10
  125. data/lib/datadog/core/environment/gc.rb +1 -0
  126. data/lib/datadog/core/environment/identity.rb +12 -5
  127. data/lib/datadog/core/environment/platform.rb +40 -0
  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/telemetry/client.rb +79 -0
  147. data/lib/datadog/core/telemetry/collector.rb +234 -0
  148. data/lib/datadog/core/telemetry/emitter.rb +48 -0
  149. data/lib/datadog/core/telemetry/event.rb +71 -0
  150. data/lib/datadog/core/telemetry/ext.rb +11 -0
  151. data/lib/datadog/core/telemetry/heartbeat.rb +37 -0
  152. data/lib/datadog/core/telemetry/http/adapters/net.rb +113 -0
  153. data/lib/datadog/core/telemetry/http/env.rb +20 -0
  154. data/lib/datadog/core/telemetry/http/ext.rb +20 -0
  155. data/lib/datadog/core/telemetry/http/response.rb +68 -0
  156. data/lib/datadog/core/telemetry/http/transport.rb +53 -0
  157. data/lib/datadog/core/telemetry/v1/app_event.rb +52 -0
  158. data/lib/datadog/core/telemetry/v1/application.rb +86 -0
  159. data/lib/datadog/core/telemetry/v1/configuration.rb +25 -0
  160. data/lib/datadog/core/telemetry/v1/dependency.rb +36 -0
  161. data/lib/datadog/core/telemetry/v1/host.rb +51 -0
  162. data/lib/datadog/core/telemetry/v1/integration.rb +58 -0
  163. data/lib/datadog/core/telemetry/v1/product.rb +28 -0
  164. data/lib/datadog/core/telemetry/v1/telemetry_request.rb +100 -0
  165. data/lib/datadog/core/utils/compression.rb +32 -0
  166. data/lib/datadog/core/utils/forking.rb +63 -0
  167. data/lib/datadog/core/utils/object_set.rb +43 -0
  168. data/lib/datadog/core/utils/only_once.rb +44 -0
  169. data/lib/datadog/core/utils/safe_dup.rb +27 -0
  170. data/lib/datadog/core/utils/sequence.rb +26 -0
  171. data/lib/datadog/core/utils/string_table.rb +49 -0
  172. data/lib/datadog/core/utils/time.rb +54 -0
  173. data/lib/datadog/core/utils.rb +115 -0
  174. data/lib/{ddtrace → datadog/core}/vendor/multipart-post/LICENSE +0 -0
  175. data/lib/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rb +120 -0
  176. data/lib/datadog/core/vendor/multipart-post/multipart/post/multipartable.rb +61 -0
  177. data/lib/datadog/core/vendor/multipart-post/multipart/post/parts.rb +139 -0
  178. data/lib/datadog/core/vendor/multipart-post/multipart/post/version.rb +13 -0
  179. data/lib/datadog/core/vendor/multipart-post/multipart/post.rb +12 -0
  180. data/lib/datadog/core/vendor/multipart-post/multipart.rb +16 -0
  181. data/lib/datadog/core/vendor/multipart-post/net/http/post/multipart.rb +36 -0
  182. data/lib/datadog/core/worker.rb +24 -0
  183. data/lib/datadog/core/workers/async.rb +182 -0
  184. data/lib/datadog/core/workers/interval_loop.rb +119 -0
  185. data/lib/datadog/core/workers/polling.rb +59 -0
  186. data/lib/datadog/core/workers/queue.rb +44 -0
  187. data/lib/datadog/core/workers/runtime_metrics.rb +62 -0
  188. data/lib/datadog/core.rb +80 -0
  189. data/lib/datadog/kit/enable_core_dumps.rb +50 -0
  190. data/lib/datadog/kit/identity.rb +63 -0
  191. data/lib/datadog/kit.rb +11 -0
  192. data/lib/datadog/opentracer/binary_propagator.rb +26 -0
  193. data/lib/datadog/opentracer/carrier.rb +9 -0
  194. data/lib/datadog/opentracer/distributed_headers.rb +58 -0
  195. data/lib/datadog/opentracer/global_tracer.rb +17 -0
  196. data/lib/datadog/opentracer/propagator.rb +26 -0
  197. data/lib/datadog/opentracer/rack_propagator.rb +76 -0
  198. data/lib/datadog/opentracer/scope.rb +18 -0
  199. data/lib/datadog/opentracer/scope_manager.rb +9 -0
  200. data/lib/datadog/opentracer/span.rb +101 -0
  201. data/lib/datadog/opentracer/span_context.rb +19 -0
  202. data/lib/datadog/opentracer/span_context_factory.rb +27 -0
  203. data/lib/datadog/opentracer/text_map_propagator.rb +90 -0
  204. data/lib/datadog/opentracer/thread_local_scope.rb +34 -0
  205. data/lib/datadog/opentracer/thread_local_scope_manager.rb +66 -0
  206. data/lib/datadog/opentracer/tracer.rb +216 -0
  207. data/lib/datadog/opentracer.rb +24 -0
  208. data/lib/datadog/profiling/backtrace_location.rb +34 -0
  209. data/lib/datadog/profiling/buffer.rb +43 -0
  210. data/lib/datadog/profiling/collectors/code_provenance.rb +115 -0
  211. data/lib/datadog/profiling/collectors/cpu_and_wall_time.rb +27 -0
  212. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +74 -0
  213. data/lib/datadog/profiling/collectors/old_stack.rb +298 -0
  214. data/lib/datadog/profiling/collectors/stack.rb +13 -0
  215. data/lib/datadog/profiling/encoding/profile.rb +43 -0
  216. data/lib/datadog/profiling/event.rb +15 -0
  217. data/lib/datadog/profiling/events/stack.rb +82 -0
  218. data/lib/datadog/profiling/exporter.rb +82 -0
  219. data/lib/datadog/profiling/ext/forking.rb +98 -0
  220. data/lib/datadog/profiling/ext.rb +45 -0
  221. data/lib/datadog/profiling/flush.rb +38 -0
  222. data/lib/datadog/profiling/http_transport.rb +132 -0
  223. data/lib/datadog/profiling/load_native_extension.rb +22 -0
  224. data/lib/datadog/profiling/native_extension.rb +41 -0
  225. data/lib/datadog/profiling/old_ext.rb +42 -0
  226. data/lib/datadog/profiling/old_recorder.rb +101 -0
  227. data/lib/datadog/profiling/pprof/builder.rb +127 -0
  228. data/lib/datadog/profiling/pprof/converter.rb +104 -0
  229. data/lib/datadog/profiling/pprof/message_set.rb +16 -0
  230. data/lib/datadog/profiling/pprof/payload.rb +20 -0
  231. data/lib/{ddtrace → datadog}/profiling/pprof/pprof.proto +0 -0
  232. data/lib/datadog/profiling/pprof/pprof_pb.rb +83 -0
  233. data/lib/datadog/profiling/pprof/stack_sample.rb +141 -0
  234. data/lib/datadog/profiling/pprof/string_table.rb +12 -0
  235. data/lib/datadog/profiling/pprof/template.rb +120 -0
  236. data/lib/datadog/profiling/preload.rb +5 -0
  237. data/lib/datadog/profiling/profiler.rb +34 -0
  238. data/lib/datadog/profiling/scheduler.rb +133 -0
  239. data/lib/datadog/profiling/stack_recorder.rb +43 -0
  240. data/lib/datadog/profiling/tag_builder.rb +53 -0
  241. data/lib/datadog/profiling/tasks/exec.rb +50 -0
  242. data/lib/datadog/profiling/tasks/help.rb +18 -0
  243. data/lib/datadog/profiling/tasks/setup.rb +93 -0
  244. data/lib/datadog/profiling/trace_identifiers/ddtrace.rb +45 -0
  245. data/lib/datadog/profiling/trace_identifiers/helper.rb +47 -0
  246. data/lib/datadog/profiling/transport/http/api/endpoint.rb +85 -0
  247. data/lib/datadog/profiling/transport/http/api/instance.rb +38 -0
  248. data/lib/datadog/profiling/transport/http/api/spec.rb +42 -0
  249. data/lib/datadog/profiling/transport/http/api.rb +45 -0
  250. data/lib/datadog/profiling/transport/http/builder.rb +30 -0
  251. data/lib/datadog/profiling/transport/http/client.rb +37 -0
  252. data/lib/datadog/profiling/transport/http/response.rb +21 -0
  253. data/lib/datadog/profiling/transport/http.rb +118 -0
  254. data/lib/datadog/profiling.rb +171 -0
  255. data/lib/datadog/tracing/analytics.rb +25 -0
  256. data/lib/datadog/tracing/buffer.rb +132 -0
  257. data/lib/datadog/tracing/configuration/ext.rb +51 -0
  258. data/lib/datadog/tracing/context.rb +68 -0
  259. data/lib/datadog/tracing/context_provider.rb +82 -0
  260. data/lib/datadog/tracing/contrib/action_cable/configuration/settings.rb +35 -0
  261. data/lib/datadog/tracing/contrib/action_cable/event.rb +71 -0
  262. data/lib/datadog/tracing/contrib/action_cable/events/broadcast.rb +58 -0
  263. data/lib/datadog/tracing/contrib/action_cable/events/perform_action.rb +63 -0
  264. data/lib/datadog/tracing/contrib/action_cable/events/transmit.rb +59 -0
  265. data/lib/datadog/tracing/contrib/action_cable/events.rb +37 -0
  266. data/lib/datadog/tracing/contrib/action_cable/ext.rb +32 -0
  267. data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +90 -0
  268. data/lib/datadog/tracing/contrib/action_cable/integration.rb +50 -0
  269. data/lib/datadog/tracing/contrib/action_cable/patcher.rb +31 -0
  270. data/lib/datadog/tracing/contrib/action_mailer/configuration/settings.rb +36 -0
  271. data/lib/datadog/tracing/contrib/action_mailer/event.rb +52 -0
  272. data/lib/datadog/tracing/contrib/action_mailer/events/deliver.rb +60 -0
  273. data/lib/datadog/tracing/contrib/action_mailer/events/process.rb +47 -0
  274. data/lib/datadog/tracing/contrib/action_mailer/events.rb +34 -0
  275. data/lib/datadog/tracing/contrib/action_mailer/ext.rb +33 -0
  276. data/lib/datadog/tracing/contrib/action_mailer/integration.rb +50 -0
  277. data/lib/datadog/tracing/contrib/action_mailer/patcher.rb +29 -0
  278. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +160 -0
  279. data/lib/datadog/tracing/contrib/action_pack/action_controller/patcher.rb +29 -0
  280. data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +36 -0
  281. data/lib/datadog/tracing/contrib/action_pack/ext.rb +22 -0
  282. data/lib/datadog/tracing/contrib/action_pack/integration.rb +50 -0
  283. data/lib/datadog/tracing/contrib/action_pack/patcher.rb +27 -0
  284. data/lib/datadog/tracing/contrib/action_pack/utils.rb +40 -0
  285. data/lib/datadog/tracing/contrib/action_view/configuration/settings.rb +36 -0
  286. data/lib/datadog/tracing/contrib/action_view/event.rb +35 -0
  287. data/lib/datadog/tracing/contrib/action_view/events/render_partial.rb +54 -0
  288. data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +57 -0
  289. data/lib/datadog/tracing/contrib/action_view/events.rb +34 -0
  290. data/lib/datadog/tracing/contrib/action_view/ext.rb +24 -0
  291. data/lib/datadog/tracing/contrib/action_view/instrumentation/partial_renderer.rb +78 -0
  292. data/lib/datadog/tracing/contrib/action_view/instrumentation/template_renderer.rb +91 -0
  293. data/lib/datadog/tracing/contrib/action_view/integration.rb +57 -0
  294. data/lib/datadog/tracing/contrib/action_view/patcher.rb +47 -0
  295. data/lib/datadog/tracing/contrib/action_view/utils.rb +36 -0
  296. data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +37 -0
  297. data/lib/datadog/tracing/contrib/active_job/event.rb +58 -0
  298. data/lib/datadog/tracing/contrib/active_job/events/discard.rb +50 -0
  299. data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +49 -0
  300. data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +49 -0
  301. data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +51 -0
  302. data/lib/datadog/tracing/contrib/active_job/events/perform.rb +49 -0
  303. data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +50 -0
  304. data/lib/datadog/tracing/contrib/active_job/events.rb +42 -0
  305. data/lib/datadog/tracing/contrib/active_job/ext.rb +39 -0
  306. data/lib/datadog/tracing/contrib/active_job/integration.rb +50 -0
  307. data/lib/datadog/tracing/contrib/active_job/log_injection.rb +24 -0
  308. data/lib/datadog/tracing/contrib/active_job/patcher.rb +36 -0
  309. data/lib/datadog/tracing/contrib/active_model_serializers/configuration/settings.rb +33 -0
  310. data/lib/datadog/tracing/contrib/active_model_serializers/event.rb +68 -0
  311. data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +45 -0
  312. data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +47 -0
  313. data/lib/datadog/tracing/contrib/active_model_serializers/events.rb +34 -0
  314. data/lib/datadog/tracing/contrib/active_model_serializers/ext.rb +24 -0
  315. data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +45 -0
  316. data/lib/datadog/tracing/contrib/active_model_serializers/patcher.rb +32 -0
  317. data/lib/datadog/tracing/contrib/active_record/configuration/makara_resolver.rb +36 -0
  318. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +138 -0
  319. data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +39 -0
  320. data/lib/datadog/tracing/contrib/active_record/event.rb +30 -0
  321. data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +58 -0
  322. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +78 -0
  323. data/lib/datadog/tracing/contrib/active_record/events.rb +34 -0
  324. data/lib/datadog/tracing/contrib/active_record/ext.rb +29 -0
  325. data/lib/datadog/tracing/contrib/active_record/integration.rb +56 -0
  326. data/lib/datadog/tracing/contrib/active_record/patcher.rb +27 -0
  327. data/lib/datadog/tracing/contrib/active_record/utils.rb +128 -0
  328. data/lib/{ddtrace/vendor/active_record → datadog/tracing/contrib/active_record/vendor}/MIT-LICENSE +0 -0
  329. data/lib/datadog/tracing/contrib/active_record/vendor/connection_specification.rb +307 -0
  330. data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +280 -0
  331. data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +73 -0
  332. data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +47 -0
  333. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +35 -0
  334. data/lib/datadog/tracing/contrib/active_support/ext.rb +31 -0
  335. data/lib/datadog/tracing/contrib/active_support/integration.rb +51 -0
  336. data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +71 -0
  337. data/lib/datadog/tracing/contrib/active_support/notifications/subscriber.rb +71 -0
  338. data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +164 -0
  339. data/lib/datadog/tracing/contrib/active_support/patcher.rb +27 -0
  340. data/lib/datadog/tracing/contrib/analytics.rb +29 -0
  341. data/lib/datadog/tracing/contrib/auto_instrument.rb +53 -0
  342. data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +35 -0
  343. data/lib/datadog/tracing/contrib/aws/ext.rb +27 -0
  344. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +94 -0
  345. data/lib/datadog/tracing/contrib/aws/integration.rb +47 -0
  346. data/lib/datadog/tracing/contrib/aws/parsed_context.rb +60 -0
  347. data/lib/datadog/tracing/contrib/aws/patcher.rb +57 -0
  348. data/lib/datadog/tracing/contrib/aws/services.rb +123 -0
  349. data/lib/datadog/tracing/contrib/concurrent_ruby/configuration/settings.rb +23 -0
  350. data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +53 -0
  351. data/lib/datadog/tracing/contrib/concurrent_ruby/ext.rb +16 -0
  352. data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +27 -0
  353. data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +43 -0
  354. data/lib/datadog/tracing/contrib/concurrent_ruby/patcher.rb +33 -0
  355. data/lib/datadog/tracing/contrib/configurable.rb +102 -0
  356. data/lib/datadog/tracing/contrib/configuration/resolver.rb +85 -0
  357. data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +43 -0
  358. data/lib/datadog/tracing/contrib/configuration/settings.rb +43 -0
  359. data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +35 -0
  360. data/lib/datadog/tracing/contrib/dalli/ext.rb +24 -0
  361. data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +57 -0
  362. data/lib/datadog/tracing/contrib/dalli/integration.rb +52 -0
  363. data/lib/datadog/tracing/contrib/dalli/patcher.rb +28 -0
  364. data/lib/datadog/tracing/contrib/dalli/quantize.rb +26 -0
  365. data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +38 -0
  366. data/lib/datadog/tracing/contrib/delayed_job/ext.rb +28 -0
  367. data/lib/datadog/tracing/contrib/delayed_job/integration.rb +43 -0
  368. data/lib/datadog/tracing/contrib/delayed_job/patcher.rb +37 -0
  369. data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +100 -0
  370. data/lib/datadog/tracing/contrib/delayed_job/server_internal_tracer/worker.rb +32 -0
  371. data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +36 -0
  372. data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +26 -0
  373. data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +50 -0
  374. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +150 -0
  375. data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +89 -0
  376. data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +37 -0
  377. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +176 -0
  378. data/lib/datadog/tracing/contrib/ethon/ext.rb +24 -0
  379. data/lib/datadog/tracing/contrib/ethon/integration.rb +48 -0
  380. data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +95 -0
  381. data/lib/datadog/tracing/contrib/ethon/patcher.rb +31 -0
  382. data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +38 -0
  383. data/lib/datadog/tracing/contrib/excon/ext.rb +21 -0
  384. data/lib/datadog/tracing/contrib/excon/integration.rb +48 -0
  385. data/lib/datadog/tracing/contrib/excon/middleware.rb +169 -0
  386. data/lib/datadog/tracing/contrib/excon/patcher.rb +31 -0
  387. data/lib/datadog/tracing/contrib/extensions.rb +199 -0
  388. data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +42 -0
  389. data/lib/datadog/tracing/contrib/faraday/connection.rb +22 -0
  390. data/lib/datadog/tracing/contrib/faraday/ext.rb +21 -0
  391. data/lib/datadog/tracing/contrib/faraday/integration.rb +48 -0
  392. data/lib/datadog/tracing/contrib/faraday/middleware.rb +92 -0
  393. data/lib/datadog/tracing/contrib/faraday/patcher.rb +56 -0
  394. data/lib/datadog/tracing/contrib/faraday/rack_builder.rb +22 -0
  395. data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +42 -0
  396. data/lib/datadog/tracing/contrib/grape/endpoint.rb +252 -0
  397. data/lib/datadog/tracing/contrib/grape/ext.rb +28 -0
  398. data/lib/datadog/tracing/contrib/grape/instrumentation.rb +37 -0
  399. data/lib/datadog/tracing/contrib/grape/integration.rb +44 -0
  400. data/lib/datadog/tracing/contrib/grape/patcher.rb +33 -0
  401. data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +36 -0
  402. data/lib/datadog/tracing/contrib/graphql/ext.rb +19 -0
  403. data/lib/datadog/tracing/contrib/graphql/integration.rb +44 -0
  404. data/lib/datadog/tracing/contrib/graphql/patcher.rb +90 -0
  405. data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +38 -0
  406. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +93 -0
  407. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +90 -0
  408. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb +107 -0
  409. data/lib/datadog/tracing/contrib/grpc/ext.rb +24 -0
  410. data/lib/datadog/tracing/contrib/grpc/integration.rb +43 -0
  411. data/lib/datadog/tracing/contrib/grpc/intercept_with_datadog.rb +53 -0
  412. data/lib/datadog/tracing/contrib/grpc/patcher.rb +37 -0
  413. data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +43 -0
  414. data/lib/datadog/tracing/contrib/http/configuration/settings.rb +37 -0
  415. data/lib/datadog/tracing/contrib/http/ext.rb +21 -0
  416. data/lib/datadog/tracing/contrib/http/instrumentation.rb +138 -0
  417. data/lib/datadog/tracing/contrib/http/integration.rb +49 -0
  418. data/lib/datadog/tracing/contrib/http/patcher.rb +30 -0
  419. data/lib/datadog/tracing/contrib/http_annotation_helper.rb +17 -0
  420. data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +37 -0
  421. data/lib/datadog/tracing/contrib/httpclient/ext.rb +21 -0
  422. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +116 -0
  423. data/lib/datadog/tracing/contrib/httpclient/integration.rb +48 -0
  424. data/lib/datadog/tracing/contrib/httpclient/patcher.rb +42 -0
  425. data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +37 -0
  426. data/lib/datadog/tracing/contrib/httprb/ext.rb +21 -0
  427. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +127 -0
  428. data/lib/datadog/tracing/contrib/httprb/integration.rb +48 -0
  429. data/lib/datadog/tracing/contrib/httprb/patcher.rb +42 -0
  430. data/lib/datadog/tracing/contrib/integration.rb +78 -0
  431. data/lib/datadog/tracing/contrib/kafka/configuration/settings.rb +35 -0
  432. data/lib/datadog/tracing/contrib/kafka/consumer_event.rb +18 -0
  433. data/lib/datadog/tracing/contrib/kafka/consumer_group_event.rb +18 -0
  434. data/lib/datadog/tracing/contrib/kafka/event.rb +52 -0
  435. data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +42 -0
  436. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +49 -0
  437. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +47 -0
  438. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +47 -0
  439. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +37 -0
  440. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +37 -0
  441. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +37 -0
  442. data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +40 -0
  443. data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +43 -0
  444. data/lib/datadog/tracing/contrib/kafka/events.rb +48 -0
  445. data/lib/datadog/tracing/contrib/kafka/ext.rb +52 -0
  446. data/lib/datadog/tracing/contrib/kafka/integration.rb +44 -0
  447. data/lib/datadog/tracing/contrib/kafka/patcher.rb +29 -0
  448. data/lib/datadog/tracing/contrib/lograge/configuration/settings.rb +23 -0
  449. data/lib/datadog/tracing/contrib/lograge/ext.rb +15 -0
  450. data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +46 -0
  451. data/lib/datadog/tracing/contrib/lograge/integration.rb +50 -0
  452. data/lib/datadog/tracing/contrib/lograge/patcher.rb +29 -0
  453. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +38 -0
  454. data/lib/datadog/tracing/contrib/mongodb/ext.rb +27 -0
  455. data/lib/datadog/tracing/contrib/mongodb/instrumentation.rb +47 -0
  456. data/lib/datadog/tracing/contrib/mongodb/integration.rb +48 -0
  457. data/lib/datadog/tracing/contrib/mongodb/parsers.rb +49 -0
  458. data/lib/datadog/tracing/contrib/mongodb/patcher.rb +34 -0
  459. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +121 -0
  460. data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +35 -0
  461. data/lib/datadog/tracing/contrib/mysql2/ext.rb +22 -0
  462. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +61 -0
  463. data/lib/datadog/tracing/contrib/mysql2/integration.rb +43 -0
  464. data/lib/datadog/tracing/contrib/mysql2/patcher.rb +31 -0
  465. data/lib/datadog/tracing/contrib/patchable.rb +109 -0
  466. data/lib/datadog/tracing/contrib/patcher.rb +85 -0
  467. data/lib/datadog/tracing/contrib/pg/configuration/settings.rb +35 -0
  468. data/lib/datadog/tracing/contrib/pg/ext.rb +31 -0
  469. data/lib/datadog/tracing/contrib/pg/instrumentation.rb +128 -0
  470. data/lib/datadog/tracing/contrib/pg/integration.rb +43 -0
  471. data/lib/datadog/tracing/contrib/pg/patcher.rb +31 -0
  472. data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +35 -0
  473. data/lib/datadog/tracing/contrib/presto/ext.rb +32 -0
  474. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +124 -0
  475. data/lib/datadog/tracing/contrib/presto/integration.rb +43 -0
  476. data/lib/datadog/tracing/contrib/presto/patcher.rb +37 -0
  477. data/lib/datadog/tracing/contrib/qless/configuration/settings.rb +40 -0
  478. data/lib/datadog/tracing/contrib/qless/ext.rb +26 -0
  479. data/lib/datadog/tracing/contrib/qless/integration.rb +43 -0
  480. data/lib/datadog/tracing/contrib/qless/patcher.rb +37 -0
  481. data/lib/datadog/tracing/contrib/qless/qless_job.rb +74 -0
  482. data/lib/datadog/tracing/contrib/qless/tracer_cleaner.rb +30 -0
  483. data/lib/datadog/tracing/contrib/que/configuration/settings.rb +49 -0
  484. data/lib/datadog/tracing/contrib/que/ext.rb +34 -0
  485. data/lib/datadog/tracing/contrib/que/integration.rb +46 -0
  486. data/lib/datadog/tracing/contrib/que/patcher.rb +28 -0
  487. data/lib/datadog/tracing/contrib/que/tracer.rb +61 -0
  488. data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +35 -0
  489. data/lib/datadog/tracing/contrib/racecar/event.rb +78 -0
  490. data/lib/datadog/tracing/contrib/racecar/events/batch.rb +35 -0
  491. data/lib/datadog/tracing/contrib/racecar/events/consume.rb +35 -0
  492. data/lib/datadog/tracing/contrib/racecar/events/message.rb +35 -0
  493. data/lib/datadog/tracing/contrib/racecar/events.rb +36 -0
  494. data/lib/datadog/tracing/contrib/racecar/ext.rb +31 -0
  495. data/lib/datadog/tracing/contrib/racecar/integration.rb +44 -0
  496. data/lib/datadog/tracing/contrib/racecar/patcher.rb +29 -0
  497. data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +51 -0
  498. data/lib/datadog/tracing/contrib/rack/ext.rb +25 -0
  499. data/lib/datadog/tracing/contrib/rack/integration.rb +50 -0
  500. data/lib/datadog/tracing/contrib/rack/middlewares.rb +259 -0
  501. data/lib/datadog/tracing/contrib/rack/patcher.rb +119 -0
  502. data/lib/datadog/tracing/contrib/rack/request_queue.rb +48 -0
  503. data/lib/datadog/tracing/contrib/rails/auto_instrument_railtie.rb +12 -0
  504. data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +74 -0
  505. data/lib/datadog/tracing/contrib/rails/ext.rb +19 -0
  506. data/lib/datadog/tracing/contrib/rails/framework.rb +148 -0
  507. data/lib/datadog/tracing/contrib/rails/integration.rb +49 -0
  508. data/lib/datadog/tracing/contrib/rails/log_injection.rb +32 -0
  509. data/lib/datadog/tracing/contrib/rails/middlewares.rb +46 -0
  510. data/lib/datadog/tracing/contrib/rails/patcher.rb +120 -0
  511. data/lib/datadog/tracing/contrib/rails/railtie.rb +19 -0
  512. data/lib/datadog/tracing/contrib/rails/utils.rb +28 -0
  513. data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +51 -0
  514. data/lib/datadog/tracing/contrib/rake/ext.rb +26 -0
  515. data/lib/datadog/tracing/contrib/rake/instrumentation.rb +103 -0
  516. data/lib/datadog/tracing/contrib/rake/integration.rb +43 -0
  517. data/lib/datadog/tracing/contrib/rake/patcher.rb +33 -0
  518. data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +49 -0
  519. data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +40 -0
  520. data/lib/datadog/tracing/contrib/redis/ext.rb +26 -0
  521. data/lib/datadog/tracing/contrib/redis/instrumentation.rb +77 -0
  522. data/lib/datadog/tracing/contrib/redis/integration.rb +47 -0
  523. data/lib/datadog/tracing/contrib/redis/patcher.rb +35 -0
  524. data/lib/datadog/tracing/contrib/redis/quantize.rb +79 -0
  525. data/lib/datadog/tracing/contrib/redis/tags.rb +53 -0
  526. data/lib/{ddtrace → datadog/tracing}/contrib/redis/vendor/LICENSE +0 -0
  527. data/lib/datadog/tracing/contrib/redis/vendor/resolver.rb +162 -0
  528. data/lib/datadog/tracing/contrib/registerable.rb +50 -0
  529. data/lib/datadog/tracing/contrib/registry.rb +52 -0
  530. data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +37 -0
  531. data/lib/datadog/tracing/contrib/resque/ext.rb +21 -0
  532. data/lib/datadog/tracing/contrib/resque/integration.rb +48 -0
  533. data/lib/datadog/tracing/contrib/resque/patcher.rb +29 -0
  534. data/lib/datadog/tracing/contrib/resque/resque_job.rb +102 -0
  535. data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +37 -0
  536. data/lib/datadog/tracing/contrib/rest_client/ext.rb +21 -0
  537. data/lib/datadog/tracing/contrib/rest_client/integration.rb +43 -0
  538. data/lib/datadog/tracing/contrib/rest_client/patcher.rb +29 -0
  539. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +104 -0
  540. data/lib/datadog/tracing/contrib/semantic_logger/configuration/settings.rb +23 -0
  541. data/lib/datadog/tracing/contrib/semantic_logger/ext.rb +15 -0
  542. data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +50 -0
  543. data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +52 -0
  544. data/lib/datadog/tracing/contrib/semantic_logger/patcher.rb +29 -0
  545. data/lib/datadog/tracing/contrib/sequel/configuration/settings.rb +33 -0
  546. data/lib/datadog/tracing/contrib/sequel/database.rb +59 -0
  547. data/lib/datadog/tracing/contrib/sequel/dataset.rb +64 -0
  548. data/lib/datadog/tracing/contrib/sequel/ext.rb +22 -0
  549. data/lib/datadog/tracing/contrib/sequel/integration.rb +43 -0
  550. data/lib/datadog/tracing/contrib/sequel/patcher.rb +37 -0
  551. data/lib/datadog/tracing/contrib/sequel/utils.rb +87 -0
  552. data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +38 -0
  553. data/lib/datadog/tracing/contrib/shoryuken/ext.rb +25 -0
  554. data/lib/datadog/tracing/contrib/shoryuken/integration.rb +44 -0
  555. data/lib/datadog/tracing/contrib/shoryuken/patcher.rb +28 -0
  556. data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +61 -0
  557. data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +52 -0
  558. data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +44 -0
  559. data/lib/datadog/tracing/contrib/sidekiq/ext.rb +44 -0
  560. data/lib/datadog/tracing/contrib/sidekiq/integration.rb +53 -0
  561. data/lib/datadog/tracing/contrib/sidekiq/patcher.rb +78 -0
  562. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/heartbeat.rb +52 -0
  563. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/job_fetch.rb +34 -0
  564. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/redis_info.rb +32 -0
  565. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/scheduled_poller.rb +53 -0
  566. data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +97 -0
  567. data/lib/datadog/tracing/contrib/sidekiq/tracing.rb +44 -0
  568. data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +43 -0
  569. data/lib/datadog/tracing/contrib/sinatra/env.rb +66 -0
  570. data/lib/datadog/tracing/contrib/sinatra/ext.rb +32 -0
  571. data/lib/datadog/tracing/contrib/sinatra/framework.rb +116 -0
  572. data/lib/datadog/tracing/contrib/sinatra/headers.rb +35 -0
  573. data/lib/datadog/tracing/contrib/sinatra/integration.rb +43 -0
  574. data/lib/datadog/tracing/contrib/sinatra/patcher.rb +76 -0
  575. data/lib/datadog/tracing/contrib/sinatra/tracer.rb +158 -0
  576. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +122 -0
  577. data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +38 -0
  578. data/lib/datadog/tracing/contrib/sneakers/ext.rb +26 -0
  579. data/lib/datadog/tracing/contrib/sneakers/integration.rb +46 -0
  580. data/lib/datadog/tracing/contrib/sneakers/patcher.rb +29 -0
  581. data/lib/datadog/tracing/contrib/sneakers/tracer.rb +57 -0
  582. data/lib/datadog/tracing/contrib/status_code_matcher.rb +75 -0
  583. data/lib/datadog/tracing/contrib/sucker_punch/configuration/settings.rb +35 -0
  584. data/lib/datadog/tracing/contrib/sucker_punch/exception_handler.rb +28 -0
  585. data/lib/datadog/tracing/contrib/sucker_punch/ext.rb +27 -0
  586. data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +104 -0
  587. data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +43 -0
  588. data/lib/datadog/tracing/contrib/sucker_punch/patcher.rb +36 -0
  589. data/lib/datadog/tracing/contrib/utils/database.rb +31 -0
  590. data/lib/datadog/tracing/contrib/utils/quantization/hash.rb +111 -0
  591. data/lib/datadog/tracing/contrib/utils/quantization/http.rb +99 -0
  592. data/lib/datadog/tracing/contrib.rb +77 -0
  593. data/lib/datadog/tracing/correlation.rb +100 -0
  594. data/lib/datadog/tracing/distributed/headers/b3.rb +55 -0
  595. data/lib/datadog/tracing/distributed/headers/b3_single.rb +67 -0
  596. data/lib/datadog/tracing/distributed/headers/datadog.rb +52 -0
  597. data/lib/datadog/tracing/distributed/headers/ext.rb +31 -0
  598. data/lib/datadog/tracing/distributed/headers/parser.rb +37 -0
  599. data/lib/datadog/tracing/distributed/helpers.rb +78 -0
  600. data/lib/datadog/tracing/distributed/metadata/b3.rb +55 -0
  601. data/lib/datadog/tracing/distributed/metadata/b3_single.rb +66 -0
  602. data/lib/datadog/tracing/distributed/metadata/datadog.rb +73 -0
  603. data/lib/datadog/tracing/distributed/metadata/parser.rb +34 -0
  604. data/lib/datadog/tracing/event.rb +78 -0
  605. data/lib/datadog/tracing/flush.rb +74 -0
  606. data/lib/datadog/tracing/metadata/analytics.rb +26 -0
  607. data/lib/datadog/tracing/metadata/errors.rb +24 -0
  608. data/lib/datadog/tracing/metadata/ext.rb +176 -0
  609. data/lib/datadog/tracing/metadata/tagging.rb +116 -0
  610. data/lib/datadog/tracing/metadata.rb +20 -0
  611. data/lib/datadog/tracing/pipeline/span_filter.rb +46 -0
  612. data/lib/datadog/tracing/pipeline/span_processor.rb +39 -0
  613. data/lib/datadog/tracing/pipeline.rb +65 -0
  614. data/lib/datadog/tracing/propagation/grpc.rb +98 -0
  615. data/lib/datadog/tracing/propagation/http.rb +109 -0
  616. data/lib/datadog/tracing/runtime/metrics.rb +19 -0
  617. data/lib/datadog/tracing/sampling/all_sampler.rb +25 -0
  618. data/lib/datadog/tracing/sampling/ext.rb +27 -0
  619. data/lib/datadog/tracing/sampling/matcher.rb +68 -0
  620. data/lib/datadog/tracing/sampling/priority_sampler.rb +112 -0
  621. data/lib/datadog/tracing/sampling/rate_by_key_sampler.rb +97 -0
  622. data/lib/datadog/tracing/sampling/rate_by_service_sampler.rb +41 -0
  623. data/lib/datadog/tracing/sampling/rate_limiter.rb +185 -0
  624. data/lib/datadog/tracing/sampling/rate_sampler.rb +55 -0
  625. data/lib/datadog/tracing/sampling/rule.rb +76 -0
  626. data/lib/datadog/tracing/sampling/rule_sampler.rb +131 -0
  627. data/lib/datadog/tracing/sampling/sampler.rb +44 -0
  628. data/lib/datadog/tracing/sampling/span/matcher.rb +80 -0
  629. data/lib/datadog/tracing/span.rb +232 -0
  630. data/lib/datadog/tracing/span_operation.rb +521 -0
  631. data/lib/datadog/tracing/sync_writer.rb +69 -0
  632. data/lib/datadog/tracing/trace_digest.rb +60 -0
  633. data/lib/datadog/tracing/trace_operation.rb +438 -0
  634. data/lib/datadog/tracing/trace_segment.rb +207 -0
  635. data/lib/datadog/tracing/tracer.rb +505 -0
  636. data/lib/datadog/tracing/workers/trace_writer.rb +195 -0
  637. data/lib/datadog/tracing/workers.rb +125 -0
  638. data/lib/datadog/tracing/writer.rb +180 -0
  639. data/lib/datadog/tracing.rb +142 -0
  640. data/lib/ddtrace/auto_instrument.rb +14 -3
  641. data/lib/ddtrace/auto_instrument_base.rb +1 -0
  642. data/lib/ddtrace/profiling/preload.rb +2 -2
  643. data/lib/ddtrace/transport/ext.rb +41 -0
  644. data/lib/ddtrace/transport/http/adapters/net.rb +5 -3
  645. data/lib/ddtrace/transport/http/adapters/registry.rb +1 -0
  646. data/lib/ddtrace/transport/http/adapters/test.rb +2 -1
  647. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +4 -3
  648. data/lib/ddtrace/transport/http/api/endpoint.rb +1 -0
  649. data/lib/ddtrace/transport/http/api/fallbacks.rb +1 -0
  650. data/lib/ddtrace/transport/http/api/instance.rb +1 -0
  651. data/lib/ddtrace/transport/http/api/map.rb +2 -1
  652. data/lib/ddtrace/transport/http/api/spec.rb +1 -0
  653. data/lib/ddtrace/transport/http/api.rb +8 -14
  654. data/lib/ddtrace/transport/http/builder.rb +7 -6
  655. data/lib/ddtrace/transport/http/client.rb +5 -3
  656. data/lib/ddtrace/transport/http/env.rb +1 -0
  657. data/lib/ddtrace/transport/http/response.rb +36 -5
  658. data/lib/ddtrace/transport/http/statistics.rb +2 -1
  659. data/lib/ddtrace/transport/http/traces.rb +6 -3
  660. data/lib/ddtrace/transport/http.rb +39 -31
  661. data/lib/ddtrace/transport/io/client.rb +6 -3
  662. data/lib/ddtrace/transport/io/response.rb +2 -1
  663. data/lib/ddtrace/transport/io/traces.rb +5 -4
  664. data/lib/ddtrace/transport/io.rb +5 -4
  665. data/lib/ddtrace/transport/parcel.rb +2 -0
  666. data/lib/ddtrace/transport/request.rb +1 -0
  667. data/lib/ddtrace/transport/response.rb +1 -0
  668. data/lib/ddtrace/transport/serializable_trace.rb +118 -0
  669. data/lib/ddtrace/transport/statistics.rb +6 -4
  670. data/lib/ddtrace/transport/trace_formatter.rb +187 -0
  671. data/lib/ddtrace/transport/traces.rb +17 -7
  672. data/lib/ddtrace/version.rb +15 -13
  673. data/lib/ddtrace.rb +9 -48
  674. metadata +637 -499
  675. data/.editorconfig +0 -22
  676. data/.gitignore +0 -67
  677. data/.yardopts +0 -5
  678. data/CONTRIBUTING.md +0 -81
  679. data/ddtrace.gemspec +0 -56
  680. data/docs/DevelopmentGuide.md +0 -259
  681. data/docs/GettingStarted.md +0 -2626
  682. data/docs/ProfilingDevelopment.md +0 -107
  683. data/lib/datadog/ci/context_flush.rb +0 -29
  684. data/lib/datadog/contrib.rb +0 -71
  685. data/lib/ddtrace/analytics.rb +0 -39
  686. data/lib/ddtrace/buffer.rb +0 -340
  687. data/lib/ddtrace/chunker.rb +0 -35
  688. data/lib/ddtrace/configuration/agent_settings_resolver.rb +0 -309
  689. data/lib/ddtrace/configuration/base.rb +0 -82
  690. data/lib/ddtrace/configuration/components.rb +0 -292
  691. data/lib/ddtrace/configuration/dependency_resolver.rb +0 -25
  692. data/lib/ddtrace/configuration/option.rb +0 -65
  693. data/lib/ddtrace/configuration/option_definition.rb +0 -122
  694. data/lib/ddtrace/configuration/option_definition_set.rb +0 -19
  695. data/lib/ddtrace/configuration/option_set.rb +0 -7
  696. data/lib/ddtrace/configuration/options.rb +0 -112
  697. data/lib/ddtrace/configuration/pin_setup.rb +0 -32
  698. data/lib/ddtrace/configuration/settings.rb +0 -413
  699. data/lib/ddtrace/configuration.rb +0 -195
  700. data/lib/ddtrace/context.rb +0 -334
  701. data/lib/ddtrace/context_flush.rb +0 -82
  702. data/lib/ddtrace/context_provider.rb +0 -62
  703. data/lib/ddtrace/contrib/action_cable/configuration/settings.rb +0 -31
  704. data/lib/ddtrace/contrib/action_cable/event.rb +0 -67
  705. data/lib/ddtrace/contrib/action_cable/events/broadcast.rb +0 -50
  706. data/lib/ddtrace/contrib/action_cable/events/perform_action.rb +0 -56
  707. data/lib/ddtrace/contrib/action_cable/events/transmit.rb +0 -51
  708. data/lib/ddtrace/contrib/action_cable/events.rb +0 -34
  709. data/lib/ddtrace/contrib/action_cable/ext.rb +0 -27
  710. data/lib/ddtrace/contrib/action_cable/instrumentation.rb +0 -78
  711. data/lib/ddtrace/contrib/action_cable/integration.rb +0 -46
  712. data/lib/ddtrace/contrib/action_cable/patcher.rb +0 -29
  713. data/lib/ddtrace/contrib/action_mailer/configuration/settings.rb +0 -32
  714. data/lib/ddtrace/contrib/action_mailer/event.rb +0 -50
  715. data/lib/ddtrace/contrib/action_mailer/events/deliver.rb +0 -54
  716. data/lib/ddtrace/contrib/action_mailer/events/process.rb +0 -41
  717. data/lib/ddtrace/contrib/action_mailer/events.rb +0 -31
  718. data/lib/ddtrace/contrib/action_mailer/ext.rb +0 -32
  719. data/lib/ddtrace/contrib/action_mailer/integration.rb +0 -45
  720. data/lib/ddtrace/contrib/action_mailer/patcher.rb +0 -27
  721. data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +0 -157
  722. data/lib/ddtrace/contrib/action_pack/action_controller/patcher.rb +0 -26
  723. data/lib/ddtrace/contrib/action_pack/configuration/settings.rb +0 -33
  724. data/lib/ddtrace/contrib/action_pack/ext.rb +0 -20
  725. data/lib/ddtrace/contrib/action_pack/integration.rb +0 -46
  726. data/lib/ddtrace/contrib/action_pack/patcher.rb +0 -24
  727. data/lib/ddtrace/contrib/action_pack/utils.rb +0 -37
  728. data/lib/ddtrace/contrib/action_view/configuration/settings.rb +0 -32
  729. data/lib/ddtrace/contrib/action_view/event.rb +0 -36
  730. data/lib/ddtrace/contrib/action_view/events/render_partial.rb +0 -47
  731. data/lib/ddtrace/contrib/action_view/events/render_template.rb +0 -50
  732. data/lib/ddtrace/contrib/action_view/events.rb +0 -31
  733. data/lib/ddtrace/contrib/action_view/ext.rb +0 -21
  734. data/lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb +0 -75
  735. data/lib/ddtrace/contrib/action_view/instrumentation/template_renderer.rb +0 -168
  736. data/lib/ddtrace/contrib/action_view/integration.rb +0 -53
  737. data/lib/ddtrace/contrib/action_view/patcher.rb +0 -48
  738. data/lib/ddtrace/contrib/action_view/utils.rb +0 -33
  739. data/lib/ddtrace/contrib/active_job/configuration/settings.rb +0 -33
  740. data/lib/ddtrace/contrib/active_job/event.rb +0 -54
  741. data/lib/ddtrace/contrib/active_job/events/discard.rb +0 -46
  742. data/lib/ddtrace/contrib/active_job/events/enqueue.rb +0 -45
  743. data/lib/ddtrace/contrib/active_job/events/enqueue_at.rb +0 -45
  744. data/lib/ddtrace/contrib/active_job/events/enqueue_retry.rb +0 -47
  745. data/lib/ddtrace/contrib/active_job/events/perform.rb +0 -45
  746. data/lib/ddtrace/contrib/active_job/events/retry_stopped.rb +0 -46
  747. data/lib/ddtrace/contrib/active_job/events.rb +0 -39
  748. data/lib/ddtrace/contrib/active_job/ext.rb +0 -32
  749. data/lib/ddtrace/contrib/active_job/integration.rb +0 -46
  750. data/lib/ddtrace/contrib/active_job/log_injection.rb +0 -21
  751. data/lib/ddtrace/contrib/active_job/patcher.rb +0 -33
  752. data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +0 -31
  753. data/lib/ddtrace/contrib/active_model_serializers/event.rb +0 -69
  754. data/lib/ddtrace/contrib/active_model_serializers/events/render.rb +0 -33
  755. data/lib/ddtrace/contrib/active_model_serializers/events/serialize.rb +0 -36
  756. data/lib/ddtrace/contrib/active_model_serializers/events.rb +0 -31
  757. data/lib/ddtrace/contrib/active_model_serializers/ext.rb +0 -21
  758. data/lib/ddtrace/contrib/active_model_serializers/integration.rb +0 -41
  759. data/lib/ddtrace/contrib/active_model_serializers/patcher.rb +0 -30
  760. data/lib/ddtrace/contrib/active_record/configuration/makara_resolver.rb +0 -31
  761. data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +0 -135
  762. data/lib/ddtrace/contrib/active_record/configuration/settings.rb +0 -36
  763. data/lib/ddtrace/contrib/active_record/event.rb +0 -31
  764. data/lib/ddtrace/contrib/active_record/events/instantiation.rb +0 -61
  765. data/lib/ddtrace/contrib/active_record/events/sql.rb +0 -69
  766. data/lib/ddtrace/contrib/active_record/events.rb +0 -31
  767. data/lib/ddtrace/contrib/active_record/ext.rb +0 -25
  768. data/lib/ddtrace/contrib/active_record/integration.rb +0 -54
  769. data/lib/ddtrace/contrib/active_record/patcher.rb +0 -24
  770. data/lib/ddtrace/contrib/active_record/utils.rb +0 -124
  771. data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +0 -259
  772. data/lib/ddtrace/contrib/active_support/cache/patcher.rb +0 -70
  773. data/lib/ddtrace/contrib/active_support/cache/redis.rb +0 -44
  774. data/lib/ddtrace/contrib/active_support/configuration/settings.rb +0 -31
  775. data/lib/ddtrace/contrib/active_support/ext.rb +0 -28
  776. data/lib/ddtrace/contrib/active_support/integration.rb +0 -47
  777. data/lib/ddtrace/contrib/active_support/notifications/event.rb +0 -76
  778. data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +0 -68
  779. data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +0 -164
  780. data/lib/ddtrace/contrib/active_support/patcher.rb +0 -24
  781. data/lib/ddtrace/contrib/analytics.rb +0 -25
  782. data/lib/ddtrace/contrib/auto_instrument.rb +0 -48
  783. data/lib/ddtrace/contrib/aws/configuration/settings.rb +0 -31
  784. data/lib/ddtrace/contrib/aws/ext.rb +0 -24
  785. data/lib/ddtrace/contrib/aws/instrumentation.rb +0 -91
  786. data/lib/ddtrace/contrib/aws/integration.rb +0 -43
  787. data/lib/ddtrace/contrib/aws/parsed_context.rb +0 -57
  788. data/lib/ddtrace/contrib/aws/patcher.rb +0 -54
  789. data/lib/ddtrace/contrib/aws/services.rb +0 -119
  790. data/lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb +0 -21
  791. data/lib/ddtrace/contrib/concurrent_ruby/context_composite_executor_service.rb +0 -42
  792. data/lib/ddtrace/contrib/concurrent_ruby/ext.rb +0 -13
  793. data/lib/ddtrace/contrib/concurrent_ruby/future_patch.rb +0 -24
  794. data/lib/ddtrace/contrib/concurrent_ruby/integration.rb +0 -39
  795. data/lib/ddtrace/contrib/concurrent_ruby/patcher.rb +0 -30
  796. data/lib/ddtrace/contrib/configurable.rb +0 -103
  797. data/lib/ddtrace/contrib/configuration/resolver.rb +0 -82
  798. data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +0 -40
  799. data/lib/ddtrace/contrib/configuration/settings.rb +0 -56
  800. data/lib/ddtrace/contrib/dalli/configuration/settings.rb +0 -31
  801. data/lib/ddtrace/contrib/dalli/ext.rb +0 -21
  802. data/lib/ddtrace/contrib/dalli/instrumentation.rb +0 -55
  803. data/lib/ddtrace/contrib/dalli/integration.rb +0 -39
  804. data/lib/ddtrace/contrib/dalli/patcher.rb +0 -26
  805. data/lib/ddtrace/contrib/dalli/quantize.rb +0 -23
  806. data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +0 -33
  807. data/lib/ddtrace/contrib/delayed_job/ext.rb +0 -24
  808. data/lib/ddtrace/contrib/delayed_job/integration.rb +0 -39
  809. data/lib/ddtrace/contrib/delayed_job/patcher.rb +0 -29
  810. data/lib/ddtrace/contrib/delayed_job/plugin.rb +0 -85
  811. data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +0 -32
  812. data/lib/ddtrace/contrib/elasticsearch/ext.rb +0 -23
  813. data/lib/ddtrace/contrib/elasticsearch/integration.rb +0 -40
  814. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +0 -123
  815. data/lib/ddtrace/contrib/elasticsearch/quantize.rb +0 -84
  816. data/lib/ddtrace/contrib/ethon/configuration/settings.rb +0 -33
  817. data/lib/ddtrace/contrib/ethon/easy_patch.rb +0 -152
  818. data/lib/ddtrace/contrib/ethon/ext.rb +0 -20
  819. data/lib/ddtrace/contrib/ethon/integration.rb +0 -44
  820. data/lib/ddtrace/contrib/ethon/multi_patch.rb +0 -85
  821. data/lib/ddtrace/contrib/ethon/patcher.rb +0 -27
  822. data/lib/ddtrace/contrib/excon/configuration/settings.rb +0 -34
  823. data/lib/ddtrace/contrib/excon/ext.rb +0 -18
  824. data/lib/ddtrace/contrib/excon/integration.rb +0 -44
  825. data/lib/ddtrace/contrib/excon/middleware.rb +0 -164
  826. data/lib/ddtrace/contrib/excon/patcher.rb +0 -28
  827. data/lib/ddtrace/contrib/extensions.rb +0 -169
  828. data/lib/ddtrace/contrib/faraday/configuration/settings.rb +0 -39
  829. data/lib/ddtrace/contrib/faraday/connection.rb +0 -19
  830. data/lib/ddtrace/contrib/faraday/ext.rb +0 -18
  831. data/lib/ddtrace/contrib/faraday/integration.rb +0 -44
  832. data/lib/ddtrace/contrib/faraday/middleware.rb +0 -86
  833. data/lib/ddtrace/contrib/faraday/patcher.rb +0 -54
  834. data/lib/ddtrace/contrib/faraday/rack_builder.rb +0 -19
  835. data/lib/ddtrace/contrib/grape/configuration/settings.rb +0 -39
  836. data/lib/ddtrace/contrib/grape/endpoint.rb +0 -246
  837. data/lib/ddtrace/contrib/grape/ext.rb +0 -24
  838. data/lib/ddtrace/contrib/grape/instrumentation.rb +0 -34
  839. data/lib/ddtrace/contrib/grape/integration.rb +0 -40
  840. data/lib/ddtrace/contrib/grape/patcher.rb +0 -32
  841. data/lib/ddtrace/contrib/graphql/configuration/settings.rb +0 -33
  842. data/lib/ddtrace/contrib/graphql/ext.rb +0 -17
  843. data/lib/ddtrace/contrib/graphql/integration.rb +0 -40
  844. data/lib/ddtrace/contrib/graphql/patcher.rb +0 -61
  845. data/lib/ddtrace/contrib/grpc/configuration/settings.rb +0 -32
  846. data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +0 -59
  847. data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +0 -80
  848. data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +0 -79
  849. data/lib/ddtrace/contrib/grpc/ext.rb +0 -19
  850. data/lib/ddtrace/contrib/grpc/integration.rb +0 -39
  851. data/lib/ddtrace/contrib/grpc/intercept_with_datadog.rb +0 -50
  852. data/lib/ddtrace/contrib/grpc/patcher.rb +0 -34
  853. data/lib/ddtrace/contrib/http/circuit_breaker.rb +0 -38
  854. data/lib/ddtrace/contrib/http/configuration/settings.rb +0 -33
  855. data/lib/ddtrace/contrib/http/ext.rb +0 -18
  856. data/lib/ddtrace/contrib/http/instrumentation.rb +0 -180
  857. data/lib/ddtrace/contrib/http/integration.rb +0 -46
  858. data/lib/ddtrace/contrib/http/patcher.rb +0 -27
  859. data/lib/ddtrace/contrib/http_annotation_helper.rb +0 -11
  860. data/lib/ddtrace/contrib/httpclient/configuration/settings.rb +0 -33
  861. data/lib/ddtrace/contrib/httpclient/ext.rb +0 -18
  862. data/lib/ddtrace/contrib/httpclient/instrumentation.rb +0 -148
  863. data/lib/ddtrace/contrib/httpclient/integration.rb +0 -44
  864. data/lib/ddtrace/contrib/httpclient/patcher.rb +0 -39
  865. data/lib/ddtrace/contrib/httprb/configuration/settings.rb +0 -33
  866. data/lib/ddtrace/contrib/httprb/ext.rb +0 -18
  867. data/lib/ddtrace/contrib/httprb/instrumentation.rb +0 -158
  868. data/lib/ddtrace/contrib/httprb/integration.rb +0 -44
  869. data/lib/ddtrace/contrib/httprb/patcher.rb +0 -39
  870. data/lib/ddtrace/contrib/integration.rb +0 -17
  871. data/lib/ddtrace/contrib/kafka/configuration/settings.rb +0 -31
  872. data/lib/ddtrace/contrib/kafka/consumer_event.rb +0 -15
  873. data/lib/ddtrace/contrib/kafka/consumer_group_event.rb +0 -15
  874. data/lib/ddtrace/contrib/kafka/event.rb +0 -52
  875. data/lib/ddtrace/contrib/kafka/events/connection/request.rb +0 -35
  876. data/lib/ddtrace/contrib/kafka/events/consumer/process_batch.rb +0 -42
  877. data/lib/ddtrace/contrib/kafka/events/consumer/process_message.rb +0 -40
  878. data/lib/ddtrace/contrib/kafka/events/consumer_group/heartbeat.rb +0 -40
  879. data/lib/ddtrace/contrib/kafka/events/consumer_group/join_group.rb +0 -30
  880. data/lib/ddtrace/contrib/kafka/events/consumer_group/leave_group.rb +0 -30
  881. data/lib/ddtrace/contrib/kafka/events/consumer_group/sync_group.rb +0 -30
  882. data/lib/ddtrace/contrib/kafka/events/produce_operation/send_messages.rb +0 -33
  883. data/lib/ddtrace/contrib/kafka/events/producer/deliver_messages.rb +0 -36
  884. data/lib/ddtrace/contrib/kafka/events.rb +0 -45
  885. data/lib/ddtrace/contrib/kafka/ext.rb +0 -42
  886. data/lib/ddtrace/contrib/kafka/integration.rb +0 -40
  887. data/lib/ddtrace/contrib/kafka/patcher.rb +0 -27
  888. data/lib/ddtrace/contrib/lograge/configuration/settings.rb +0 -19
  889. data/lib/ddtrace/contrib/lograge/ext.rb +0 -11
  890. data/lib/ddtrace/contrib/lograge/instrumentation.rb +0 -39
  891. data/lib/ddtrace/contrib/lograge/integration.rb +0 -46
  892. data/lib/ddtrace/contrib/lograge/patcher.rb +0 -26
  893. data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +0 -34
  894. data/lib/ddtrace/contrib/mongodb/ext.rb +0 -24
  895. data/lib/ddtrace/contrib/mongodb/instrumentation.rb +0 -70
  896. data/lib/ddtrace/contrib/mongodb/integration.rb +0 -44
  897. data/lib/ddtrace/contrib/mongodb/parsers.rb +0 -69
  898. data/lib/ddtrace/contrib/mongodb/patcher.rb +0 -32
  899. data/lib/ddtrace/contrib/mongodb/subscribers.rb +0 -112
  900. data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +0 -31
  901. data/lib/ddtrace/contrib/mysql2/ext.rb +0 -19
  902. data/lib/ddtrace/contrib/mysql2/instrumentation.rb +0 -65
  903. data/lib/ddtrace/contrib/mysql2/integration.rb +0 -39
  904. data/lib/ddtrace/contrib/mysql2/patcher.rb +0 -28
  905. data/lib/ddtrace/contrib/patchable.rb +0 -71
  906. data/lib/ddtrace/contrib/patcher.rb +0 -66
  907. data/lib/ddtrace/contrib/presto/configuration/settings.rb +0 -31
  908. data/lib/ddtrace/contrib/presto/ext.rb +0 -29
  909. data/lib/ddtrace/contrib/presto/instrumentation.rb +0 -111
  910. data/lib/ddtrace/contrib/presto/integration.rb +0 -39
  911. data/lib/ddtrace/contrib/presto/patcher.rb +0 -34
  912. data/lib/ddtrace/contrib/qless/configuration/settings.rb +0 -36
  913. data/lib/ddtrace/contrib/qless/ext.rb +0 -21
  914. data/lib/ddtrace/contrib/qless/integration.rb +0 -39
  915. data/lib/ddtrace/contrib/qless/patcher.rb +0 -35
  916. data/lib/ddtrace/contrib/qless/qless_job.rb +0 -74
  917. data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +0 -34
  918. data/lib/ddtrace/contrib/que/configuration/settings.rb +0 -44
  919. data/lib/ddtrace/contrib/que/ext.rb +0 -31
  920. data/lib/ddtrace/contrib/que/integration.rb +0 -43
  921. data/lib/ddtrace/contrib/que/patcher.rb +0 -25
  922. data/lib/ddtrace/contrib/que/tracer.rb +0 -58
  923. data/lib/ddtrace/contrib/racecar/configuration/settings.rb +0 -31
  924. data/lib/ddtrace/contrib/racecar/event.rb +0 -77
  925. data/lib/ddtrace/contrib/racecar/events/batch.rb +0 -28
  926. data/lib/ddtrace/contrib/racecar/events/consume.rb +0 -28
  927. data/lib/ddtrace/contrib/racecar/events/message.rb +0 -28
  928. data/lib/ddtrace/contrib/racecar/events.rb +0 -33
  929. data/lib/ddtrace/contrib/racecar/ext.rb +0 -26
  930. data/lib/ddtrace/contrib/racecar/integration.rb +0 -40
  931. data/lib/ddtrace/contrib/racecar/patcher.rb +0 -27
  932. data/lib/ddtrace/contrib/rack/configuration/settings.rb +0 -47
  933. data/lib/ddtrace/contrib/rack/ext.rb +0 -22
  934. data/lib/ddtrace/contrib/rack/integration.rb +0 -46
  935. data/lib/ddtrace/contrib/rack/middlewares.rb +0 -288
  936. data/lib/ddtrace/contrib/rack/patcher.rb +0 -106
  937. data/lib/ddtrace/contrib/rack/request_queue.rb +0 -45
  938. data/lib/ddtrace/contrib/rails/auto_instrument_railtie.rb +0 -10
  939. data/lib/ddtrace/contrib/rails/configuration/settings.rb +0 -101
  940. data/lib/ddtrace/contrib/rails/ext.rb +0 -18
  941. data/lib/ddtrace/contrib/rails/framework.rb +0 -172
  942. data/lib/ddtrace/contrib/rails/integration.rb +0 -45
  943. data/lib/ddtrace/contrib/rails/log_injection.rb +0 -42
  944. data/lib/ddtrace/contrib/rails/middlewares.rb +0 -44
  945. data/lib/ddtrace/contrib/rails/patcher.rb +0 -119
  946. data/lib/ddtrace/contrib/rails/railtie.rb +0 -18
  947. data/lib/ddtrace/contrib/rails/utils.rb +0 -25
  948. data/lib/ddtrace/contrib/rake/configuration/settings.rb +0 -32
  949. data/lib/ddtrace/contrib/rake/ext.rb +0 -22
  950. data/lib/ddtrace/contrib/rake/instrumentation.rb +0 -91
  951. data/lib/ddtrace/contrib/rake/integration.rb +0 -39
  952. data/lib/ddtrace/contrib/rake/patcher.rb +0 -31
  953. data/lib/ddtrace/contrib/redis/configuration/resolver.rb +0 -46
  954. data/lib/ddtrace/contrib/redis/configuration/settings.rb +0 -36
  955. data/lib/ddtrace/contrib/redis/ext.rb +0 -23
  956. data/lib/ddtrace/contrib/redis/instrumentation.rb +0 -90
  957. data/lib/ddtrace/contrib/redis/integration.rb +0 -43
  958. data/lib/ddtrace/contrib/redis/patcher.rb +0 -33
  959. data/lib/ddtrace/contrib/redis/quantize.rb +0 -76
  960. data/lib/ddtrace/contrib/redis/tags.rb +0 -47
  961. data/lib/ddtrace/contrib/redis/vendor/resolver.rb +0 -159
  962. data/lib/ddtrace/contrib/registerable.rb +0 -33
  963. data/lib/ddtrace/contrib/registry.rb +0 -43
  964. data/lib/ddtrace/contrib/resque/configuration/settings.rb +0 -49
  965. data/lib/ddtrace/contrib/resque/ext.rb +0 -18
  966. data/lib/ddtrace/contrib/resque/integration.rb +0 -44
  967. data/lib/ddtrace/contrib/resque/patcher.rb +0 -30
  968. data/lib/ddtrace/contrib/resque/resque_job.rb +0 -104
  969. data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +0 -32
  970. data/lib/ddtrace/contrib/rest_client/ext.rb +0 -18
  971. data/lib/ddtrace/contrib/rest_client/integration.rb +0 -39
  972. data/lib/ddtrace/contrib/rest_client/patcher.rb +0 -25
  973. data/lib/ddtrace/contrib/rest_client/request_patch.rb +0 -92
  974. data/lib/ddtrace/contrib/semantic_logger/configuration/settings.rb +0 -19
  975. data/lib/ddtrace/contrib/semantic_logger/ext.rb +0 -11
  976. data/lib/ddtrace/contrib/semantic_logger/instrumentation.rb +0 -43
  977. data/lib/ddtrace/contrib/semantic_logger/integration.rb +0 -48
  978. data/lib/ddtrace/contrib/semantic_logger/patcher.rb +0 -26
  979. data/lib/ddtrace/contrib/sequel/configuration/settings.rb +0 -29
  980. data/lib/ddtrace/contrib/sequel/database.rb +0 -64
  981. data/lib/ddtrace/contrib/sequel/dataset.rb +0 -64
  982. data/lib/ddtrace/contrib/sequel/ext.rb +0 -20
  983. data/lib/ddtrace/contrib/sequel/integration.rb +0 -39
  984. data/lib/ddtrace/contrib/sequel/patcher.rb +0 -34
  985. data/lib/ddtrace/contrib/sequel/utils.rb +0 -75
  986. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +0 -32
  987. data/lib/ddtrace/contrib/shoryuken/ext.rb +0 -22
  988. data/lib/ddtrace/contrib/shoryuken/integration.rb +0 -40
  989. data/lib/ddtrace/contrib/shoryuken/patcher.rb +0 -25
  990. data/lib/ddtrace/contrib/shoryuken/tracer.rb +0 -56
  991. data/lib/ddtrace/contrib/sidekiq/client_tracer.rb +0 -44
  992. data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +0 -38
  993. data/lib/ddtrace/contrib/sidekiq/ext.rb +0 -31
  994. data/lib/ddtrace/contrib/sidekiq/integration.rb +0 -49
  995. data/lib/ddtrace/contrib/sidekiq/patcher.rb +0 -68
  996. data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/heartbeat.rb +0 -30
  997. data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/job_fetch.rb +0 -30
  998. data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/scheduled_push.rb +0 -29
  999. data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +0 -66
  1000. data/lib/ddtrace/contrib/sidekiq/tracing.rb +0 -45
  1001. data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +0 -40
  1002. data/lib/ddtrace/contrib/sinatra/env.rb +0 -59
  1003. data/lib/ddtrace/contrib/sinatra/ext.rb +0 -28
  1004. data/lib/ddtrace/contrib/sinatra/headers.rb +0 -30
  1005. data/lib/ddtrace/contrib/sinatra/integration.rb +0 -39
  1006. data/lib/ddtrace/contrib/sinatra/patcher.rb +0 -30
  1007. data/lib/ddtrace/contrib/sinatra/tracer.rb +0 -150
  1008. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +0 -112
  1009. data/lib/ddtrace/contrib/sneakers/configuration/settings.rb +0 -34
  1010. data/lib/ddtrace/contrib/sneakers/ext.rb +0 -23
  1011. data/lib/ddtrace/contrib/sneakers/integration.rb +0 -42
  1012. data/lib/ddtrace/contrib/sneakers/patcher.rb +0 -25
  1013. data/lib/ddtrace/contrib/sneakers/tracer.rb +0 -54
  1014. data/lib/ddtrace/contrib/status_code_matcher.rb +0 -70
  1015. data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +0 -31
  1016. data/lib/ddtrace/contrib/sucker_punch/exception_handler.rb +0 -25
  1017. data/lib/ddtrace/contrib/sucker_punch/ext.rb +0 -22
  1018. data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +0 -89
  1019. data/lib/ddtrace/contrib/sucker_punch/integration.rb +0 -39
  1020. data/lib/ddtrace/contrib/sucker_punch/patcher.rb +0 -44
  1021. data/lib/ddtrace/correlation.rb +0 -40
  1022. data/lib/ddtrace/diagnostics/environment_logger.rb +0 -280
  1023. data/lib/ddtrace/diagnostics/health.rb +0 -34
  1024. data/lib/ddtrace/distributed_tracing/headers/b3.rb +0 -45
  1025. data/lib/ddtrace/distributed_tracing/headers/b3_single.rb +0 -57
  1026. data/lib/ddtrace/distributed_tracing/headers/datadog.rb +0 -43
  1027. data/lib/ddtrace/distributed_tracing/headers/headers.rb +0 -72
  1028. data/lib/ddtrace/distributed_tracing/headers/helpers.rb +0 -44
  1029. data/lib/ddtrace/encoding.rb +0 -72
  1030. data/lib/ddtrace/error.rb +0 -97
  1031. data/lib/ddtrace/event.rb +0 -53
  1032. data/lib/ddtrace/ext/analytics.rb +0 -13
  1033. data/lib/ddtrace/ext/app_types.rb +0 -12
  1034. data/lib/ddtrace/ext/correlation.rb +0 -12
  1035. data/lib/ddtrace/ext/diagnostics.rb +0 -37
  1036. data/lib/ddtrace/ext/distributed.rb +0 -40
  1037. data/lib/ddtrace/ext/environment.rb +0 -24
  1038. data/lib/ddtrace/ext/errors.rb +0 -11
  1039. data/lib/ddtrace/ext/forced_tracing.rb +0 -26
  1040. data/lib/ddtrace/ext/git.rb +0 -32
  1041. data/lib/ddtrace/ext/http.rb +0 -47
  1042. data/lib/ddtrace/ext/integration.rb +0 -9
  1043. data/lib/ddtrace/ext/manual_tracing.rb +0 -10
  1044. data/lib/ddtrace/ext/metrics.rb +0 -16
  1045. data/lib/ddtrace/ext/net.rb +0 -11
  1046. data/lib/ddtrace/ext/priority.rb +0 -19
  1047. data/lib/ddtrace/ext/profiling.rb +0 -53
  1048. data/lib/ddtrace/ext/runtime.rb +0 -25
  1049. data/lib/ddtrace/ext/sampling.rb +0 -17
  1050. data/lib/ddtrace/ext/sql.rb +0 -9
  1051. data/lib/ddtrace/ext/test.rb +0 -9
  1052. data/lib/ddtrace/ext/transport.rb +0 -32
  1053. data/lib/ddtrace/forced_tracing.rb +0 -39
  1054. data/lib/ddtrace/logger.rb +0 -41
  1055. data/lib/ddtrace/metrics.rb +0 -282
  1056. data/lib/ddtrace/opentelemetry/extensions.rb +0 -14
  1057. data/lib/ddtrace/opentelemetry/span.rb +0 -34
  1058. data/lib/ddtrace/opentracer/binary_propagator.rb +0 -25
  1059. data/lib/ddtrace/opentracer/carrier.rb +0 -7
  1060. data/lib/ddtrace/opentracer/distributed_headers.rb +0 -56
  1061. data/lib/ddtrace/opentracer/global_tracer.rb +0 -16
  1062. data/lib/ddtrace/opentracer/propagator.rb +0 -23
  1063. data/lib/ddtrace/opentracer/rack_propagator.rb +0 -61
  1064. data/lib/ddtrace/opentracer/scope.rb +0 -16
  1065. data/lib/ddtrace/opentracer/scope_manager.rb +0 -7
  1066. data/lib/ddtrace/opentracer/span.rb +0 -95
  1067. data/lib/ddtrace/opentracer/span_context.rb +0 -15
  1068. data/lib/ddtrace/opentracer/span_context_factory.rb +0 -24
  1069. data/lib/ddtrace/opentracer/text_map_propagator.rb +0 -76
  1070. data/lib/ddtrace/opentracer/thread_local_scope.rb +0 -32
  1071. data/lib/ddtrace/opentracer/thread_local_scope_manager.rb +0 -41
  1072. data/lib/ddtrace/opentracer/tracer.rb +0 -209
  1073. data/lib/ddtrace/opentracer.rb +0 -22
  1074. data/lib/ddtrace/patcher.rb +0 -69
  1075. data/lib/ddtrace/pin.rb +0 -86
  1076. data/lib/ddtrace/pipeline/span_filter.rb +0 -39
  1077. data/lib/ddtrace/pipeline/span_processor.rb +0 -21
  1078. data/lib/ddtrace/pipeline.rb +0 -47
  1079. data/lib/ddtrace/profiling/backtrace_location.rb +0 -33
  1080. data/lib/ddtrace/profiling/buffer.rb +0 -42
  1081. data/lib/ddtrace/profiling/collectors/stack.rb +0 -297
  1082. data/lib/ddtrace/profiling/encoding/profile.rb +0 -46
  1083. data/lib/ddtrace/profiling/event.rb +0 -14
  1084. data/lib/ddtrace/profiling/events/stack.rb +0 -81
  1085. data/lib/ddtrace/profiling/exporter.rb +0 -24
  1086. data/lib/ddtrace/profiling/ext/forking.rb +0 -98
  1087. data/lib/ddtrace/profiling/flush.rb +0 -44
  1088. data/lib/ddtrace/profiling/native_extension.rb +0 -40
  1089. data/lib/ddtrace/profiling/pprof/builder.rb +0 -126
  1090. data/lib/ddtrace/profiling/pprof/converter.rb +0 -103
  1091. data/lib/ddtrace/profiling/pprof/message_set.rb +0 -15
  1092. data/lib/ddtrace/profiling/pprof/payload.rb +0 -19
  1093. data/lib/ddtrace/profiling/pprof/pprof_pb.rb +0 -82
  1094. data/lib/ddtrace/profiling/pprof/stack_sample.rb +0 -140
  1095. data/lib/ddtrace/profiling/pprof/string_table.rb +0 -11
  1096. data/lib/ddtrace/profiling/pprof/template.rb +0 -119
  1097. data/lib/ddtrace/profiling/profiler.rb +0 -31
  1098. data/lib/ddtrace/profiling/recorder.rb +0 -96
  1099. data/lib/ddtrace/profiling/scheduler.rb +0 -150
  1100. data/lib/ddtrace/profiling/tasks/setup.rb +0 -90
  1101. data/lib/ddtrace/profiling/trace_identifiers/ddtrace.rb +0 -42
  1102. data/lib/ddtrace/profiling/trace_identifiers/helper.rb +0 -46
  1103. data/lib/ddtrace/profiling/transport/client.rb +0 -15
  1104. data/lib/ddtrace/profiling/transport/http/api/endpoint.rb +0 -94
  1105. data/lib/ddtrace/profiling/transport/http/api/instance.rb +0 -37
  1106. data/lib/ddtrace/profiling/transport/http/api/spec.rb +0 -41
  1107. data/lib/ddtrace/profiling/transport/http/api.rb +0 -44
  1108. data/lib/ddtrace/profiling/transport/http/builder.rb +0 -29
  1109. data/lib/ddtrace/profiling/transport/http/client.rb +0 -34
  1110. data/lib/ddtrace/profiling/transport/http/response.rb +0 -22
  1111. data/lib/ddtrace/profiling/transport/http.rb +0 -111
  1112. data/lib/ddtrace/profiling/transport/io/client.rb +0 -28
  1113. data/lib/ddtrace/profiling/transport/io/response.rb +0 -17
  1114. data/lib/ddtrace/profiling/transport/io.rb +0 -31
  1115. data/lib/ddtrace/profiling/transport/parcel.rb +0 -18
  1116. data/lib/ddtrace/profiling/transport/request.rb +0 -16
  1117. data/lib/ddtrace/profiling/transport/response.rb +0 -9
  1118. data/lib/ddtrace/profiling.rb +0 -149
  1119. data/lib/ddtrace/propagation/grpc_propagator.rb +0 -75
  1120. data/lib/ddtrace/propagation/http_propagator.rb +0 -91
  1121. data/lib/ddtrace/quantization/hash.rb +0 -104
  1122. data/lib/ddtrace/quantization/http.rb +0 -90
  1123. data/lib/ddtrace/runtime/metrics.rb +0 -135
  1124. data/lib/ddtrace/sampler.rb +0 -303
  1125. data/lib/ddtrace/sampling/matcher.rb +0 -58
  1126. data/lib/ddtrace/sampling/rate_limiter.rb +0 -177
  1127. data/lib/ddtrace/sampling/rule.rb +0 -62
  1128. data/lib/ddtrace/sampling/rule_sampler.rb +0 -133
  1129. data/lib/ddtrace/sampling.rb +0 -3
  1130. data/lib/ddtrace/span.rb +0 -445
  1131. data/lib/ddtrace/sync_writer.rb +0 -69
  1132. data/lib/ddtrace/tasks/exec.rb +0 -47
  1133. data/lib/ddtrace/tasks/help.rb +0 -15
  1134. data/lib/ddtrace/tracer.rb +0 -449
  1135. data/lib/ddtrace/utils/compression.rb +0 -28
  1136. data/lib/ddtrace/utils/database.rb +0 -26
  1137. data/lib/ddtrace/utils/forking.rb +0 -53
  1138. data/lib/ddtrace/utils/object_set.rb +0 -40
  1139. data/lib/ddtrace/utils/only_once.rb +0 -41
  1140. data/lib/ddtrace/utils/sequence.rb +0 -18
  1141. data/lib/ddtrace/utils/string_table.rb +0 -46
  1142. data/lib/ddtrace/utils/time.rb +0 -51
  1143. data/lib/ddtrace/utils.rb +0 -80
  1144. data/lib/ddtrace/vendor/active_record/connection_specification.rb +0 -302
  1145. data/lib/ddtrace/vendor/multipart-post/multipart/post/composite_read_io.rb +0 -117
  1146. data/lib/ddtrace/vendor/multipart-post/multipart/post/multipartable.rb +0 -58
  1147. data/lib/ddtrace/vendor/multipart-post/multipart/post/parts.rb +0 -136
  1148. data/lib/ddtrace/vendor/multipart-post/multipart/post/version.rb +0 -10
  1149. data/lib/ddtrace/vendor/multipart-post/multipart/post.rb +0 -9
  1150. data/lib/ddtrace/vendor/multipart-post/multipart.rb +0 -13
  1151. data/lib/ddtrace/vendor/multipart-post/net/http/post/multipart.rb +0 -33
  1152. data/lib/ddtrace/worker.rb +0 -21
  1153. data/lib/ddtrace/workers/async.rb +0 -175
  1154. data/lib/ddtrace/workers/interval_loop.rb +0 -116
  1155. data/lib/ddtrace/workers/polling.rb +0 -56
  1156. data/lib/ddtrace/workers/queue.rb +0 -41
  1157. data/lib/ddtrace/workers/runtime_metrics.rb +0 -65
  1158. data/lib/ddtrace/workers/trace_writer.rb +0 -200
  1159. data/lib/ddtrace/workers.rb +0 -123
  1160. data/lib/ddtrace/writer.rb +0 -200
@@ -0,0 +1,171 @@
1
+ # typed: true
2
+
3
+ require_relative 'core'
4
+ require_relative 'core/environment/variable_helpers'
5
+ require_relative 'core/utils/only_once'
6
+
7
+ module Datadog
8
+ # Contains profiler for generating stack profiles, etc.
9
+ module Profiling # rubocop:disable Metrics/ModuleLength
10
+ GOOGLE_PROTOBUF_MINIMUM_VERSION = Gem::Version.new('3.0')
11
+ private_constant :GOOGLE_PROTOBUF_MINIMUM_VERSION
12
+
13
+ def self.supported?
14
+ unsupported_reason.nil?
15
+ end
16
+
17
+ def self.unsupported_reason
18
+ # NOTE: Only the first matching reason is returned, so try to keep a nice order on reasons -- e.g. tell users
19
+ # first that they can't use this on JRuby before telling them that they are missing protobuf
20
+
21
+ native_library_compilation_skipped? ||
22
+ native_library_failed_to_load? ||
23
+ protobuf_gem_unavailable? ||
24
+ protobuf_version_unsupported? ||
25
+ protobuf_failed_to_load?
26
+ end
27
+
28
+ # Starts the profiler, if the profiler is supported by in
29
+ # this runtime environment and if the profiler has been enabled
30
+ # in configuration.
31
+ #
32
+ # @return [Boolean] `true` if the profiler has successfully started, otherwise `false`.
33
+ # @public_api
34
+ def self.start_if_enabled
35
+ # If the profiler was not previously touched, getting the profiler instance triggers start as a side-effect
36
+ # otherwise we get nil
37
+ profiler = Datadog.send(:components).profiler
38
+ # ...but we still try to start it BECAUSE if the process forks, the profiler will exist but may
39
+ # not yet have been started in the fork
40
+ profiler.start if profiler
41
+ !!profiler
42
+ end
43
+
44
+ private_class_method def self.native_library_compilation_skipped?
45
+ skipped_reason = try_reading_skipped_reason_file
46
+
47
+ "Your ddtrace installation is missing support for the Continuous Profiler because #{skipped_reason}" if skipped_reason
48
+ end
49
+
50
+ private_class_method def self.try_reading_skipped_reason_file(file_api = File)
51
+ # This file, if it exists, is recorded by extconf.rb during compilation of the native extension
52
+ skipped_reason_file = "#{__dir__}/../../ext/ddtrace_profiling_native_extension/skipped_reason.txt"
53
+
54
+ begin
55
+ return unless file_api.exist?(skipped_reason_file)
56
+
57
+ contents = file_api.read(skipped_reason_file).strip
58
+ contents unless contents.empty?
59
+ rescue StandardError
60
+ # Do nothing
61
+ end
62
+ end
63
+
64
+ private_class_method def self.protobuf_gem_unavailable?
65
+ # NOTE: On environments where protobuf is already loaded, we skip the check. This allows us to support environments
66
+ # where no Gem.loaded_version is NOT available but customers are able to load protobuf; see for instance
67
+ # https://github.com/teamcapybara/capybara/commit/caf3bcd7664f4f2691d0ca9ef3be9a2a954fecfb
68
+ if !defined?(::Google::Protobuf) && Gem.loaded_specs['google-protobuf'].nil?
69
+ "Missing google-protobuf dependency; please add `gem 'google-protobuf', '~> 3.0'` to your Gemfile or gems.rb file"
70
+ end
71
+ end
72
+
73
+ private_class_method def self.protobuf_version_unsupported?
74
+ # See above for why we skip the check when protobuf is already loaded; note that when protobuf was already loaded
75
+ # we skip the version check to avoid the call to Gem.loaded_specs. Unfortunately, protobuf does not seem to
76
+ # expose the gem version constant elsewhere, so in that setup we are not able to check the version.
77
+ if !defined?(::Google::Protobuf) && Gem.loaded_specs['google-protobuf'].version < GOOGLE_PROTOBUF_MINIMUM_VERSION
78
+ 'Your google-protobuf is too old; ensure that you have google-protobuf >= 3.0 by ' \
79
+ "adding `gem 'google-protobuf', '~> 3.0'` to your Gemfile or gems.rb file"
80
+ end
81
+ end
82
+
83
+ private_class_method def self.protobuf_failed_to_load?
84
+ unless protobuf_loaded_successfully?
85
+ 'There was an error loading the google-protobuf library; see previous warning message for details'
86
+ end
87
+ end
88
+
89
+ # The `google-protobuf` gem depends on a native component, and its creators helpfully tried to provide precompiled
90
+ # versions of this extension on rubygems.org.
91
+ #
92
+ # Unfortunately, for a long time, the supported Ruby versions metadata on these precompiled versions of the extension
93
+ # was not correctly set. (This is fixed in newer versions -- but not all Ruby versions we want to support can use
94
+ # these.)
95
+ #
96
+ # Thus, the gem can still be installed, but can be in a broken state. To avoid breaking customer applications, we
97
+ # use this helper to load it and gracefully handle failures.
98
+ private_class_method def self.protobuf_loaded_successfully?
99
+ return @protobuf_loaded if defined?(@protobuf_loaded)
100
+
101
+ begin
102
+ require 'google/protobuf'
103
+ @protobuf_loaded = true
104
+ rescue LoadError => e
105
+ # NOTE: We use Kernel#warn here because this code gets run BEFORE Datadog.logger is actually set up.
106
+ # In the future it'd be nice to shuffle the logger startup to happen first to avoid this special case.
107
+ Kernel.warn(
108
+ '[DDTRACE] Error while loading google-protobuf gem. ' \
109
+ "Cause: '#{e.class.name} #{e.message}' Location: '#{Array(e.backtrace).first}'. " \
110
+ 'This can happen when google-protobuf is missing its native components. ' \
111
+ 'To fix this, try removing and reinstalling the gem, forcing it to recompile the components: ' \
112
+ '`gem uninstall google-protobuf -a; BUNDLE_FORCE_RUBY_PLATFORM=true bundle install`. ' \
113
+ 'If the error persists, please contact Datadog support at <https://docs.datadoghq.com/help/>.'
114
+ )
115
+ @protobuf_loaded = false
116
+ end
117
+ end
118
+
119
+ private_class_method def self.native_library_failed_to_load?
120
+ success, exception = try_loading_native_library
121
+
122
+ unless success
123
+ if exception
124
+ 'There was an error loading the profiling native extension due to ' \
125
+ "'#{exception.class.name} #{exception.message}' at '#{exception.backtrace.first}'"
126
+ else
127
+ 'The profiling native extension did not load correctly. ' \
128
+ 'For help solving this issue, please contact Datadog support at <https://docs.datadoghq.com/help/>.' \
129
+ end
130
+ end
131
+ end
132
+
133
+ private_class_method def self.try_loading_native_library
134
+ begin
135
+ require_relative 'profiling/load_native_extension'
136
+
137
+ success =
138
+ defined?(Profiling::NativeExtension) && Profiling::NativeExtension.send(:native_working?)
139
+ [success, nil]
140
+ rescue StandardError, LoadError => e
141
+ [false, e]
142
+ end
143
+ end
144
+
145
+ private_class_method def self.load_profiling
146
+ return false unless supported?
147
+
148
+ require_relative 'profiling/ext/forking'
149
+ require_relative 'profiling/collectors/code_provenance'
150
+ require_relative 'profiling/collectors/cpu_and_wall_time'
151
+ require_relative 'profiling/collectors/cpu_and_wall_time_worker'
152
+ require_relative 'profiling/collectors/old_stack'
153
+ require_relative 'profiling/collectors/stack'
154
+ require_relative 'profiling/stack_recorder'
155
+ require_relative 'profiling/old_recorder'
156
+ require_relative 'profiling/exporter'
157
+ require_relative 'profiling/scheduler'
158
+ require_relative 'profiling/tasks/setup'
159
+ require_relative 'profiling/profiler'
160
+ require_relative 'profiling/native_extension'
161
+ require_relative 'profiling/trace_identifiers/helper'
162
+ require_relative 'profiling/pprof/pprof_pb'
163
+ require_relative 'profiling/tag_builder'
164
+ require_relative 'profiling/http_transport'
165
+
166
+ true
167
+ end
168
+
169
+ load_profiling
170
+ end
171
+ end
@@ -0,0 +1,25 @@
1
+ # typed: true
2
+
3
+ require_relative 'metadata/ext'
4
+
5
+ module Datadog
6
+ module Tracing
7
+ # Defines analytics behavior
8
+ module Analytics
9
+ class << self
10
+ def set_sample_rate(span_op, sample_rate)
11
+ return if span_op.nil? || !sample_rate.is_a?(Numeric)
12
+
13
+ span_op.set_metric(Metadata::Ext::Analytics::TAG_SAMPLE_RATE, sample_rate)
14
+ end
15
+
16
+ def set_measured(span_op, value = true)
17
+ return if span_op.nil?
18
+
19
+ value = value == true || value == 1 ? 1 : 0 # rubocop:disable Style/MultipleComparison
20
+ span_op.set_metric(Metadata::Ext::Analytics::TAG_MEASURED, value)
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,132 @@
1
+ # typed: true
2
+
3
+ require_relative '../core'
4
+ require_relative '../core/environment/ext'
5
+ require_relative '../core/buffer/thread_safe'
6
+ require_relative '../core/buffer/cruby'
7
+ require_relative '../core/diagnostics/health'
8
+
9
+ module Datadog
10
+ module Tracing
11
+ # Health metrics for trace buffers.
12
+ module MeasuredBuffer
13
+ include Kernel # Ensure that kernel methods are always available (https://sorbet.org/docs/error-reference#7003)
14
+
15
+ def initialize(*_)
16
+ super
17
+
18
+ @buffer_accepted = 0
19
+ @buffer_accepted_lengths = 0
20
+ @buffer_dropped = 0
21
+ @buffer_spans = 0
22
+ end
23
+
24
+ def add!(trace)
25
+ super
26
+
27
+ # Emit health metrics
28
+ measure_accept(trace)
29
+ end
30
+
31
+ def add_all!(traces)
32
+ super
33
+
34
+ # Emit health metrics
35
+ traces.each { |trace| measure_accept(trace) }
36
+ end
37
+
38
+ def replace!(trace)
39
+ discarded_trace = super
40
+
41
+ # Emit health metrics
42
+ measure_accept(trace)
43
+ measure_drop(discarded_trace) if discarded_trace
44
+
45
+ discarded_trace
46
+ end
47
+
48
+ # Stored traces are returned and the local buffer is reset.
49
+ def drain!
50
+ traces = super
51
+ measure_pop(traces)
52
+ traces
53
+ end
54
+
55
+ def measure_accept(trace)
56
+ @buffer_accepted += 1
57
+ @buffer_accepted_lengths += trace.length
58
+
59
+ @buffer_spans += trace.length
60
+ rescue StandardError => e
61
+ Datadog.logger.debug(
62
+ "Failed to measure queue accept. Cause: #{e.class.name} #{e.message} Source: #{Array(e.backtrace).first}"
63
+ )
64
+ end
65
+
66
+ def measure_drop(trace)
67
+ @buffer_dropped += 1
68
+
69
+ @buffer_spans -= trace.length
70
+ rescue StandardError => e
71
+ Datadog.logger.debug(
72
+ "Failed to measure queue drop. Cause: #{e.class.name} #{e.message} Source: #{Array(e.backtrace).first}"
73
+ )
74
+ end
75
+
76
+ def measure_pop(traces)
77
+ # Accepted, cumulative totals
78
+ Datadog.health_metrics.queue_accepted(@buffer_accepted)
79
+ Datadog.health_metrics.queue_accepted_lengths(@buffer_accepted_lengths)
80
+
81
+ # Dropped, cumulative totals
82
+ Datadog.health_metrics.queue_dropped(@buffer_dropped)
83
+ # TODO: are we missing a +queue_dropped_lengths+ metric?
84
+
85
+ # Queue gauges, current values
86
+ Datadog.health_metrics.queue_max_length(@max_size)
87
+ Datadog.health_metrics.queue_spans(@buffer_spans)
88
+ Datadog.health_metrics.queue_length(traces.length)
89
+
90
+ # Reset aggregated metrics
91
+ @buffer_accepted = 0
92
+ @buffer_accepted_lengths = 0
93
+ @buffer_dropped = 0
94
+ @buffer_spans = 0
95
+ rescue StandardError => e
96
+ Datadog.logger.debug(
97
+ "Failed to measure queue. Cause: #{e.class.name} #{e.message} Source: #{Array(e.backtrace).first}"
98
+ )
99
+ end
100
+ end
101
+
102
+ # Trace buffer that stores application traces, has a maximum size, and
103
+ # can be safely used concurrently on any environment.
104
+ #
105
+ # @see Datadog::Core::Buffer::ThreadSafe
106
+ class ThreadSafeTraceBuffer < Core::Buffer::ThreadSafe
107
+ prepend MeasuredBuffer
108
+ end
109
+
110
+ # Trace buffer that stores application traces, has a maximum size, and
111
+ # can be safely used concurrently with CRuby.
112
+ #
113
+ # @see Datadog::Core::Buffer::CRuby
114
+ class CRubyTraceBuffer < Core::Buffer::CRuby
115
+ prepend MeasuredBuffer
116
+ end
117
+
118
+ # Trace buffer that stores application traces. The buffer has a maximum size and when
119
+ # the buffer is full, a random trace is discarded. This class is thread-safe and is used
120
+ # automatically by the ``Tracer`` instance when a ``Span`` is finished.
121
+ #
122
+ # We choose the default TraceBuffer implementation for current platform dynamically here.
123
+ #
124
+ # TODO We should restructure this module, so that classes are not declared at top-level ::Datadog.
125
+ # TODO Making such a change is potentially breaking for users manually configuring the tracer.
126
+ TraceBuffer = if Core::Environment::Ext::RUBY_ENGINE == 'ruby'
127
+ CRubyTraceBuffer
128
+ else
129
+ ThreadSafeTraceBuffer
130
+ end
131
+ end
132
+ end
@@ -0,0 +1,51 @@
1
+ # typed: true
2
+
3
+ module Datadog
4
+ module Tracing
5
+ module Configuration
6
+ module Ext
7
+ # @public_api
8
+ module Analytics
9
+ ENV_TRACE_ANALYTICS_ENABLED = 'DD_TRACE_ANALYTICS_ENABLED'.freeze
10
+ end
11
+
12
+ # @public_api
13
+ module Correlation
14
+ ENV_LOGS_INJECTION_ENABLED = 'DD_LOGS_INJECTION'.freeze
15
+ end
16
+
17
+ # @public_api
18
+ module Distributed
19
+ PROPAGATION_STYLE_DATADOG = 'Datadog'.freeze
20
+ PROPAGATION_STYLE_B3 = 'B3'.freeze
21
+ PROPAGATION_STYLE_B3_SINGLE_HEADER = 'B3 single header'.freeze
22
+ ENV_PROPAGATION_STYLE_INJECT = 'DD_PROPAGATION_STYLE_INJECT'.freeze
23
+ ENV_PROPAGATION_STYLE_EXTRACT = 'DD_PROPAGATION_STYLE_EXTRACT'.freeze
24
+ end
25
+
26
+ # @public_api
27
+ module NET
28
+ ENV_REPORT_HOSTNAME = 'DD_TRACE_REPORT_HOSTNAME'.freeze
29
+ end
30
+
31
+ # @public_api
32
+ module Sampling
33
+ ENV_SAMPLE_RATE = 'DD_TRACE_SAMPLE_RATE'.freeze
34
+ ENV_RATE_LIMIT = 'DD_TRACE_RATE_LIMIT'.freeze
35
+ end
36
+
37
+ # @public_api
38
+ module Test
39
+ ENV_MODE_ENABLED = 'DD_TRACE_TEST_MODE_ENABLED'.freeze
40
+ end
41
+
42
+ # @public_api
43
+ module Transport
44
+ ENV_DEFAULT_HOST = 'DD_AGENT_HOST'.freeze
45
+ ENV_DEFAULT_PORT = 'DD_TRACE_AGENT_PORT'.freeze
46
+ ENV_DEFAULT_URL = 'DD_TRACE_AGENT_URL'.freeze
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,68 @@
1
+ # typed: true
2
+
3
+ require_relative '../core/utils/forking'
4
+
5
+ module Datadog
6
+ module Tracing
7
+ # {Datadog::Tracing::Context} is used to keep track of a the active trace for the current
8
+ # execution flow. During each logical execution, the same {Datadog::Tracing::Context} is
9
+ # used to represent a single logical trace, even if the trace is built
10
+ # asynchronously.
11
+ #
12
+ # A single code execution may use multiple {Datadog::Tracing::Context} if part of the execution
13
+ # must not be related to the current tracing. As example, a delayed job may
14
+ # compose a standalone trace instead of being related to the same trace that
15
+ # generates the job itself. On the other hand, if it's part of the same
16
+ # {Datadog::Tracing::Context}, it will be related to the original trace.
17
+ class Context
18
+ include Core::Utils::Forking
19
+
20
+ attr_reader \
21
+ :active_trace
22
+
23
+ def initialize(
24
+ trace: nil
25
+ )
26
+ activate!(trace)
27
+ end
28
+
29
+ # Handles trace activation.
30
+ #
31
+ # Permits nil, allowing traces to be deactivated.
32
+ #
33
+ # If given a block, it will reset to the original
34
+ # trace after the block completes.
35
+ #
36
+ # When restoring the original trace, if it is finished,
37
+ # it will deactivate it. This prevents the context from
38
+ # holding references to completed traces thereby releasing
39
+ # its memory.
40
+ def activate!(trace)
41
+ if block_given?
42
+ begin
43
+ original_trace = @active_trace
44
+ set_active_trace!(trace)
45
+ yield
46
+ ensure
47
+ set_active_trace!(original_trace)
48
+ end
49
+ else
50
+ set_active_trace!(trace)
51
+ end
52
+ end
53
+
54
+ # Creates a copy of the context, when forked.
55
+ def fork_clone
56
+ forked_trace = @active_trace && @active_trace.fork_clone
57
+ self.class.new(trace: forked_trace)
58
+ end
59
+
60
+ private
61
+
62
+ def set_active_trace!(trace)
63
+ # Don't retain finished traces
64
+ @active_trace = trace && !trace.finished? ? trace : nil
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,82 @@
1
+ # typed: true
2
+
3
+ require_relative '../core/utils/sequence'
4
+ require_relative 'context'
5
+
6
+ module Datadog
7
+ module Tracing
8
+ # DefaultContextProvider is a default context provider that retrieves
9
+ # all contexts from the current fiber-local storage. It is suitable for
10
+ # synchronous programming.
11
+ #
12
+ # @see https://ruby-doc.org/core-3.1.2/Thread.html#method-i-5B-5D Thread attributes are fiber-local
13
+ class DefaultContextProvider
14
+ # Initializes the default context provider with a fiber-bound context.
15
+ def initialize
16
+ @context = FiberLocalContext.new
17
+ end
18
+
19
+ # Sets the current context.
20
+ def context=(ctx)
21
+ @context.local = ctx
22
+ end
23
+
24
+ # Return the local context.
25
+ def context(key = nil)
26
+ current_context = key.nil? ? @context.local : @context.local(key)
27
+
28
+ # Rebuild/reset context after a fork
29
+ #
30
+ # We don't want forked processes to copy and retransmit spans
31
+ # that were generated from the parent process. Reset it such
32
+ # that it acts like a distributed trace.
33
+ current_context.after_fork! do
34
+ # TODO: Only assign to `self.context` when working on the current thread (`key == nil`)
35
+ current_context = self.context = current_context.fork_clone
36
+ end
37
+
38
+ current_context
39
+ end
40
+ end
41
+
42
+ # FiberLocalContext can be used as a tracer global reference to create
43
+ # a different {Datadog::Tracing::Context} for each fiber. This allows for the tracer
44
+ # to create a serial execution graph regardless of any concurrent execution: each
45
+ # concurrent execution path creates a new trace graph.
46
+ #
47
+ # @see https://ruby-doc.org/core-3.1.2/Thread.html#method-i-5B-5D Thread attributes are fiber-local
48
+ class FiberLocalContext
49
+ # To support multiple tracers simultaneously, each {Datadog::Tracing::FiberLocalContext}
50
+ # instance has its own fiber-local variable.
51
+ def initialize
52
+ @key = "datadog_context_#{FiberLocalContext.next_instance_id}".to_sym
53
+
54
+ self.local = Context.new
55
+ end
56
+
57
+ # Override the fiber-local context with a new context.
58
+ def local=(ctx)
59
+ Thread.current[@key] = ctx
60
+ end
61
+
62
+ # Return the fiber-local context.
63
+ def local(storage = Thread.current)
64
+ storage[@key] ||= Context.new
65
+ end
66
+
67
+ # Ensure two instances of {FiberLocalContext} do not conflict.
68
+ # We previously used {FiberLocalContext#object_id} to ensure uniqueness
69
+ # but the VM is allowed to reuse `object_id`, allow for the possibility that
70
+ # a new FiberLocalContext would be able to read an old FiberLocalContext's
71
+ # value.
72
+ UNIQUE_INSTANCE_MUTEX = Mutex.new
73
+ UNIQUE_INSTANCE_GENERATOR = Datadog::Core::Utils::Sequence.new
74
+
75
+ private_constant :UNIQUE_INSTANCE_MUTEX, :UNIQUE_INSTANCE_GENERATOR
76
+
77
+ def self.next_instance_id
78
+ UNIQUE_INSTANCE_MUTEX.synchronize { UNIQUE_INSTANCE_GENERATOR.next }
79
+ end
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,35 @@
1
+ # typed: false
2
+
3
+ require_relative '../../configuration/settings'
4
+ require_relative '../ext'
5
+
6
+ module Datadog
7
+ module Tracing
8
+ module Contrib
9
+ module ActionCable
10
+ module Configuration
11
+ # Custom settings for the ActionCable 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 :service_name
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,71 @@
1
+ # typed: true
2
+
3
+ require_relative '../../context'
4
+ require_relative '../analytics'
5
+ require_relative '../active_support/notifications/event'
6
+ require_relative 'ext'
7
+
8
+ module Datadog
9
+ module Tracing
10
+ module Contrib
11
+ module ActionCable
12
+ # Defines basic behaviors for an event.
13
+ module Event
14
+ def self.included(base)
15
+ base.include(ActiveSupport::Notifications::Event)
16
+ base.extend(ClassMethods)
17
+ end
18
+
19
+ # Class methods for events.
20
+ module ClassMethods
21
+ def span_options
22
+ if configuration[:service_name]
23
+ { service: configuration[:service_name] }
24
+ else
25
+ {}
26
+ end
27
+ end
28
+
29
+ def configuration
30
+ Datadog.configuration.tracing[:action_cable]
31
+ end
32
+ end
33
+ end
34
+
35
+ # Defines behavior for the first event of a thread execution.
36
+ #
37
+ # This event is not expected to be nested with other event,
38
+ # but to start a fresh tracing context.
39
+ module RootContextEvent
40
+ def self.included(base)
41
+ base.include(ActiveSupport::Notifications::Event)
42
+ base.extend(ClassMethods)
43
+ end
44
+
45
+ # Class methods for events.
46
+ module ClassMethods
47
+ include Contrib::ActionCable::Event::ClassMethods
48
+
49
+ def subscription(*args)
50
+ super.tap do |subscription|
51
+ subscription.before_trace { ensure_clean_context! }
52
+ end
53
+ end
54
+
55
+ private
56
+
57
+ # Context objects are thread-bound.
58
+ # If an integration re-uses threads, context from a previous trace
59
+ # could leak into the new trace. This "cleans" current context,
60
+ # preventing such a leak.
61
+ def ensure_clean_context!
62
+ return unless Tracing.active_span
63
+
64
+ Tracing.send(:tracer).provider.context = Tracing::Context.new
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,58 @@
1
+ # typed: false
2
+
3
+ require_relative '../../../metadata/ext'
4
+ require_relative '../event'
5
+ require_relative '../ext'
6
+ require_relative '../../analytics'
7
+
8
+ module Datadog
9
+ module Tracing
10
+ module Contrib
11
+ module ActionCable
12
+ module Events
13
+ # Defines instrumentation for 'broadcast.action_cable' event.
14
+ #
15
+ # A single 'broadcast' event will trigger as many 'transmit' events
16
+ # as there are clients subscribed to a channel.
17
+ module Broadcast
18
+ include ActionCable::Event
19
+
20
+ EVENT_NAME = 'broadcast.action_cable'.freeze
21
+
22
+ module_function
23
+
24
+ def event_name
25
+ self::EVENT_NAME
26
+ end
27
+
28
+ def span_name
29
+ Ext::SPAN_BROADCAST
30
+ end
31
+
32
+ def span_type
33
+ # Starts a broadcast of messages over WebSockets
34
+ Tracing::Metadata::Ext::AppTypes::TYPE_WEB
35
+ end
36
+
37
+ def process(span, _event, _id, payload)
38
+ channel = payload[:broadcasting] # Channel has high cardinality
39
+ span.service = configuration[:service_name] if configuration[:service_name]
40
+ span.span_type = span_type
41
+
42
+ # Set analytics sample rate
43
+ if Contrib::Analytics.enabled?(configuration[:analytics_enabled])
44
+ Contrib::Analytics.set_sample_rate(span, configuration[:analytics_sample_rate])
45
+ end
46
+
47
+ span.set_tag(Ext::TAG_CHANNEL, channel)
48
+ span.set_tag(Ext::TAG_BROADCAST_CODER, payload[:coder])
49
+
50
+ span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
51
+ span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_BROADCAST)
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end