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,55 @@
1
+ # typed: true
2
+
3
+ require_relative 'random'
4
+
5
+ module Datadog
6
+ module Core
7
+ module Buffer
8
+ # Buffer that stores objects, has a maximum size, and
9
+ # can be safely used concurrently with CRuby.
10
+ #
11
+ # Because singular +Array+ operations are thread-safe in CRuby,
12
+ # we can implement the buffer without an explicit lock,
13
+ # while making the compromise of allowing the buffer to go
14
+ # over its maximum limit under extreme circumstances.
15
+ #
16
+ # On the following scenario:
17
+ # * 4.5 million spans/second.
18
+ # * Pushed into a single CRubyTraceBuffer from 1000 threads.
19
+ #
20
+ # This implementation allocates less memory and is faster
21
+ # than {Datadog::Core::Buffer::ThreadSafe}.
22
+ #
23
+ # @see spec/ddtrace/benchmark/buffer_benchmark_spec.rb Buffer benchmarks
24
+ # @see https://github.com/ruby-concurrency/concurrent-ruby/blob/c1114a0c6891d9634f019f1f9fe58dcae8658964/lib/concurrent-ruby/concurrent/array.rb#L23-L27
25
+ class CRuby < Random
26
+ # A very large number to allow us to effectively
27
+ # drop all items when invoking `slice!(i, FIXNUM_MAX)`.
28
+ FIXNUM_MAX = (1 << 62) - 1
29
+
30
+ # Add a new ``item`` in the local queue. This method doesn't block the execution
31
+ # even if the buffer is full. In that case, a random item is discarded.
32
+ def replace!(item)
33
+ # Ensure buffer stays within +max_size+ items.
34
+ # This can happen when there's concurrent modification
35
+ # between a call the check in `full?` and the `add!` call in
36
+ # `full? ? replace!(item) : add!(item)`.
37
+ #
38
+ # We can still have `@items.size > @max_size` for a short period of
39
+ # time, but we will always try to correct it here.
40
+ #
41
+ # `slice!` is performed before `delete_at` & `<<` to avoid always
42
+ # removing the item that was just inserted.
43
+ #
44
+ # DEV: `slice!` with two integer arguments is ~10% faster than
45
+ # `slice!` with a {Range} argument.
46
+ @items.slice!(@max_size, FIXNUM_MAX)
47
+
48
+ # We should replace a random item with the new one
49
+ replace_index = rand(@max_size)
50
+ @items[replace_index] = item
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,134 @@
1
+ # typed: true
2
+
3
+ module Datadog
4
+ module Core
5
+ module Buffer
6
+ # Buffer that accumulates items for a consumer.
7
+ # Consumption can happen from a different thread.
8
+
9
+ # Buffer that stores objects. The buffer has a maximum size and when
10
+ # the buffer is full, a random object is discarded.
11
+ class Random
12
+ def initialize(max_size)
13
+ @max_size = max_size
14
+ @items = []
15
+ @closed = false
16
+ end
17
+
18
+ # Add a new ``item`` in the local queue. This method doesn't block the execution
19
+ # even if the buffer is full.
20
+ #
21
+ # When the buffer is full, we try to ensure that we are fairly choosing newly
22
+ # pushed items by randomly inserting them into the buffer slots. This discards
23
+ # old items randomly while trying to ensure that recent items are still captured.
24
+ def push(item)
25
+ return if closed?
26
+
27
+ full? ? replace!(item) : add!(item)
28
+ item
29
+ end
30
+
31
+ # A bulk push alternative to +#push+. Use this method if
32
+ # pushing more than one item for efficiency.
33
+ def concat(items)
34
+ return if closed?
35
+
36
+ # Segment items into underflow and overflow
37
+ underflow, overflow = overflow_segments(items)
38
+
39
+ # Concatenate items do not exceed capacity.
40
+ add_all!(underflow) unless underflow.nil?
41
+
42
+ # Iteratively replace items, to ensure pseudo-random replacement.
43
+ overflow.each { |item| replace!(item) } unless overflow.nil?
44
+ end
45
+
46
+ # Stored items are returned and the local buffer is reset.
47
+ def pop
48
+ drain!
49
+ end
50
+
51
+ # Return the current number of stored items.
52
+ def length
53
+ @items.length
54
+ end
55
+
56
+ # Return if the buffer is empty.
57
+ def empty?
58
+ @items.empty?
59
+ end
60
+
61
+ # Closes this buffer, preventing further pushing.
62
+ # Draining is still allowed.
63
+ def close
64
+ @closed = true
65
+ end
66
+
67
+ def closed?
68
+ @closed
69
+ end
70
+
71
+ protected
72
+
73
+ # Segment items into two segments: underflow and overflow.
74
+ # Underflow are items that will fit into buffer.
75
+ # Overflow are items that will exceed capacity, after underflow is added.
76
+ # Returns each array, and nil if there is no underflow/overflow.
77
+ def overflow_segments(items)
78
+ underflow = nil
79
+ overflow = nil
80
+
81
+ overflow_size = @max_size > 0 ? (@items.length + items.length) - @max_size : 0
82
+
83
+ if overflow_size > 0
84
+ # Items will overflow
85
+ if overflow_size < items.length
86
+ # Partial overflow
87
+ underflow_end_index = items.length - overflow_size - 1
88
+ underflow = items[0..underflow_end_index]
89
+ overflow = items[(underflow_end_index + 1)..-1]
90
+ else
91
+ # Total overflow
92
+ overflow = items
93
+ end
94
+ else
95
+ # Items do not exceed capacity.
96
+ underflow = items
97
+ end
98
+
99
+ [underflow, overflow]
100
+ end
101
+
102
+ def full?
103
+ @max_size > 0 && @items.length >= @max_size
104
+ end
105
+
106
+ def add_all!(items)
107
+ @items.concat(items)
108
+ end
109
+
110
+ def add!(item)
111
+ @items << item
112
+ end
113
+
114
+ def replace!(item)
115
+ # Choose random item to be replaced
116
+ replace_index = rand(@items.length)
117
+
118
+ # Replace random item
119
+ discarded_item = @items[replace_index]
120
+ @items[replace_index] = item
121
+
122
+ # Return discarded item
123
+ discarded_item
124
+ end
125
+
126
+ def drain!
127
+ items = @items
128
+ @items = []
129
+ items
130
+ end
131
+ end
132
+ end
133
+ end
134
+ end
@@ -0,0 +1,58 @@
1
+ # typed: true
2
+
3
+ require_relative 'random'
4
+
5
+ module Datadog
6
+ module Core
7
+ module Buffer
8
+ # Buffer that stores objects, has a maximum size, and
9
+ # can be safely used concurrently on any environment.
10
+ #
11
+ # This implementation uses a {Mutex} around public methods, incurring
12
+ # overhead in order to ensure thread-safety.
13
+ #
14
+ # This is implementation is recommended for non-CRuby environments.
15
+ # If using CRuby, {Datadog::Core::Buffer::CRuby} is a faster implementation with minimal compromise.
16
+ class ThreadSafe < Random
17
+ def initialize(max_size)
18
+ super
19
+
20
+ @mutex = Mutex.new
21
+ end
22
+
23
+ # Add a new ``item`` in the local queue. This method doesn't block the execution
24
+ # even if the buffer is full. In that case, a random item is discarded.
25
+ def push(item)
26
+ synchronize { super }
27
+ end
28
+
29
+ def concat(items)
30
+ synchronize { super }
31
+ end
32
+
33
+ # Return the current number of stored items.
34
+ def length
35
+ synchronize { super }
36
+ end
37
+
38
+ # Return if the buffer is empty.
39
+ def empty?
40
+ synchronize { super }
41
+ end
42
+
43
+ # Stored items are returned and the local buffer is reset.
44
+ def pop
45
+ synchronize { super }
46
+ end
47
+
48
+ def close
49
+ synchronize { super }
50
+ end
51
+
52
+ def synchronize(&block)
53
+ @mutex.synchronize(&block)
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,35 @@
1
+ # typed: false
2
+
3
+ module Datadog
4
+ module Core
5
+ # Chunks list of elements into batches
6
+ module Chunker
7
+ module_function
8
+
9
+ # Chunks a list into batches of at most +max_chunk_size+ elements each.
10
+ #
11
+ # An exception can occur if a single element is too large. That single
12
+ # element will be returned in its own chunk. You have to verify by yourself
13
+ # when such elements are returned.
14
+ #
15
+ # @param list [Enumerable] list of elements
16
+ # @param max_chunk_size [Numeric] maximum acceptable chunk size
17
+ # @return [Enumerable] lazy list of chunks
18
+ def chunk_by_size(list, max_chunk_size)
19
+ chunk_agg = 0
20
+ list.slice_before do |elem|
21
+ size = elem.size
22
+ chunk_agg += size
23
+ if chunk_agg > max_chunk_size
24
+ # Can't fit element in current chunk, start a new one.
25
+ chunk_agg = size
26
+ true
27
+ else
28
+ # Add to current chunk
29
+ false
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,365 @@
1
+ # typed: true
2
+
3
+ require 'uri'
4
+
5
+ require_relative 'settings'
6
+ require_relative '../../tracing/configuration/ext'
7
+ require_relative '../../../ddtrace/transport/ext'
8
+
9
+ module Datadog
10
+ module Core
11
+ module Configuration
12
+ # This class unifies all the different ways that users can configure how we talk to the agent.
13
+ #
14
+ # It has quite a lot of complexity, but this complexity just reflects the actual complexity we have around our
15
+ # configuration today. E.g., this is just all of the complexity regarding agent settings gathered together in a
16
+ # single place. As we deprecate more and more of the different ways that these things can be configured,
17
+ # this class will reflect that simplification as well.
18
+ #
19
+ # Whenever there is a conflict (different configurations are provided in different orders), it MUST warn the users
20
+ # about it and pick a value based on the following priority: code > environment variable > defaults.
21
+ #
22
+ # rubocop:disable Metrics/ClassLength
23
+ class AgentSettingsResolver
24
+ AgentSettings = \
25
+ Struct.new(
26
+ :adapter,
27
+ :ssl,
28
+ :hostname,
29
+ :port,
30
+ :uds_path,
31
+ :timeout_seconds,
32
+ :deprecated_for_removal_transport_configuration_proc,
33
+ ) do
34
+ def initialize(
35
+ adapter:,
36
+ ssl:,
37
+ hostname:,
38
+ port:,
39
+ uds_path:,
40
+ timeout_seconds:,
41
+ deprecated_for_removal_transport_configuration_proc:
42
+ )
43
+ super(
44
+ adapter,
45
+ ssl,
46
+ hostname,
47
+ port,
48
+ uds_path,
49
+ timeout_seconds,
50
+ deprecated_for_removal_transport_configuration_proc
51
+ )
52
+ freeze
53
+ end
54
+
55
+ # Returns a frozen copy of this struct
56
+ # with the provided +member_values+ modified.
57
+ #
58
+ # TODO: This is only used when configuring profiling, and can be removed once
59
+ # https://github.com/DataDog/dd-trace-rb/pull/1924 is merged
60
+ def merge(**member_values)
61
+ new_struct = dup
62
+
63
+ member_values.each do |member, value|
64
+ new_struct[member] = value
65
+ end
66
+
67
+ new_struct.freeze
68
+ end
69
+ end
70
+
71
+ def self.call(settings, logger: Datadog.logger)
72
+ new(settings, logger: logger).send(:call)
73
+ end
74
+
75
+ private
76
+
77
+ attr_reader \
78
+ :logger,
79
+ :settings
80
+
81
+ def initialize(settings, logger: Datadog.logger)
82
+ @settings = settings
83
+ @logger = logger
84
+ end
85
+
86
+ def call
87
+ # A transport_options proc configured for unix domain socket overrides most of the logic on this file
88
+ if transport_options.adapter == Transport::Ext::UnixSocket::ADAPTER
89
+ return AgentSettings.new(
90
+ adapter: Transport::Ext::UnixSocket::ADAPTER,
91
+ ssl: false,
92
+ hostname: nil,
93
+ port: nil,
94
+ uds_path: transport_options.uds_path,
95
+ timeout_seconds: timeout_seconds,
96
+ deprecated_for_removal_transport_configuration_proc: nil,
97
+ )
98
+ end
99
+
100
+ AgentSettings.new(
101
+ adapter: adapter,
102
+ ssl: ssl?,
103
+ hostname: hostname,
104
+ port: port,
105
+ uds_path: uds_path,
106
+ timeout_seconds: timeout_seconds,
107
+ # NOTE: When provided, the deprecated_for_removal_transport_configuration_proc can override all
108
+ # values above (ssl, hostname, port, timeout), or even make them irrelevant (by using an unix socket or
109
+ # enabling test mode instead).
110
+ # That is the main reason why it is deprecated -- it's an opaque function that may set a bunch of settings
111
+ # that we know nothing of until we actually call it.
112
+ deprecated_for_removal_transport_configuration_proc: deprecated_for_removal_transport_configuration_proc,
113
+ )
114
+ end
115
+
116
+ def adapter
117
+ # If no agent settings have been provided, we try to connect using a local unix socket.
118
+ # We only do so if the socket is present when `ddtrace` runs.
119
+ if should_use_uds_fallback?
120
+ Transport::Ext::UnixSocket::ADAPTER
121
+ else
122
+ Transport::Ext::HTTP::ADAPTER
123
+ end
124
+ end
125
+
126
+ def configured_hostname
127
+ return @configured_hostname if defined?(@configured_hostname)
128
+
129
+ @configured_hostname = pick_from(
130
+ DetectedConfiguration.new(
131
+ friendly_name: "'c.tracing.transport_options'",
132
+ value: transport_options.hostname,
133
+ ),
134
+ DetectedConfiguration.new(
135
+ friendly_name: "'c.agent.host'",
136
+ value: settings.agent.host
137
+ ),
138
+ DetectedConfiguration.new(
139
+ friendly_name: "#{Datadog::Tracing::Configuration::Ext::Transport::ENV_DEFAULT_URL} environment variable",
140
+ value: parsed_url && parsed_url.hostname
141
+ ),
142
+ DetectedConfiguration.new(
143
+ friendly_name: "#{Datadog::Tracing::Configuration::Ext::Transport::ENV_DEFAULT_HOST} environment variable",
144
+ value: ENV[Datadog::Tracing::Configuration::Ext::Transport::ENV_DEFAULT_HOST]
145
+ )
146
+ )
147
+ end
148
+
149
+ def configured_port
150
+ return @configured_port if defined?(@configured_port)
151
+
152
+ @configured_port = pick_from(
153
+ try_parsing_as_integer(
154
+ friendly_name: "'c.tracing.transport_options'",
155
+ value: transport_options.port,
156
+ ),
157
+ try_parsing_as_integer(
158
+ friendly_name: '"c.agent.port"',
159
+ value: settings.agent.port,
160
+ ),
161
+ DetectedConfiguration.new(
162
+ friendly_name: "#{Datadog::Tracing::Configuration::Ext::Transport::ENV_DEFAULT_URL} environment variable",
163
+ value: parsed_url && parsed_url.port,
164
+ ),
165
+ try_parsing_as_integer(
166
+ friendly_name: "#{Datadog::Tracing::Configuration::Ext::Transport::ENV_DEFAULT_PORT} environment variable",
167
+ value: ENV[Datadog::Tracing::Configuration::Ext::Transport::ENV_DEFAULT_PORT],
168
+ )
169
+ )
170
+ end
171
+
172
+ def try_parsing_as_integer(value:, friendly_name:)
173
+ value =
174
+ begin
175
+ Integer(value) if value
176
+ rescue ArgumentError, TypeError
177
+ log_warning("Invalid value for #{friendly_name} (#{value.inspect}). Ignoring this configuration.")
178
+
179
+ nil
180
+ end
181
+
182
+ DetectedConfiguration.new(friendly_name: friendly_name, value: value)
183
+ end
184
+
185
+ def ssl?
186
+ transport_options.ssl ||
187
+ (!parsed_url.nil? && parsed_url.scheme == 'https')
188
+ end
189
+
190
+ def hostname
191
+ configured_hostname || (should_use_uds_fallback? ? nil : Datadog::Transport::Ext::HTTP::DEFAULT_HOST)
192
+ end
193
+
194
+ def port
195
+ configured_port || (should_use_uds_fallback? ? nil : Datadog::Transport::Ext::HTTP::DEFAULT_PORT)
196
+ end
197
+
198
+ # Unix socket path in the file system
199
+ def uds_path
200
+ uds_fallback
201
+ end
202
+
203
+ # Defaults to +nil+, letting the adapter choose what default
204
+ # works best in their case.
205
+ def timeout_seconds
206
+ transport_options.timeout_seconds
207
+ end
208
+
209
+ # In transport_options, we try to invoke the transport_options proc and get its configuration. In case that
210
+ # doesn't work, we include the proc directly in the agent settings result.
211
+ def deprecated_for_removal_transport_configuration_proc
212
+ if settings.tracing.transport_options.is_a?(Proc) && transport_options.adapter.nil?
213
+ settings.tracing.transport_options
214
+ end
215
+ end
216
+
217
+ # We only use the default unix socket if it is already present.
218
+ # This is by design, as we still want to use the default host:port if no unix socket is present.
219
+ def uds_fallback
220
+ return @uds_fallback if defined?(@uds_fallback)
221
+
222
+ @uds_fallback =
223
+ if configured_hostname.nil? &&
224
+ configured_port.nil? &&
225
+ deprecated_for_removal_transport_configuration_proc.nil? &&
226
+ File.exist?(Transport::Ext::UnixSocket::DEFAULT_PATH)
227
+
228
+ Transport::Ext::UnixSocket::DEFAULT_PATH
229
+ end
230
+ end
231
+
232
+ def should_use_uds_fallback?
233
+ uds_fallback != nil
234
+ end
235
+
236
+ def parsed_url
237
+ return @parsed_url if defined?(@parsed_url)
238
+
239
+ unparsed_url_from_env = ENV[Datadog::Tracing::Configuration::Ext::Transport::ENV_DEFAULT_URL]
240
+
241
+ @parsed_url =
242
+ if unparsed_url_from_env
243
+ parsed = URI.parse(unparsed_url_from_env)
244
+
245
+ if %w[http https].include?(parsed.scheme)
246
+ parsed
247
+ else
248
+ # rubocop:disable Layout/LineLength
249
+ log_warning(
250
+ "Invalid URI scheme '#{parsed.scheme}' for #{Datadog::Tracing::Configuration::Ext::Transport::ENV_DEFAULT_URL} " \
251
+ "environment variable ('#{unparsed_url_from_env}'). " \
252
+ "Ignoring the contents of #{Datadog::Tracing::Configuration::Ext::Transport::ENV_DEFAULT_URL}."
253
+ )
254
+ # rubocop:enable Layout/LineLength
255
+
256
+ nil
257
+ end
258
+ end
259
+ end
260
+
261
+ def pick_from(*configurations_in_priority_order)
262
+ detected_configurations_in_priority_order = configurations_in_priority_order.select(&:value?)
263
+
264
+ if detected_configurations_in_priority_order.any?
265
+ warn_if_configuration_mismatch(detected_configurations_in_priority_order)
266
+
267
+ # The configurations are listed in priority, so we only need to look at the first; if there's more than
268
+ # one, we emit a warning above
269
+ detected_configurations_in_priority_order.first.value
270
+ end
271
+ end
272
+
273
+ def warn_if_configuration_mismatch(detected_configurations_in_priority_order)
274
+ return unless detected_configurations_in_priority_order.map(&:value).uniq.size > 1
275
+
276
+ log_warning(
277
+ 'Configuration mismatch: values differ between ' \
278
+ "#{detected_configurations_in_priority_order
279
+ .map { |config| "#{config.friendly_name} (#{config.value.inspect})" }.join(' and ')}" \
280
+ ". Using #{detected_configurations_in_priority_order.first.value.inspect}."
281
+ )
282
+ end
283
+
284
+ def log_warning(message)
285
+ logger.warn(message) if logger
286
+ end
287
+
288
+ # The settings.tracing.transport_options allows users to have full control over the settings used to
289
+ # communicate with the agent. In the general case, we can't extract the configuration from this proc, but
290
+ # in the specific case of the http and unix socket adapters we can, and we use this method together with the
291
+ # `TransportOptionsResolver` to call the proc and extract its information.
292
+ def transport_options
293
+ return @transport_options if defined?(@transport_options)
294
+
295
+ transport_options_proc = settings.tracing.transport_options
296
+
297
+ @transport_options = TransportOptions.new
298
+
299
+ if transport_options_proc.is_a?(Proc)
300
+ begin
301
+ transport_options_proc.call(TransportOptionsResolver.new(@transport_options))
302
+ rescue NoMethodError => e
303
+ if logger
304
+ logger.debug do
305
+ 'Could not extract configuration from transport_options proc. ' \
306
+ "Cause: #{e.class.name} #{e.message} Source: #{Array(e.backtrace).first}"
307
+ end
308
+ end
309
+
310
+ # Reset the object; we shouldn't return the same one we passed into the proc as it may have
311
+ # some partial configuration and we want all-or-nothing.
312
+ @transport_options = TransportOptions.new
313
+ end
314
+ end
315
+
316
+ @transport_options.freeze
317
+ end
318
+
319
+ # Represents a given configuration value and where we got it from
320
+ class DetectedConfiguration
321
+ attr_reader :friendly_name, :value
322
+
323
+ def initialize(friendly_name:, value:)
324
+ @friendly_name = friendly_name
325
+ @value = value
326
+ freeze
327
+ end
328
+
329
+ def value?
330
+ !value.nil?
331
+ end
332
+ end
333
+ private_constant :DetectedConfiguration
334
+
335
+ # Used to contain information extracted from the transport_options proc (see #transport_options above)
336
+ TransportOptions = Struct.new(:adapter, :hostname, :port, :timeout_seconds, :ssl, :uds_path)
337
+ private_constant :TransportOptions
338
+
339
+ # Used to extract information from the transport_options proc (see #transport_options above)
340
+ class TransportOptionsResolver
341
+ def initialize(transport_options)
342
+ @transport_options = transport_options
343
+ end
344
+
345
+ def adapter(kind_or_custom_adapter, *args, **kwargs)
346
+ case kind_or_custom_adapter
347
+ when Datadog::Transport::Ext::HTTP::ADAPTER
348
+ @transport_options.adapter = Datadog::Transport::Ext::HTTP::ADAPTER
349
+ @transport_options.hostname = args[0] || kwargs[:hostname]
350
+ @transport_options.port = args[1] || kwargs[:port]
351
+ @transport_options.timeout_seconds = kwargs[:timeout]
352
+ @transport_options.ssl = kwargs[:ssl]
353
+ when Datadog::Transport::Ext::UnixSocket::ADAPTER
354
+ @transport_options.adapter = Datadog::Transport::Ext::UnixSocket::ADAPTER
355
+ @transport_options.uds_path = args[0] || kwargs[:uds_path]
356
+ end
357
+
358
+ nil
359
+ end
360
+ end
361
+ end
362
+ # rubocop:enable Metrics/ClassLength
363
+ end
364
+ end
365
+ end