ddtrace 0.54.2 → 1.18.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 (1304) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1239 -1
  3. data/LICENSE-3rdparty.csv +7 -1
  4. data/README.md +16 -9
  5. data/bin/ddtracerb +5 -5
  6. data/ext/ddtrace_profiling_loader/ddtrace_profiling_loader.c +134 -0
  7. data/ext/ddtrace_profiling_loader/extconf.rb +72 -0
  8. data/ext/ddtrace_profiling_native_extension/NativeExtensionDesign.md +85 -15
  9. data/ext/ddtrace_profiling_native_extension/clock_id.h +20 -2
  10. data/ext/ddtrace_profiling_native_extension/clock_id_from_pthread.c +24 -20
  11. data/ext/ddtrace_profiling_native_extension/clock_id_noop.c +10 -2
  12. data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +966 -0
  13. data/ext/ddtrace_profiling_native_extension/collectors_dynamic_sampling_rate.c +142 -0
  14. data/ext/ddtrace_profiling_native_extension/collectors_dynamic_sampling_rate.h +14 -0
  15. data/ext/ddtrace_profiling_native_extension/collectors_idle_sampling_helper.c +244 -0
  16. data/ext/ddtrace_profiling_native_extension/collectors_idle_sampling_helper.h +3 -0
  17. data/ext/ddtrace_profiling_native_extension/collectors_stack.c +431 -0
  18. data/ext/ddtrace_profiling_native_extension/collectors_stack.h +20 -0
  19. data/ext/ddtrace_profiling_native_extension/collectors_thread_context.c +1266 -0
  20. data/ext/ddtrace_profiling_native_extension/collectors_thread_context.h +14 -0
  21. data/ext/ddtrace_profiling_native_extension/extconf.rb +201 -115
  22. data/ext/ddtrace_profiling_native_extension/helpers.h +17 -0
  23. data/ext/ddtrace_profiling_native_extension/http_transport.c +379 -0
  24. data/ext/ddtrace_profiling_native_extension/libdatadog_helpers.c +42 -0
  25. data/ext/ddtrace_profiling_native_extension/libdatadog_helpers.h +31 -0
  26. data/ext/ddtrace_profiling_native_extension/native_extension_helpers.rb +319 -0
  27. data/ext/ddtrace_profiling_native_extension/pid_controller.c +57 -0
  28. data/ext/ddtrace_profiling_native_extension/pid_controller.h +45 -0
  29. data/ext/ddtrace_profiling_native_extension/private_vm_api_access.c +847 -9
  30. data/ext/ddtrace_profiling_native_extension/private_vm_api_access.h +54 -0
  31. data/ext/ddtrace_profiling_native_extension/profiling.c +231 -3
  32. data/ext/ddtrace_profiling_native_extension/ruby_helpers.c +110 -0
  33. data/ext/ddtrace_profiling_native_extension/ruby_helpers.h +89 -0
  34. data/ext/ddtrace_profiling_native_extension/setup_signal_handler.c +115 -0
  35. data/ext/ddtrace_profiling_native_extension/setup_signal_handler.h +11 -0
  36. data/ext/ddtrace_profiling_native_extension/stack_recorder.c +622 -0
  37. data/ext/ddtrace_profiling_native_extension/stack_recorder.h +24 -0
  38. data/ext/ddtrace_profiling_native_extension/time_helpers.c +53 -0
  39. data/ext/ddtrace_profiling_native_extension/time_helpers.h +24 -0
  40. data/lib/datadog/appsec/assets/blocked.html +99 -0
  41. data/lib/datadog/appsec/assets/blocked.json +1 -0
  42. data/lib/datadog/appsec/assets/blocked.text +5 -0
  43. data/lib/datadog/appsec/assets/waf_rules/README.md +7 -0
  44. data/lib/datadog/appsec/assets/waf_rules/processors.json +92 -0
  45. data/lib/datadog/appsec/assets/waf_rules/recommended.json +7703 -0
  46. data/lib/datadog/appsec/assets/waf_rules/scanners.json +114 -0
  47. data/lib/datadog/appsec/assets/waf_rules/strict.json +1635 -0
  48. data/lib/datadog/appsec/assets.rb +44 -0
  49. data/lib/datadog/appsec/autoload.rb +11 -0
  50. data/lib/datadog/appsec/component.rb +94 -0
  51. data/lib/datadog/appsec/configuration/settings.rb +202 -0
  52. data/lib/datadog/appsec/configuration.rb +11 -0
  53. data/lib/datadog/appsec/contrib/auto_instrument.rb +25 -0
  54. data/lib/datadog/appsec/contrib/devise/event.rb +57 -0
  55. data/lib/datadog/appsec/contrib/devise/ext.rb +13 -0
  56. data/lib/datadog/appsec/contrib/devise/integration.rb +42 -0
  57. data/lib/datadog/appsec/contrib/devise/patcher/authenticatable_patch.rb +76 -0
  58. data/lib/datadog/appsec/contrib/devise/patcher/registration_controller_patch.rb +54 -0
  59. data/lib/datadog/appsec/contrib/devise/patcher.rb +45 -0
  60. data/lib/datadog/appsec/contrib/devise/resource.rb +35 -0
  61. data/lib/datadog/appsec/contrib/devise/tracking.rb +49 -0
  62. data/lib/datadog/appsec/contrib/integration.rb +37 -0
  63. data/lib/datadog/appsec/contrib/patcher.rb +12 -0
  64. data/lib/datadog/appsec/contrib/rack/ext.rb +13 -0
  65. data/lib/datadog/appsec/contrib/rack/gateway/request.rb +104 -0
  66. data/lib/datadog/appsec/contrib/rack/gateway/response.rb +30 -0
  67. data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +160 -0
  68. data/lib/datadog/appsec/contrib/rack/integration.rb +42 -0
  69. data/lib/datadog/appsec/contrib/rack/patcher.rb +34 -0
  70. data/lib/datadog/appsec/contrib/rack/reactive/request.rb +81 -0
  71. data/lib/datadog/appsec/contrib/rack/reactive/request_body.rb +60 -0
  72. data/lib/datadog/appsec/contrib/rack/reactive/response.rb +66 -0
  73. data/lib/datadog/appsec/contrib/rack/request_body_middleware.rb +44 -0
  74. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +193 -0
  75. data/lib/datadog/appsec/contrib/rails/ext.rb +13 -0
  76. data/lib/datadog/appsec/contrib/rails/framework.rb +16 -0
  77. data/lib/datadog/appsec/contrib/rails/gateway/request.rb +67 -0
  78. data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +69 -0
  79. data/lib/datadog/appsec/contrib/rails/integration.rb +41 -0
  80. data/lib/datadog/appsec/contrib/rails/patcher.rb +165 -0
  81. data/lib/datadog/appsec/contrib/rails/reactive/action.rb +66 -0
  82. data/lib/datadog/appsec/contrib/rails/request.rb +36 -0
  83. data/lib/datadog/appsec/contrib/rails/request_middleware.rb +20 -0
  84. data/lib/datadog/appsec/contrib/sinatra/ext.rb +14 -0
  85. data/lib/datadog/appsec/contrib/sinatra/framework.rb +20 -0
  86. data/lib/datadog/appsec/contrib/sinatra/gateway/request.rb +17 -0
  87. data/lib/datadog/appsec/contrib/sinatra/gateway/route_params.rb +23 -0
  88. data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +115 -0
  89. data/lib/datadog/appsec/contrib/sinatra/integration.rb +41 -0
  90. data/lib/datadog/appsec/contrib/sinatra/patcher.rb +166 -0
  91. data/lib/datadog/appsec/contrib/sinatra/reactive/routed.rb +61 -0
  92. data/lib/datadog/appsec/contrib/sinatra/request_middleware.rb +20 -0
  93. data/lib/datadog/appsec/event.rb +169 -0
  94. data/lib/datadog/appsec/ext.rb +10 -0
  95. data/lib/datadog/appsec/extensions.rb +15 -0
  96. data/lib/datadog/appsec/instrumentation/gateway/argument.rb +22 -0
  97. data/lib/datadog/appsec/instrumentation/gateway.rb +64 -0
  98. data/lib/datadog/appsec/instrumentation.rb +9 -0
  99. data/lib/datadog/appsec/monitor/gateway/watcher.rb +67 -0
  100. data/lib/datadog/appsec/monitor/reactive/set_user.rb +58 -0
  101. data/lib/datadog/appsec/monitor.rb +11 -0
  102. data/lib/datadog/appsec/processor/actions.rb +49 -0
  103. data/lib/datadog/appsec/processor/rule_loader.rb +123 -0
  104. data/lib/datadog/appsec/processor/rule_merger.rb +152 -0
  105. data/lib/datadog/appsec/processor.rb +171 -0
  106. data/lib/datadog/appsec/rate_limiter.rb +58 -0
  107. data/lib/datadog/appsec/reactive/address_hash.rb +22 -0
  108. data/lib/datadog/appsec/reactive/engine.rb +47 -0
  109. data/lib/datadog/appsec/reactive/operation.rb +68 -0
  110. data/lib/datadog/appsec/reactive/subscriber.rb +19 -0
  111. data/lib/datadog/appsec/remote.rb +129 -0
  112. data/lib/datadog/appsec/response.rb +151 -0
  113. data/lib/datadog/appsec/sample_rate.rb +21 -0
  114. data/lib/datadog/appsec/scope.rb +61 -0
  115. data/lib/datadog/appsec/utils/http/media_range.rb +199 -0
  116. data/lib/datadog/appsec/utils/http/media_type.rb +85 -0
  117. data/lib/datadog/appsec/utils/http.rb +11 -0
  118. data/lib/datadog/appsec/utils.rb +9 -0
  119. data/lib/datadog/appsec.rb +60 -0
  120. data/lib/datadog/core/backport.rb +51 -0
  121. data/lib/datadog/core/buffer/cruby.rb +55 -0
  122. data/lib/datadog/core/buffer/random.rb +134 -0
  123. data/lib/datadog/core/buffer/thread_safe.rb +58 -0
  124. data/lib/datadog/core/chunker.rb +35 -0
  125. data/lib/datadog/core/configuration/agent_settings_resolver.rb +405 -0
  126. data/lib/datadog/core/configuration/base.rb +89 -0
  127. data/lib/datadog/core/configuration/components.rb +173 -0
  128. data/lib/datadog/core/configuration/ext.rb +47 -0
  129. data/lib/datadog/core/configuration/option.rb +317 -0
  130. data/lib/datadog/core/configuration/option_definition.rb +176 -0
  131. data/lib/datadog/core/configuration/options.rb +128 -0
  132. data/lib/datadog/core/configuration/settings.rb +649 -0
  133. data/lib/datadog/core/configuration.rb +293 -0
  134. data/lib/datadog/core/diagnostics/environment_logger.rb +182 -0
  135. data/lib/datadog/core/diagnostics/health.rb +19 -0
  136. data/lib/datadog/core/encoding.rb +72 -0
  137. data/lib/datadog/core/environment/cgroup.rb +4 -5
  138. data/lib/datadog/core/environment/class_count.rb +2 -1
  139. data/lib/datadog/core/environment/container.rb +3 -5
  140. data/lib/datadog/core/environment/execution.rb +103 -0
  141. data/lib/datadog/core/environment/ext.rb +30 -11
  142. data/lib/datadog/core/environment/gc.rb +2 -1
  143. data/lib/datadog/core/environment/identity.rb +69 -6
  144. data/lib/datadog/core/environment/platform.rb +38 -0
  145. data/lib/datadog/core/environment/socket.rb +9 -2
  146. data/lib/datadog/core/environment/thread_count.rb +2 -1
  147. data/lib/datadog/core/environment/variable_helpers.rb +32 -21
  148. data/lib/datadog/core/environment/vm_cache.rb +19 -1
  149. data/lib/datadog/core/environment/yjit.rb +58 -0
  150. data/lib/datadog/core/error.rb +100 -0
  151. data/lib/datadog/core/extensions.rb +16 -0
  152. data/lib/datadog/core/git/ext.rb +37 -0
  153. data/lib/datadog/core/header_collection.rb +43 -0
  154. data/lib/datadog/core/logger.rb +44 -0
  155. data/lib/datadog/core/logging/ext.rb +13 -0
  156. data/lib/datadog/core/metrics/client.rb +197 -0
  157. data/lib/datadog/core/metrics/ext.rb +18 -0
  158. data/lib/datadog/core/metrics/helpers.rb +25 -0
  159. data/lib/datadog/core/metrics/logging.rb +42 -0
  160. data/lib/datadog/core/metrics/metric.rb +14 -0
  161. data/lib/datadog/core/metrics/options.rb +48 -0
  162. data/lib/datadog/core/pin.rb +73 -0
  163. data/lib/datadog/core/remote/client/capabilities.rb +62 -0
  164. data/lib/datadog/core/remote/client.rb +232 -0
  165. data/lib/datadog/core/remote/component.rb +149 -0
  166. data/lib/datadog/core/remote/configuration/content.rb +111 -0
  167. data/lib/datadog/core/remote/configuration/digest.rb +62 -0
  168. data/lib/datadog/core/remote/configuration/path.rb +90 -0
  169. data/lib/datadog/core/remote/configuration/repository.rb +294 -0
  170. data/lib/datadog/core/remote/configuration/target.rb +74 -0
  171. data/lib/datadog/core/remote/configuration.rb +18 -0
  172. data/lib/datadog/core/remote/dispatcher.rb +59 -0
  173. data/lib/datadog/core/remote/ext.rb +12 -0
  174. data/lib/datadog/core/remote/negotiation.rb +70 -0
  175. data/lib/datadog/core/remote/transport/config.rb +60 -0
  176. data/lib/datadog/core/remote/transport/http/api/instance.rb +39 -0
  177. data/lib/datadog/core/remote/transport/http/api/spec.rb +21 -0
  178. data/lib/datadog/core/remote/transport/http/api.rb +58 -0
  179. data/lib/datadog/core/remote/transport/http/builder.rb +219 -0
  180. data/lib/datadog/core/remote/transport/http/client.rb +48 -0
  181. data/lib/datadog/core/remote/transport/http/config.rb +280 -0
  182. data/lib/datadog/core/remote/transport/http/negotiation.rb +146 -0
  183. data/lib/datadog/core/remote/transport/http.rb +179 -0
  184. data/lib/datadog/core/remote/transport/negotiation.rb +62 -0
  185. data/lib/datadog/core/remote/worker.rb +99 -0
  186. data/lib/datadog/core/remote.rb +24 -0
  187. data/lib/datadog/core/runtime/ext.rb +38 -0
  188. data/lib/datadog/core/runtime/metrics.rb +183 -0
  189. data/lib/datadog/core/telemetry/client.rb +87 -0
  190. data/lib/datadog/core/telemetry/collector.rb +240 -0
  191. data/lib/datadog/core/telemetry/emitter.rb +48 -0
  192. data/lib/datadog/core/telemetry/event.rb +82 -0
  193. data/lib/datadog/core/telemetry/ext.rb +12 -0
  194. data/lib/datadog/core/telemetry/heartbeat.rb +35 -0
  195. data/lib/datadog/core/telemetry/http/adapters/net.rb +111 -0
  196. data/lib/datadog/core/telemetry/http/env.rb +20 -0
  197. data/lib/datadog/core/telemetry/http/ext.rb +22 -0
  198. data/lib/datadog/core/telemetry/http/response.rb +64 -0
  199. data/lib/datadog/core/telemetry/http/transport.rb +56 -0
  200. data/lib/datadog/core/telemetry/v1/app_event.rb +52 -0
  201. data/lib/datadog/core/telemetry/v1/application.rb +92 -0
  202. data/lib/datadog/core/telemetry/v1/configuration.rb +25 -0
  203. data/lib/datadog/core/telemetry/v1/dependency.rb +43 -0
  204. data/lib/datadog/core/telemetry/v1/host.rb +59 -0
  205. data/lib/datadog/core/telemetry/v1/integration.rb +64 -0
  206. data/lib/datadog/core/telemetry/v1/product.rb +36 -0
  207. data/lib/datadog/core/telemetry/v1/telemetry_request.rb +106 -0
  208. data/lib/datadog/core/telemetry/v2/app_client_configuration_change.rb +41 -0
  209. data/lib/datadog/core/telemetry/v2/request.rb +29 -0
  210. data/lib/datadog/core/transport/ext.rb +47 -0
  211. data/lib/datadog/core/transport/http/adapters/net.rb +168 -0
  212. data/lib/datadog/core/transport/http/adapters/registry.rb +29 -0
  213. data/lib/datadog/core/transport/http/adapters/test.rb +89 -0
  214. data/lib/datadog/core/transport/http/adapters/unix_socket.rb +83 -0
  215. data/lib/datadog/core/transport/http/api/endpoint.rb +31 -0
  216. data/lib/datadog/core/transport/http/api/fallbacks.rb +26 -0
  217. data/lib/datadog/core/transport/http/api/map.rb +18 -0
  218. data/lib/datadog/core/transport/http/env.rb +62 -0
  219. data/lib/datadog/core/transport/http/response.rb +60 -0
  220. data/lib/datadog/core/transport/parcel.rb +22 -0
  221. data/lib/datadog/core/transport/request.rb +17 -0
  222. data/lib/datadog/core/transport/response.rb +64 -0
  223. data/lib/datadog/core/utils/compression.rb +36 -0
  224. data/lib/datadog/core/utils/duration.rb +52 -0
  225. data/lib/datadog/core/utils/forking.rb +61 -0
  226. data/lib/datadog/core/utils/hash.rb +79 -0
  227. data/lib/datadog/core/utils/network.rb +140 -0
  228. data/lib/datadog/core/utils/only_once.rb +42 -0
  229. data/lib/datadog/core/utils/safe_dup.rb +50 -0
  230. data/lib/datadog/core/utils/sequence.rb +26 -0
  231. data/lib/datadog/core/utils/time.rb +52 -0
  232. data/lib/datadog/core/utils.rb +92 -0
  233. data/lib/datadog/core/vendor/ipaddr.rb +78 -0
  234. data/lib/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rb +118 -0
  235. data/lib/datadog/core/vendor/multipart-post/multipart/post/multipartable.rb +59 -0
  236. data/lib/datadog/core/vendor/multipart-post/multipart/post/parts.rb +137 -0
  237. data/lib/datadog/core/vendor/multipart-post/multipart/post/version.rb +11 -0
  238. data/lib/datadog/core/vendor/multipart-post/multipart/post.rb +10 -0
  239. data/lib/datadog/core/vendor/multipart-post/multipart.rb +14 -0
  240. data/lib/datadog/core/vendor/multipart-post/net/http/post/multipart.rb +34 -0
  241. data/lib/datadog/core/worker.rb +24 -0
  242. data/lib/datadog/core/workers/async.rb +183 -0
  243. data/lib/datadog/core/workers/interval_loop.rb +123 -0
  244. data/lib/datadog/core/workers/polling.rb +57 -0
  245. data/lib/datadog/core/workers/queue.rb +44 -0
  246. data/lib/datadog/core/workers/runtime_metrics.rb +62 -0
  247. data/lib/datadog/core.rb +45 -0
  248. data/lib/datadog/kit/appsec/events.rb +169 -0
  249. data/lib/datadog/kit/enable_core_dumps.rb +49 -0
  250. data/lib/datadog/kit/identity.rb +104 -0
  251. data/lib/datadog/kit.rb +11 -0
  252. data/lib/datadog/opentelemetry/api/context.rb +193 -0
  253. data/lib/datadog/opentelemetry/api/trace/span.rb +14 -0
  254. data/lib/datadog/opentelemetry/sdk/configurator.rb +37 -0
  255. data/lib/datadog/opentelemetry/sdk/id_generator.rb +26 -0
  256. data/lib/datadog/opentelemetry/sdk/propagator.rb +91 -0
  257. data/lib/datadog/opentelemetry/sdk/span_processor.rb +134 -0
  258. data/lib/datadog/opentelemetry/sdk/trace/span.rb +167 -0
  259. data/lib/datadog/opentelemetry/trace.rb +58 -0
  260. data/lib/datadog/opentelemetry.rb +48 -0
  261. data/lib/datadog/opentracer/binary_propagator.rb +26 -0
  262. data/lib/datadog/opentracer/carrier.rb +9 -0
  263. data/lib/datadog/opentracer/distributed_headers.rb +54 -0
  264. data/lib/datadog/opentracer/global_tracer.rb +17 -0
  265. data/lib/datadog/opentracer/propagator.rb +26 -0
  266. data/lib/datadog/opentracer/rack_propagator.rb +71 -0
  267. data/lib/datadog/opentracer/scope.rb +18 -0
  268. data/lib/datadog/opentracer/scope_manager.rb +9 -0
  269. data/lib/datadog/opentracer/span.rb +99 -0
  270. data/lib/datadog/opentracer/span_context.rb +19 -0
  271. data/lib/datadog/opentracer/span_context_factory.rb +27 -0
  272. data/lib/datadog/opentracer/text_map_propagator.rb +87 -0
  273. data/lib/datadog/opentracer/thread_local_scope.rb +34 -0
  274. data/lib/datadog/opentracer/thread_local_scope_manager.rb +64 -0
  275. data/lib/datadog/opentracer/tracer.rb +212 -0
  276. data/lib/datadog/opentracer.rb +33 -0
  277. data/lib/datadog/profiling/collectors/code_provenance.rb +113 -0
  278. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +113 -0
  279. data/lib/datadog/profiling/collectors/dynamic_sampling_rate.rb +14 -0
  280. data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +68 -0
  281. data/lib/datadog/profiling/collectors/stack.rb +13 -0
  282. data/lib/datadog/profiling/collectors/thread_context.rb +61 -0
  283. data/lib/datadog/profiling/component.rb +250 -0
  284. data/lib/datadog/profiling/diagnostics/environment_logger.rb +39 -0
  285. data/lib/datadog/profiling/exporter.rb +87 -0
  286. data/lib/datadog/profiling/ext/forking.rb +96 -0
  287. data/lib/datadog/profiling/ext.rb +33 -0
  288. data/lib/datadog/profiling/flush.rb +40 -0
  289. data/lib/datadog/profiling/http_transport.rb +143 -0
  290. data/lib/datadog/profiling/load_native_extension.rb +26 -0
  291. data/lib/datadog/profiling/native_extension.rb +20 -0
  292. data/lib/datadog/profiling/preload.rb +5 -0
  293. data/lib/datadog/profiling/profiler.rb +62 -0
  294. data/lib/datadog/profiling/scheduler.rb +137 -0
  295. data/lib/datadog/profiling/stack_recorder.rb +56 -0
  296. data/lib/datadog/profiling/tag_builder.rb +53 -0
  297. data/lib/datadog/profiling/tasks/exec.rb +48 -0
  298. data/lib/datadog/profiling/tasks/help.rb +16 -0
  299. data/lib/datadog/profiling/tasks/setup.rb +58 -0
  300. data/lib/datadog/profiling.rb +150 -0
  301. data/lib/datadog/tracing/analytics.rb +25 -0
  302. data/lib/datadog/tracing/buffer.rb +127 -0
  303. data/lib/datadog/tracing/client_ip.rb +61 -0
  304. data/lib/datadog/tracing/component.rb +235 -0
  305. data/lib/datadog/tracing/configuration/agent_settings_resolver.rb +13 -0
  306. data/lib/datadog/tracing/configuration/dynamic/option.rb +71 -0
  307. data/lib/datadog/tracing/configuration/dynamic.rb +64 -0
  308. data/lib/datadog/tracing/configuration/ext.rb +109 -0
  309. data/lib/datadog/tracing/configuration/http.rb +74 -0
  310. data/lib/datadog/tracing/configuration/settings.rb +501 -0
  311. data/lib/datadog/tracing/context.rb +68 -0
  312. data/lib/datadog/tracing/context_provider.rb +80 -0
  313. data/lib/datadog/tracing/contrib/action_cable/configuration/settings.rb +38 -0
  314. data/lib/datadog/tracing/contrib/action_cable/event.rb +71 -0
  315. data/lib/datadog/tracing/contrib/action_cable/events/broadcast.rb +56 -0
  316. data/lib/datadog/tracing/contrib/action_cable/events/perform_action.rb +61 -0
  317. data/lib/datadog/tracing/contrib/action_cable/events/transmit.rb +57 -0
  318. data/lib/datadog/tracing/contrib/action_cable/events.rb +37 -0
  319. data/lib/datadog/tracing/contrib/action_cable/ext.rb +32 -0
  320. data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +88 -0
  321. data/lib/datadog/tracing/contrib/action_cable/integration.rb +48 -0
  322. data/lib/datadog/tracing/contrib/action_cable/patcher.rb +31 -0
  323. data/lib/datadog/tracing/contrib/action_mailer/configuration/settings.rb +39 -0
  324. data/lib/datadog/tracing/contrib/action_mailer/event.rb +52 -0
  325. data/lib/datadog/tracing/contrib/action_mailer/events/deliver.rb +58 -0
  326. data/lib/datadog/tracing/contrib/action_mailer/events/process.rb +45 -0
  327. data/lib/datadog/tracing/contrib/action_mailer/events.rb +34 -0
  328. data/lib/datadog/tracing/contrib/action_mailer/ext.rb +33 -0
  329. data/lib/datadog/tracing/contrib/action_mailer/integration.rb +48 -0
  330. data/lib/datadog/tracing/contrib/action_mailer/patcher.rb +29 -0
  331. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +136 -0
  332. data/lib/datadog/tracing/contrib/action_pack/action_controller/patcher.rb +29 -0
  333. data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +49 -0
  334. data/lib/datadog/tracing/contrib/action_pack/ext.rb +22 -0
  335. data/lib/datadog/tracing/contrib/action_pack/integration.rb +48 -0
  336. data/lib/datadog/tracing/contrib/action_pack/patcher.rb +27 -0
  337. data/lib/datadog/tracing/contrib/action_pack/utils.rb +38 -0
  338. data/lib/datadog/tracing/contrib/action_view/configuration/settings.rb +37 -0
  339. data/lib/datadog/tracing/contrib/action_view/event.rb +35 -0
  340. data/lib/datadog/tracing/contrib/action_view/events/render_partial.rb +52 -0
  341. data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +55 -0
  342. data/lib/datadog/tracing/contrib/action_view/events.rb +34 -0
  343. data/lib/datadog/tracing/contrib/action_view/ext.rb +24 -0
  344. data/lib/datadog/tracing/contrib/action_view/instrumentation/partial_renderer.rb +76 -0
  345. data/lib/datadog/tracing/contrib/action_view/instrumentation/template_renderer.rb +89 -0
  346. data/lib/datadog/tracing/contrib/action_view/integration.rb +55 -0
  347. data/lib/datadog/tracing/contrib/action_view/patcher.rb +45 -0
  348. data/lib/datadog/tracing/contrib/action_view/utils.rb +34 -0
  349. data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +43 -0
  350. data/lib/datadog/tracing/contrib/active_job/event.rb +58 -0
  351. data/lib/datadog/tracing/contrib/active_job/events/discard.rb +48 -0
  352. data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +47 -0
  353. data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +47 -0
  354. data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +49 -0
  355. data/lib/datadog/tracing/contrib/active_job/events/perform.rb +47 -0
  356. data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +48 -0
  357. data/lib/datadog/tracing/contrib/active_job/events.rb +42 -0
  358. data/lib/datadog/tracing/contrib/active_job/ext.rb +39 -0
  359. data/lib/datadog/tracing/contrib/active_job/integration.rb +48 -0
  360. data/lib/datadog/tracing/contrib/active_job/log_injection.rb +24 -0
  361. data/lib/datadog/tracing/contrib/active_job/patcher.rb +36 -0
  362. data/lib/datadog/tracing/contrib/active_model_serializers/configuration/settings.rb +36 -0
  363. data/lib/datadog/tracing/contrib/active_model_serializers/event.rb +68 -0
  364. data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +43 -0
  365. data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +45 -0
  366. data/lib/datadog/tracing/contrib/active_model_serializers/events.rb +34 -0
  367. data/lib/datadog/tracing/contrib/active_model_serializers/ext.rb +24 -0
  368. data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +43 -0
  369. data/lib/datadog/tracing/contrib/active_model_serializers/patcher.rb +32 -0
  370. data/lib/datadog/tracing/contrib/active_record/configuration/makara_resolver.rb +34 -0
  371. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +143 -0
  372. data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +46 -0
  373. data/lib/datadog/tracing/contrib/active_record/event.rb +30 -0
  374. data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +56 -0
  375. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +75 -0
  376. data/lib/datadog/tracing/contrib/active_record/events.rb +34 -0
  377. data/lib/datadog/tracing/contrib/active_record/ext.rb +29 -0
  378. data/lib/datadog/tracing/contrib/active_record/integration.rb +54 -0
  379. data/lib/datadog/tracing/contrib/active_record/patcher.rb +27 -0
  380. data/lib/datadog/tracing/contrib/active_record/utils.rb +126 -0
  381. data/lib/datadog/tracing/contrib/active_record/vendor/connection_specification.rb +305 -0
  382. data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +186 -0
  383. data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +76 -0
  384. data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +47 -0
  385. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +45 -0
  386. data/lib/datadog/tracing/contrib/active_support/ext.rb +31 -0
  387. data/lib/datadog/tracing/contrib/active_support/integration.rb +49 -0
  388. data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +71 -0
  389. data/lib/datadog/tracing/contrib/active_support/notifications/subscriber.rb +71 -0
  390. data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +162 -0
  391. data/lib/datadog/tracing/contrib/active_support/patcher.rb +27 -0
  392. data/lib/datadog/tracing/contrib/analytics.rb +29 -0
  393. data/lib/datadog/tracing/contrib/auto_instrument.rb +53 -0
  394. data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +51 -0
  395. data/lib/datadog/tracing/contrib/aws/ext.rb +49 -0
  396. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +119 -0
  397. data/lib/datadog/tracing/contrib/aws/integration.rb +45 -0
  398. data/lib/datadog/tracing/contrib/aws/parsed_context.rb +62 -0
  399. data/lib/datadog/tracing/contrib/aws/patcher.rb +57 -0
  400. data/lib/datadog/tracing/contrib/aws/service/base.rb +16 -0
  401. data/lib/datadog/tracing/contrib/aws/service/dynamodb.rb +22 -0
  402. data/lib/datadog/tracing/contrib/aws/service/eventbridge.rb +22 -0
  403. data/lib/datadog/tracing/contrib/aws/service/kinesis.rb +32 -0
  404. data/lib/datadog/tracing/contrib/aws/service/s3.rb +22 -0
  405. data/lib/datadog/tracing/contrib/aws/service/sns.rb +30 -0
  406. data/lib/datadog/tracing/contrib/aws/service/sqs.rb +27 -0
  407. data/lib/datadog/tracing/contrib/aws/service/states.rb +40 -0
  408. data/lib/datadog/tracing/contrib/aws/services.rb +137 -0
  409. data/lib/datadog/tracing/contrib/concurrent_ruby/configuration/settings.rb +24 -0
  410. data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +53 -0
  411. data/lib/datadog/tracing/contrib/concurrent_ruby/ext.rb +16 -0
  412. data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +20 -0
  413. data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +42 -0
  414. data/lib/datadog/tracing/contrib/concurrent_ruby/patcher.rb +39 -0
  415. data/lib/datadog/tracing/contrib/concurrent_ruby/promises_future_patch.rb +22 -0
  416. data/lib/datadog/tracing/contrib/configurable.rb +102 -0
  417. data/lib/datadog/tracing/contrib/configuration/resolver.rb +85 -0
  418. data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +43 -0
  419. data/lib/datadog/tracing/contrib/configuration/settings.rb +39 -0
  420. data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +56 -0
  421. data/lib/datadog/tracing/contrib/dalli/ext.rb +39 -0
  422. data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +73 -0
  423. data/lib/datadog/tracing/contrib/dalli/integration.rb +50 -0
  424. data/lib/datadog/tracing/contrib/dalli/patcher.rb +28 -0
  425. data/lib/datadog/tracing/contrib/dalli/quantize.rb +24 -0
  426. data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +44 -0
  427. data/lib/datadog/tracing/contrib/delayed_job/ext.rb +28 -0
  428. data/lib/datadog/tracing/contrib/delayed_job/integration.rb +41 -0
  429. data/lib/datadog/tracing/contrib/delayed_job/patcher.rb +37 -0
  430. data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +108 -0
  431. data/lib/datadog/tracing/contrib/delayed_job/server_internal_tracer/worker.rb +34 -0
  432. data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +52 -0
  433. data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +33 -0
  434. data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +48 -0
  435. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +160 -0
  436. data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +85 -0
  437. data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +54 -0
  438. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +221 -0
  439. data/lib/datadog/tracing/contrib/ethon/ext.rb +31 -0
  440. data/lib/datadog/tracing/contrib/ethon/integration.rb +46 -0
  441. data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +102 -0
  442. data/lib/datadog/tracing/contrib/ethon/patcher.rb +30 -0
  443. data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +56 -0
  444. data/lib/datadog/tracing/contrib/excon/ext.rb +28 -0
  445. data/lib/datadog/tracing/contrib/excon/integration.rb +46 -0
  446. data/lib/datadog/tracing/contrib/excon/middleware.rb +192 -0
  447. data/lib/datadog/tracing/contrib/excon/patcher.rb +31 -0
  448. data/lib/datadog/tracing/contrib/ext.rb +55 -0
  449. data/lib/datadog/tracing/contrib/extensions.rb +229 -0
  450. data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +61 -0
  451. data/lib/datadog/tracing/contrib/faraday/connection.rb +22 -0
  452. data/lib/datadog/tracing/contrib/faraday/ext.rb +28 -0
  453. data/lib/datadog/tracing/contrib/faraday/integration.rb +46 -0
  454. data/lib/datadog/tracing/contrib/faraday/middleware.rb +110 -0
  455. data/lib/datadog/tracing/contrib/faraday/patcher.rb +54 -0
  456. data/lib/datadog/tracing/contrib/faraday/rack_builder.rb +22 -0
  457. data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +44 -0
  458. data/lib/datadog/tracing/contrib/grape/endpoint.rb +248 -0
  459. data/lib/datadog/tracing/contrib/grape/ext.rb +28 -0
  460. data/lib/datadog/tracing/contrib/grape/instrumentation.rb +35 -0
  461. data/lib/datadog/tracing/contrib/grape/integration.rb +42 -0
  462. data/lib/datadog/tracing/contrib/grape/patcher.rb +33 -0
  463. data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +38 -0
  464. data/lib/datadog/tracing/contrib/graphql/ext.rb +19 -0
  465. data/lib/datadog/tracing/contrib/graphql/integration.rb +42 -0
  466. data/lib/datadog/tracing/contrib/graphql/patcher.rb +88 -0
  467. data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +78 -0
  468. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +119 -0
  469. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +107 -0
  470. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb +101 -0
  471. data/lib/datadog/tracing/contrib/grpc/distributed/fetcher.rb +26 -0
  472. data/lib/datadog/tracing/contrib/grpc/distributed/propagation.rb +42 -0
  473. data/lib/datadog/tracing/contrib/grpc/ext.rb +28 -0
  474. data/lib/datadog/tracing/contrib/grpc/formatting.rb +127 -0
  475. data/lib/datadog/tracing/contrib/grpc/integration.rb +48 -0
  476. data/lib/datadog/tracing/contrib/grpc/intercept_with_datadog.rb +53 -0
  477. data/lib/datadog/tracing/contrib/grpc/patcher.rb +34 -0
  478. data/lib/datadog/tracing/contrib/hanami/action_tracer.rb +47 -0
  479. data/lib/datadog/tracing/contrib/hanami/configuration/settings.rb +23 -0
  480. data/lib/datadog/tracing/contrib/hanami/ext.rb +24 -0
  481. data/lib/datadog/tracing/contrib/hanami/integration.rb +42 -0
  482. data/lib/datadog/tracing/contrib/hanami/patcher.rb +33 -0
  483. data/lib/datadog/tracing/contrib/hanami/plugin.rb +23 -0
  484. data/lib/datadog/tracing/contrib/hanami/renderer_policy_tracing.rb +41 -0
  485. data/lib/datadog/tracing/contrib/hanami/router_tracing.rb +44 -0
  486. data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +40 -0
  487. data/lib/datadog/tracing/contrib/http/configuration/settings.rb +74 -0
  488. data/lib/datadog/tracing/contrib/http/distributed/fetcher.rb +38 -0
  489. data/lib/datadog/tracing/contrib/http/distributed/propagation.rb +37 -0
  490. data/lib/datadog/tracing/contrib/http/ext.rb +28 -0
  491. data/lib/datadog/tracing/contrib/http/instrumentation.rb +158 -0
  492. data/lib/datadog/tracing/contrib/http/integration.rb +49 -0
  493. data/lib/datadog/tracing/contrib/http/patcher.rb +30 -0
  494. data/lib/datadog/tracing/contrib/http_annotation_helper.rb +17 -0
  495. data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +74 -0
  496. data/lib/datadog/tracing/contrib/httpclient/ext.rb +29 -0
  497. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +135 -0
  498. data/lib/datadog/tracing/contrib/httpclient/integration.rb +46 -0
  499. data/lib/datadog/tracing/contrib/httpclient/patcher.rb +40 -0
  500. data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +74 -0
  501. data/lib/datadog/tracing/contrib/httprb/ext.rb +28 -0
  502. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +145 -0
  503. data/lib/datadog/tracing/contrib/httprb/integration.rb +46 -0
  504. data/lib/datadog/tracing/contrib/httprb/patcher.rb +40 -0
  505. data/lib/datadog/tracing/contrib/integration.rb +78 -0
  506. data/lib/datadog/tracing/contrib/kafka/configuration/settings.rb +38 -0
  507. data/lib/datadog/tracing/contrib/kafka/consumer_event.rb +19 -0
  508. data/lib/datadog/tracing/contrib/kafka/consumer_group_event.rb +18 -0
  509. data/lib/datadog/tracing/contrib/kafka/event.rb +53 -0
  510. data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +40 -0
  511. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +47 -0
  512. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +45 -0
  513. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +45 -0
  514. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +35 -0
  515. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +35 -0
  516. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +35 -0
  517. data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +39 -0
  518. data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +42 -0
  519. data/lib/datadog/tracing/contrib/kafka/events.rb +48 -0
  520. data/lib/datadog/tracing/contrib/kafka/ext.rb +54 -0
  521. data/lib/datadog/tracing/contrib/kafka/integration.rb +42 -0
  522. data/lib/datadog/tracing/contrib/kafka/patcher.rb +29 -0
  523. data/lib/datadog/tracing/contrib/lograge/configuration/settings.rb +24 -0
  524. data/lib/datadog/tracing/contrib/lograge/ext.rb +15 -0
  525. data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +31 -0
  526. data/lib/datadog/tracing/contrib/lograge/integration.rb +48 -0
  527. data/lib/datadog/tracing/contrib/lograge/patcher.rb +29 -0
  528. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +54 -0
  529. data/lib/datadog/tracing/contrib/mongodb/ext.rb +37 -0
  530. data/lib/datadog/tracing/contrib/mongodb/instrumentation.rb +47 -0
  531. data/lib/datadog/tracing/contrib/mongodb/integration.rb +46 -0
  532. data/lib/datadog/tracing/contrib/mongodb/parsers.rb +47 -0
  533. data/lib/datadog/tracing/contrib/mongodb/patcher.rb +34 -0
  534. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +139 -0
  535. data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +58 -0
  536. data/lib/datadog/tracing/contrib/mysql2/ext.rb +27 -0
  537. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +94 -0
  538. data/lib/datadog/tracing/contrib/mysql2/integration.rb +41 -0
  539. data/lib/datadog/tracing/contrib/mysql2/patcher.rb +31 -0
  540. data/lib/datadog/tracing/contrib/opensearch/configuration/settings.rb +52 -0
  541. data/lib/datadog/tracing/contrib/opensearch/ext.rb +37 -0
  542. data/lib/datadog/tracing/contrib/opensearch/integration.rb +44 -0
  543. data/lib/datadog/tracing/contrib/opensearch/patcher.rb +135 -0
  544. data/lib/datadog/tracing/contrib/opensearch/quantize.rb +81 -0
  545. data/lib/datadog/tracing/contrib/patchable.rb +109 -0
  546. data/lib/datadog/tracing/contrib/patcher.rb +83 -0
  547. data/lib/datadog/tracing/contrib/pg/configuration/settings.rb +63 -0
  548. data/lib/datadog/tracing/contrib/pg/ext.rb +34 -0
  549. data/lib/datadog/tracing/contrib/pg/instrumentation.rb +204 -0
  550. data/lib/datadog/tracing/contrib/pg/integration.rb +41 -0
  551. data/lib/datadog/tracing/contrib/pg/patcher.rb +31 -0
  552. data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +50 -0
  553. data/lib/datadog/tracing/contrib/presto/ext.rb +37 -0
  554. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +136 -0
  555. data/lib/datadog/tracing/contrib/presto/integration.rb +41 -0
  556. data/lib/datadog/tracing/contrib/presto/patcher.rb +35 -0
  557. data/lib/datadog/tracing/contrib/propagation/sql_comment/comment.rb +41 -0
  558. data/lib/datadog/tracing/contrib/propagation/sql_comment/ext.rb +33 -0
  559. data/lib/datadog/tracing/contrib/propagation/sql_comment/mode.rb +28 -0
  560. data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +53 -0
  561. data/lib/datadog/tracing/contrib/qless/configuration/settings.rb +44 -0
  562. data/lib/datadog/tracing/contrib/qless/ext.rb +26 -0
  563. data/lib/datadog/tracing/contrib/qless/integration.rb +41 -0
  564. data/lib/datadog/tracing/contrib/qless/patcher.rb +36 -0
  565. data/lib/datadog/tracing/contrib/qless/qless_job.rb +75 -0
  566. data/lib/datadog/tracing/contrib/qless/tracer_cleaner.rb +30 -0
  567. data/lib/datadog/tracing/contrib/que/configuration/settings.rb +56 -0
  568. data/lib/datadog/tracing/contrib/que/ext.rb +32 -0
  569. data/lib/datadog/tracing/contrib/que/integration.rb +44 -0
  570. data/lib/datadog/tracing/contrib/que/patcher.rb +26 -0
  571. data/lib/datadog/tracing/contrib/que/tracer.rb +63 -0
  572. data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +45 -0
  573. data/lib/datadog/tracing/contrib/racecar/event.rb +81 -0
  574. data/lib/datadog/tracing/contrib/racecar/events/batch.rb +36 -0
  575. data/lib/datadog/tracing/contrib/racecar/events/consume.rb +33 -0
  576. data/lib/datadog/tracing/contrib/racecar/events/message.rb +36 -0
  577. data/lib/datadog/tracing/contrib/racecar/events.rb +36 -0
  578. data/lib/datadog/tracing/contrib/racecar/ext.rb +32 -0
  579. data/lib/datadog/tracing/contrib/racecar/integration.rb +42 -0
  580. data/lib/datadog/tracing/contrib/racecar/patcher.rb +29 -0
  581. data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +53 -0
  582. data/lib/datadog/tracing/contrib/rack/ext.rb +30 -0
  583. data/lib/datadog/tracing/contrib/rack/header_collection.rb +38 -0
  584. data/lib/datadog/tracing/contrib/rack/header_tagging.rb +63 -0
  585. data/lib/datadog/tracing/contrib/rack/integration.rb +48 -0
  586. data/lib/datadog/tracing/contrib/rack/middlewares.rb +308 -0
  587. data/lib/datadog/tracing/contrib/rack/patcher.rb +117 -0
  588. data/lib/datadog/tracing/contrib/rack/request_queue.rb +46 -0
  589. data/lib/datadog/tracing/contrib/rails/auto_instrument_railtie.rb +10 -0
  590. data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +83 -0
  591. data/lib/datadog/tracing/contrib/rails/ext.rb +19 -0
  592. data/lib/datadog/tracing/contrib/rails/framework.rb +148 -0
  593. data/lib/datadog/tracing/contrib/rails/integration.rb +47 -0
  594. data/lib/datadog/tracing/contrib/rails/log_injection.rb +27 -0
  595. data/lib/datadog/tracing/contrib/rails/middlewares.rb +46 -0
  596. data/lib/datadog/tracing/contrib/rails/patcher.rb +87 -0
  597. data/lib/datadog/tracing/contrib/rails/railtie.rb +17 -0
  598. data/lib/datadog/tracing/contrib/rails/utils.rb +28 -0
  599. data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +54 -0
  600. data/lib/datadog/tracing/contrib/rake/ext.rb +26 -0
  601. data/lib/datadog/tracing/contrib/rake/instrumentation.rb +101 -0
  602. data/lib/datadog/tracing/contrib/rake/integration.rb +41 -0
  603. data/lib/datadog/tracing/contrib/rake/patcher.rb +33 -0
  604. data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +47 -0
  605. data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +56 -0
  606. data/lib/datadog/tracing/contrib/redis/ext.rb +34 -0
  607. data/lib/datadog/tracing/contrib/redis/instrumentation.rb +51 -0
  608. data/lib/datadog/tracing/contrib/redis/integration.rb +78 -0
  609. data/lib/datadog/tracing/contrib/redis/patcher.rb +77 -0
  610. data/lib/datadog/tracing/contrib/redis/quantize.rb +80 -0
  611. data/lib/datadog/tracing/contrib/redis/tags.rb +68 -0
  612. data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +83 -0
  613. data/lib/datadog/tracing/contrib/redis/vendor/resolver.rb +160 -0
  614. data/lib/datadog/tracing/contrib/registerable.rb +50 -0
  615. data/lib/datadog/tracing/contrib/registry.rb +52 -0
  616. data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +43 -0
  617. data/lib/datadog/tracing/contrib/resque/ext.rb +21 -0
  618. data/lib/datadog/tracing/contrib/resque/integration.rb +46 -0
  619. data/lib/datadog/tracing/contrib/resque/patcher.rb +29 -0
  620. data/lib/datadog/tracing/contrib/resque/resque_job.rb +106 -0
  621. data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +54 -0
  622. data/lib/datadog/tracing/contrib/rest_client/ext.rb +27 -0
  623. data/lib/datadog/tracing/contrib/rest_client/integration.rb +41 -0
  624. data/lib/datadog/tracing/contrib/rest_client/patcher.rb +28 -0
  625. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +129 -0
  626. data/lib/datadog/tracing/contrib/roda/configuration/settings.rb +37 -0
  627. data/lib/datadog/tracing/contrib/roda/ext.rb +18 -0
  628. data/lib/datadog/tracing/contrib/roda/instrumentation.rb +76 -0
  629. data/lib/datadog/tracing/contrib/roda/integration.rb +45 -0
  630. data/lib/datadog/tracing/contrib/roda/patcher.rb +30 -0
  631. data/lib/datadog/tracing/contrib/semantic_logger/configuration/settings.rb +24 -0
  632. data/lib/datadog/tracing/contrib/semantic_logger/ext.rb +15 -0
  633. data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +35 -0
  634. data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +50 -0
  635. data/lib/datadog/tracing/contrib/semantic_logger/patcher.rb +29 -0
  636. data/lib/datadog/tracing/contrib/sequel/configuration/settings.rb +36 -0
  637. data/lib/datadog/tracing/contrib/sequel/database.rb +60 -0
  638. data/lib/datadog/tracing/contrib/sequel/dataset.rb +67 -0
  639. data/lib/datadog/tracing/contrib/sequel/ext.rb +22 -0
  640. data/lib/datadog/tracing/contrib/sequel/integration.rb +41 -0
  641. data/lib/datadog/tracing/contrib/sequel/patcher.rb +37 -0
  642. data/lib/datadog/tracing/contrib/sequel/utils.rb +88 -0
  643. data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +44 -0
  644. data/lib/datadog/tracing/contrib/shoryuken/ext.rb +26 -0
  645. data/lib/datadog/tracing/contrib/shoryuken/integration.rb +42 -0
  646. data/lib/datadog/tracing/contrib/shoryuken/patcher.rb +28 -0
  647. data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +65 -0
  648. data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +66 -0
  649. data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +52 -0
  650. data/lib/datadog/tracing/contrib/sidekiq/distributed/propagation.rb +38 -0
  651. data/lib/datadog/tracing/contrib/sidekiq/ext.rb +44 -0
  652. data/lib/datadog/tracing/contrib/sidekiq/integration.rb +59 -0
  653. data/lib/datadog/tracing/contrib/sidekiq/patcher.rb +90 -0
  654. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/heartbeat.rb +61 -0
  655. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/job_fetch.rb +36 -0
  656. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/redis_info.rb +34 -0
  657. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/scheduled_poller.rb +57 -0
  658. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/stop.rb +34 -0
  659. data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +118 -0
  660. data/lib/datadog/tracing/contrib/sidekiq/utils.rb +44 -0
  661. data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +43 -0
  662. data/lib/datadog/tracing/contrib/sinatra/env.rb +36 -0
  663. data/lib/datadog/tracing/contrib/sinatra/ext.rb +36 -0
  664. data/lib/datadog/tracing/contrib/sinatra/framework.rb +114 -0
  665. data/lib/datadog/tracing/contrib/sinatra/integration.rb +41 -0
  666. data/lib/datadog/tracing/contrib/sinatra/patcher.rb +75 -0
  667. data/lib/datadog/tracing/contrib/sinatra/tracer.rb +84 -0
  668. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +116 -0
  669. data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +42 -0
  670. data/lib/datadog/tracing/contrib/sneakers/ext.rb +26 -0
  671. data/lib/datadog/tracing/contrib/sneakers/integration.rb +44 -0
  672. data/lib/datadog/tracing/contrib/sneakers/patcher.rb +27 -0
  673. data/lib/datadog/tracing/contrib/sneakers/tracer.rb +60 -0
  674. data/lib/datadog/tracing/contrib/span_attribute_schema.rb +92 -0
  675. data/lib/datadog/tracing/contrib/status_code_matcher.rb +72 -0
  676. data/lib/datadog/tracing/contrib/stripe/configuration/settings.rb +36 -0
  677. data/lib/datadog/tracing/contrib/stripe/ext.rb +26 -0
  678. data/lib/datadog/tracing/contrib/stripe/integration.rb +43 -0
  679. data/lib/datadog/tracing/contrib/stripe/patcher.rb +28 -0
  680. data/lib/datadog/tracing/contrib/stripe/request.rb +67 -0
  681. data/lib/datadog/tracing/contrib/sucker_punch/configuration/settings.rb +38 -0
  682. data/lib/datadog/tracing/contrib/sucker_punch/exception_handler.rb +28 -0
  683. data/lib/datadog/tracing/contrib/sucker_punch/ext.rb +27 -0
  684. data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +102 -0
  685. data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +41 -0
  686. data/lib/datadog/tracing/contrib/sucker_punch/patcher.rb +35 -0
  687. data/lib/datadog/tracing/contrib/utils/database.rb +31 -0
  688. data/lib/datadog/tracing/contrib/utils/quantization/hash.rb +109 -0
  689. data/lib/datadog/tracing/contrib/utils/quantization/http.rb +177 -0
  690. data/lib/datadog/tracing/contrib.rb +81 -0
  691. data/lib/datadog/tracing/correlation.rb +128 -0
  692. data/lib/datadog/tracing/diagnostics/environment_logger.rb +165 -0
  693. data/lib/datadog/tracing/diagnostics/ext.rb +36 -0
  694. data/lib/datadog/tracing/diagnostics/health.rb +40 -0
  695. data/lib/datadog/tracing/distributed/b3_multi.rb +72 -0
  696. data/lib/datadog/tracing/distributed/b3_single.rb +68 -0
  697. data/lib/datadog/tracing/distributed/datadog.rb +199 -0
  698. data/lib/datadog/tracing/distributed/datadog_tags_codec.rb +84 -0
  699. data/lib/datadog/tracing/distributed/fetcher.rb +21 -0
  700. data/lib/datadog/tracing/distributed/headers/ext.rb +34 -0
  701. data/lib/datadog/tracing/distributed/helpers.rb +65 -0
  702. data/lib/datadog/tracing/distributed/none.rb +18 -0
  703. data/lib/datadog/tracing/distributed/propagation.rb +127 -0
  704. data/lib/datadog/tracing/distributed/trace_context.rb +415 -0
  705. data/lib/datadog/tracing/event.rb +74 -0
  706. data/lib/datadog/tracing/flush.rb +96 -0
  707. data/lib/datadog/tracing/metadata/analytics.rb +26 -0
  708. data/lib/datadog/tracing/metadata/errors.rb +24 -0
  709. data/lib/datadog/tracing/metadata/ext.rb +191 -0
  710. data/lib/datadog/tracing/metadata/tagging.rb +129 -0
  711. data/lib/datadog/tracing/metadata.rb +20 -0
  712. data/lib/datadog/tracing/pipeline/span_filter.rb +46 -0
  713. data/lib/datadog/tracing/pipeline/span_processor.rb +39 -0
  714. data/lib/datadog/tracing/pipeline.rb +61 -0
  715. data/lib/datadog/tracing/propagation/http.rb +14 -0
  716. data/lib/datadog/tracing/remote.rb +78 -0
  717. data/lib/datadog/tracing/runtime/metrics.rb +17 -0
  718. data/lib/datadog/tracing/sampling/all_sampler.rb +25 -0
  719. data/lib/datadog/tracing/sampling/ext.rb +56 -0
  720. data/lib/datadog/tracing/sampling/matcher.rb +68 -0
  721. data/lib/datadog/tracing/sampling/priority_sampler.rb +165 -0
  722. data/lib/datadog/tracing/sampling/rate_by_key_sampler.rb +94 -0
  723. data/lib/datadog/tracing/sampling/rate_by_service_sampler.rb +62 -0
  724. data/lib/datadog/tracing/sampling/rate_limiter.rb +186 -0
  725. data/lib/datadog/tracing/sampling/rate_sampler.rb +68 -0
  726. data/lib/datadog/tracing/sampling/rule.rb +72 -0
  727. data/lib/datadog/tracing/sampling/rule_sampler.rb +157 -0
  728. data/lib/datadog/tracing/sampling/sampler.rb +42 -0
  729. data/lib/datadog/tracing/sampling/span/ext.rb +25 -0
  730. data/lib/datadog/tracing/sampling/span/matcher.rb +89 -0
  731. data/lib/datadog/tracing/sampling/span/rule.rb +82 -0
  732. data/lib/datadog/tracing/sampling/span/rule_parser.rb +104 -0
  733. data/lib/datadog/tracing/sampling/span/sampler.rb +77 -0
  734. data/lib/datadog/tracing/span.rb +214 -0
  735. data/lib/datadog/tracing/span_operation.rb +505 -0
  736. data/lib/datadog/tracing/sync_writer.rb +67 -0
  737. data/lib/datadog/tracing/trace_digest.rb +177 -0
  738. data/lib/datadog/tracing/trace_operation.rb +486 -0
  739. data/lib/datadog/tracing/trace_segment.rb +220 -0
  740. data/lib/datadog/tracing/tracer.rb +541 -0
  741. data/lib/datadog/tracing/transport/http/api/instance.rb +37 -0
  742. data/lib/datadog/tracing/transport/http/api/spec.rb +19 -0
  743. data/lib/datadog/tracing/transport/http/api.rb +43 -0
  744. data/lib/datadog/tracing/transport/http/builder.rb +162 -0
  745. data/lib/datadog/tracing/transport/http/client.rb +57 -0
  746. data/lib/datadog/tracing/transport/http/statistics.rb +47 -0
  747. data/lib/datadog/tracing/transport/http/traces.rb +152 -0
  748. data/lib/datadog/tracing/transport/http.rb +124 -0
  749. data/lib/datadog/tracing/transport/io/client.rb +89 -0
  750. data/lib/datadog/tracing/transport/io/response.rb +27 -0
  751. data/lib/datadog/tracing/transport/io/traces.rb +101 -0
  752. data/lib/datadog/tracing/transport/io.rb +30 -0
  753. data/lib/datadog/tracing/transport/serializable_trace.rb +126 -0
  754. data/lib/datadog/tracing/transport/statistics.rb +77 -0
  755. data/lib/datadog/tracing/transport/trace_formatter.rb +209 -0
  756. data/lib/datadog/tracing/transport/traces.rb +224 -0
  757. data/lib/datadog/tracing/utils.rb +83 -0
  758. data/lib/datadog/tracing/workers/trace_writer.rb +194 -0
  759. data/lib/datadog/tracing/workers.rb +123 -0
  760. data/lib/datadog/tracing/writer.rb +186 -0
  761. data/lib/datadog/tracing.rb +142 -0
  762. data/lib/ddtrace/auto_instrument.rb +15 -4
  763. data/lib/ddtrace/auto_instrument_base.rb +2 -1
  764. data/lib/ddtrace/profiling/preload.rb +2 -4
  765. data/lib/ddtrace/transport/ext.rb +47 -0
  766. data/lib/ddtrace/version.rb +17 -16
  767. data/lib/ddtrace.rb +9 -50
  768. metadata +795 -545
  769. data/.editorconfig +0 -22
  770. data/.gitignore +0 -67
  771. data/.yardopts +0 -5
  772. data/CONTRIBUTING.md +0 -81
  773. data/ddtrace.gemspec +0 -56
  774. data/docs/DevelopmentGuide.md +0 -259
  775. data/docs/GettingStarted.md +0 -2626
  776. data/docs/ProfilingDevelopment.md +0 -107
  777. data/lib/datadog/ci/configuration/components.rb +0 -31
  778. data/lib/datadog/ci/configuration/settings.rb +0 -37
  779. data/lib/datadog/ci/context_flush.rb +0 -29
  780. data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +0 -31
  781. data/lib/datadog/ci/contrib/cucumber/ext.rb +0 -20
  782. data/lib/datadog/ci/contrib/cucumber/formatter.rb +0 -99
  783. data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +0 -27
  784. data/lib/datadog/ci/contrib/cucumber/integration.rb +0 -48
  785. data/lib/datadog/ci/contrib/cucumber/patcher.rb +0 -26
  786. data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +0 -31
  787. data/lib/datadog/ci/contrib/rspec/example.rb +0 -75
  788. data/lib/datadog/ci/contrib/rspec/ext.rb +0 -19
  789. data/lib/datadog/ci/contrib/rspec/integration.rb +0 -49
  790. data/lib/datadog/ci/contrib/rspec/patcher.rb +0 -26
  791. data/lib/datadog/ci/ext/app_types.rb +0 -10
  792. data/lib/datadog/ci/ext/environment.rb +0 -485
  793. data/lib/datadog/ci/ext/settings.rb +0 -11
  794. data/lib/datadog/ci/ext/test.rb +0 -36
  795. data/lib/datadog/ci/extensions.rb +0 -18
  796. data/lib/datadog/ci/test.rb +0 -81
  797. data/lib/datadog/ci.rb +0 -17
  798. data/lib/datadog/contrib.rb +0 -71
  799. data/lib/ddtrace/analytics.rb +0 -39
  800. data/lib/ddtrace/buffer.rb +0 -340
  801. data/lib/ddtrace/chunker.rb +0 -35
  802. data/lib/ddtrace/configuration/agent_settings_resolver.rb +0 -309
  803. data/lib/ddtrace/configuration/base.rb +0 -82
  804. data/lib/ddtrace/configuration/components.rb +0 -292
  805. data/lib/ddtrace/configuration/dependency_resolver.rb +0 -25
  806. data/lib/ddtrace/configuration/option.rb +0 -65
  807. data/lib/ddtrace/configuration/option_definition.rb +0 -122
  808. data/lib/ddtrace/configuration/option_definition_set.rb +0 -19
  809. data/lib/ddtrace/configuration/option_set.rb +0 -7
  810. data/lib/ddtrace/configuration/options.rb +0 -112
  811. data/lib/ddtrace/configuration/pin_setup.rb +0 -32
  812. data/lib/ddtrace/configuration/settings.rb +0 -413
  813. data/lib/ddtrace/configuration.rb +0 -195
  814. data/lib/ddtrace/context.rb +0 -334
  815. data/lib/ddtrace/context_flush.rb +0 -82
  816. data/lib/ddtrace/context_provider.rb +0 -62
  817. data/lib/ddtrace/contrib/action_cable/configuration/settings.rb +0 -31
  818. data/lib/ddtrace/contrib/action_cable/event.rb +0 -67
  819. data/lib/ddtrace/contrib/action_cable/events/broadcast.rb +0 -50
  820. data/lib/ddtrace/contrib/action_cable/events/perform_action.rb +0 -56
  821. data/lib/ddtrace/contrib/action_cable/events/transmit.rb +0 -51
  822. data/lib/ddtrace/contrib/action_cable/events.rb +0 -34
  823. data/lib/ddtrace/contrib/action_cable/ext.rb +0 -27
  824. data/lib/ddtrace/contrib/action_cable/instrumentation.rb +0 -78
  825. data/lib/ddtrace/contrib/action_cable/integration.rb +0 -46
  826. data/lib/ddtrace/contrib/action_cable/patcher.rb +0 -29
  827. data/lib/ddtrace/contrib/action_mailer/configuration/settings.rb +0 -32
  828. data/lib/ddtrace/contrib/action_mailer/event.rb +0 -50
  829. data/lib/ddtrace/contrib/action_mailer/events/deliver.rb +0 -54
  830. data/lib/ddtrace/contrib/action_mailer/events/process.rb +0 -41
  831. data/lib/ddtrace/contrib/action_mailer/events.rb +0 -31
  832. data/lib/ddtrace/contrib/action_mailer/ext.rb +0 -32
  833. data/lib/ddtrace/contrib/action_mailer/integration.rb +0 -45
  834. data/lib/ddtrace/contrib/action_mailer/patcher.rb +0 -27
  835. data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +0 -157
  836. data/lib/ddtrace/contrib/action_pack/action_controller/patcher.rb +0 -26
  837. data/lib/ddtrace/contrib/action_pack/configuration/settings.rb +0 -33
  838. data/lib/ddtrace/contrib/action_pack/ext.rb +0 -20
  839. data/lib/ddtrace/contrib/action_pack/integration.rb +0 -46
  840. data/lib/ddtrace/contrib/action_pack/patcher.rb +0 -24
  841. data/lib/ddtrace/contrib/action_pack/utils.rb +0 -37
  842. data/lib/ddtrace/contrib/action_view/configuration/settings.rb +0 -32
  843. data/lib/ddtrace/contrib/action_view/event.rb +0 -36
  844. data/lib/ddtrace/contrib/action_view/events/render_partial.rb +0 -47
  845. data/lib/ddtrace/contrib/action_view/events/render_template.rb +0 -50
  846. data/lib/ddtrace/contrib/action_view/events.rb +0 -31
  847. data/lib/ddtrace/contrib/action_view/ext.rb +0 -21
  848. data/lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb +0 -75
  849. data/lib/ddtrace/contrib/action_view/instrumentation/template_renderer.rb +0 -168
  850. data/lib/ddtrace/contrib/action_view/integration.rb +0 -53
  851. data/lib/ddtrace/contrib/action_view/patcher.rb +0 -48
  852. data/lib/ddtrace/contrib/action_view/utils.rb +0 -33
  853. data/lib/ddtrace/contrib/active_job/configuration/settings.rb +0 -33
  854. data/lib/ddtrace/contrib/active_job/event.rb +0 -54
  855. data/lib/ddtrace/contrib/active_job/events/discard.rb +0 -46
  856. data/lib/ddtrace/contrib/active_job/events/enqueue.rb +0 -45
  857. data/lib/ddtrace/contrib/active_job/events/enqueue_at.rb +0 -45
  858. data/lib/ddtrace/contrib/active_job/events/enqueue_retry.rb +0 -47
  859. data/lib/ddtrace/contrib/active_job/events/perform.rb +0 -45
  860. data/lib/ddtrace/contrib/active_job/events/retry_stopped.rb +0 -46
  861. data/lib/ddtrace/contrib/active_job/events.rb +0 -39
  862. data/lib/ddtrace/contrib/active_job/ext.rb +0 -32
  863. data/lib/ddtrace/contrib/active_job/integration.rb +0 -46
  864. data/lib/ddtrace/contrib/active_job/log_injection.rb +0 -21
  865. data/lib/ddtrace/contrib/active_job/patcher.rb +0 -33
  866. data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +0 -31
  867. data/lib/ddtrace/contrib/active_model_serializers/event.rb +0 -69
  868. data/lib/ddtrace/contrib/active_model_serializers/events/render.rb +0 -33
  869. data/lib/ddtrace/contrib/active_model_serializers/events/serialize.rb +0 -36
  870. data/lib/ddtrace/contrib/active_model_serializers/events.rb +0 -31
  871. data/lib/ddtrace/contrib/active_model_serializers/ext.rb +0 -21
  872. data/lib/ddtrace/contrib/active_model_serializers/integration.rb +0 -41
  873. data/lib/ddtrace/contrib/active_model_serializers/patcher.rb +0 -30
  874. data/lib/ddtrace/contrib/active_record/configuration/makara_resolver.rb +0 -31
  875. data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +0 -135
  876. data/lib/ddtrace/contrib/active_record/configuration/settings.rb +0 -36
  877. data/lib/ddtrace/contrib/active_record/event.rb +0 -31
  878. data/lib/ddtrace/contrib/active_record/events/instantiation.rb +0 -61
  879. data/lib/ddtrace/contrib/active_record/events/sql.rb +0 -69
  880. data/lib/ddtrace/contrib/active_record/events.rb +0 -31
  881. data/lib/ddtrace/contrib/active_record/ext.rb +0 -25
  882. data/lib/ddtrace/contrib/active_record/integration.rb +0 -54
  883. data/lib/ddtrace/contrib/active_record/patcher.rb +0 -24
  884. data/lib/ddtrace/contrib/active_record/utils.rb +0 -124
  885. data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +0 -259
  886. data/lib/ddtrace/contrib/active_support/cache/patcher.rb +0 -70
  887. data/lib/ddtrace/contrib/active_support/cache/redis.rb +0 -44
  888. data/lib/ddtrace/contrib/active_support/configuration/settings.rb +0 -31
  889. data/lib/ddtrace/contrib/active_support/ext.rb +0 -28
  890. data/lib/ddtrace/contrib/active_support/integration.rb +0 -47
  891. data/lib/ddtrace/contrib/active_support/notifications/event.rb +0 -76
  892. data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +0 -68
  893. data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +0 -164
  894. data/lib/ddtrace/contrib/active_support/patcher.rb +0 -24
  895. data/lib/ddtrace/contrib/analytics.rb +0 -25
  896. data/lib/ddtrace/contrib/auto_instrument.rb +0 -48
  897. data/lib/ddtrace/contrib/aws/configuration/settings.rb +0 -31
  898. data/lib/ddtrace/contrib/aws/ext.rb +0 -24
  899. data/lib/ddtrace/contrib/aws/instrumentation.rb +0 -91
  900. data/lib/ddtrace/contrib/aws/integration.rb +0 -43
  901. data/lib/ddtrace/contrib/aws/parsed_context.rb +0 -57
  902. data/lib/ddtrace/contrib/aws/patcher.rb +0 -54
  903. data/lib/ddtrace/contrib/aws/services.rb +0 -119
  904. data/lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb +0 -21
  905. data/lib/ddtrace/contrib/concurrent_ruby/context_composite_executor_service.rb +0 -42
  906. data/lib/ddtrace/contrib/concurrent_ruby/ext.rb +0 -13
  907. data/lib/ddtrace/contrib/concurrent_ruby/future_patch.rb +0 -24
  908. data/lib/ddtrace/contrib/concurrent_ruby/integration.rb +0 -39
  909. data/lib/ddtrace/contrib/concurrent_ruby/patcher.rb +0 -30
  910. data/lib/ddtrace/contrib/configurable.rb +0 -103
  911. data/lib/ddtrace/contrib/configuration/resolver.rb +0 -82
  912. data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +0 -40
  913. data/lib/ddtrace/contrib/configuration/settings.rb +0 -56
  914. data/lib/ddtrace/contrib/dalli/configuration/settings.rb +0 -31
  915. data/lib/ddtrace/contrib/dalli/ext.rb +0 -21
  916. data/lib/ddtrace/contrib/dalli/instrumentation.rb +0 -55
  917. data/lib/ddtrace/contrib/dalli/integration.rb +0 -39
  918. data/lib/ddtrace/contrib/dalli/patcher.rb +0 -26
  919. data/lib/ddtrace/contrib/dalli/quantize.rb +0 -23
  920. data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +0 -33
  921. data/lib/ddtrace/contrib/delayed_job/ext.rb +0 -24
  922. data/lib/ddtrace/contrib/delayed_job/integration.rb +0 -39
  923. data/lib/ddtrace/contrib/delayed_job/patcher.rb +0 -29
  924. data/lib/ddtrace/contrib/delayed_job/plugin.rb +0 -85
  925. data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +0 -32
  926. data/lib/ddtrace/contrib/elasticsearch/ext.rb +0 -23
  927. data/lib/ddtrace/contrib/elasticsearch/integration.rb +0 -40
  928. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +0 -123
  929. data/lib/ddtrace/contrib/elasticsearch/quantize.rb +0 -84
  930. data/lib/ddtrace/contrib/ethon/configuration/settings.rb +0 -33
  931. data/lib/ddtrace/contrib/ethon/easy_patch.rb +0 -152
  932. data/lib/ddtrace/contrib/ethon/ext.rb +0 -20
  933. data/lib/ddtrace/contrib/ethon/integration.rb +0 -44
  934. data/lib/ddtrace/contrib/ethon/multi_patch.rb +0 -85
  935. data/lib/ddtrace/contrib/ethon/patcher.rb +0 -27
  936. data/lib/ddtrace/contrib/excon/configuration/settings.rb +0 -34
  937. data/lib/ddtrace/contrib/excon/ext.rb +0 -18
  938. data/lib/ddtrace/contrib/excon/integration.rb +0 -44
  939. data/lib/ddtrace/contrib/excon/middleware.rb +0 -164
  940. data/lib/ddtrace/contrib/excon/patcher.rb +0 -28
  941. data/lib/ddtrace/contrib/extensions.rb +0 -169
  942. data/lib/ddtrace/contrib/faraday/configuration/settings.rb +0 -39
  943. data/lib/ddtrace/contrib/faraday/connection.rb +0 -19
  944. data/lib/ddtrace/contrib/faraday/ext.rb +0 -18
  945. data/lib/ddtrace/contrib/faraday/integration.rb +0 -44
  946. data/lib/ddtrace/contrib/faraday/middleware.rb +0 -86
  947. data/lib/ddtrace/contrib/faraday/patcher.rb +0 -54
  948. data/lib/ddtrace/contrib/faraday/rack_builder.rb +0 -19
  949. data/lib/ddtrace/contrib/grape/configuration/settings.rb +0 -39
  950. data/lib/ddtrace/contrib/grape/endpoint.rb +0 -246
  951. data/lib/ddtrace/contrib/grape/ext.rb +0 -24
  952. data/lib/ddtrace/contrib/grape/instrumentation.rb +0 -34
  953. data/lib/ddtrace/contrib/grape/integration.rb +0 -40
  954. data/lib/ddtrace/contrib/grape/patcher.rb +0 -32
  955. data/lib/ddtrace/contrib/graphql/configuration/settings.rb +0 -33
  956. data/lib/ddtrace/contrib/graphql/ext.rb +0 -17
  957. data/lib/ddtrace/contrib/graphql/integration.rb +0 -40
  958. data/lib/ddtrace/contrib/graphql/patcher.rb +0 -61
  959. data/lib/ddtrace/contrib/grpc/configuration/settings.rb +0 -32
  960. data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +0 -59
  961. data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +0 -80
  962. data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +0 -79
  963. data/lib/ddtrace/contrib/grpc/ext.rb +0 -19
  964. data/lib/ddtrace/contrib/grpc/integration.rb +0 -39
  965. data/lib/ddtrace/contrib/grpc/intercept_with_datadog.rb +0 -50
  966. data/lib/ddtrace/contrib/grpc/patcher.rb +0 -34
  967. data/lib/ddtrace/contrib/http/circuit_breaker.rb +0 -38
  968. data/lib/ddtrace/contrib/http/configuration/settings.rb +0 -33
  969. data/lib/ddtrace/contrib/http/ext.rb +0 -18
  970. data/lib/ddtrace/contrib/http/instrumentation.rb +0 -180
  971. data/lib/ddtrace/contrib/http/integration.rb +0 -46
  972. data/lib/ddtrace/contrib/http/patcher.rb +0 -27
  973. data/lib/ddtrace/contrib/http_annotation_helper.rb +0 -11
  974. data/lib/ddtrace/contrib/httpclient/configuration/settings.rb +0 -33
  975. data/lib/ddtrace/contrib/httpclient/ext.rb +0 -18
  976. data/lib/ddtrace/contrib/httpclient/instrumentation.rb +0 -148
  977. data/lib/ddtrace/contrib/httpclient/integration.rb +0 -44
  978. data/lib/ddtrace/contrib/httpclient/patcher.rb +0 -39
  979. data/lib/ddtrace/contrib/httprb/configuration/settings.rb +0 -33
  980. data/lib/ddtrace/contrib/httprb/ext.rb +0 -18
  981. data/lib/ddtrace/contrib/httprb/instrumentation.rb +0 -158
  982. data/lib/ddtrace/contrib/httprb/integration.rb +0 -44
  983. data/lib/ddtrace/contrib/httprb/patcher.rb +0 -39
  984. data/lib/ddtrace/contrib/integration.rb +0 -17
  985. data/lib/ddtrace/contrib/kafka/configuration/settings.rb +0 -31
  986. data/lib/ddtrace/contrib/kafka/consumer_event.rb +0 -15
  987. data/lib/ddtrace/contrib/kafka/consumer_group_event.rb +0 -15
  988. data/lib/ddtrace/contrib/kafka/event.rb +0 -52
  989. data/lib/ddtrace/contrib/kafka/events/connection/request.rb +0 -35
  990. data/lib/ddtrace/contrib/kafka/events/consumer/process_batch.rb +0 -42
  991. data/lib/ddtrace/contrib/kafka/events/consumer/process_message.rb +0 -40
  992. data/lib/ddtrace/contrib/kafka/events/consumer_group/heartbeat.rb +0 -40
  993. data/lib/ddtrace/contrib/kafka/events/consumer_group/join_group.rb +0 -30
  994. data/lib/ddtrace/contrib/kafka/events/consumer_group/leave_group.rb +0 -30
  995. data/lib/ddtrace/contrib/kafka/events/consumer_group/sync_group.rb +0 -30
  996. data/lib/ddtrace/contrib/kafka/events/produce_operation/send_messages.rb +0 -33
  997. data/lib/ddtrace/contrib/kafka/events/producer/deliver_messages.rb +0 -36
  998. data/lib/ddtrace/contrib/kafka/events.rb +0 -45
  999. data/lib/ddtrace/contrib/kafka/ext.rb +0 -42
  1000. data/lib/ddtrace/contrib/kafka/integration.rb +0 -40
  1001. data/lib/ddtrace/contrib/kafka/patcher.rb +0 -27
  1002. data/lib/ddtrace/contrib/lograge/configuration/settings.rb +0 -19
  1003. data/lib/ddtrace/contrib/lograge/ext.rb +0 -11
  1004. data/lib/ddtrace/contrib/lograge/instrumentation.rb +0 -39
  1005. data/lib/ddtrace/contrib/lograge/integration.rb +0 -46
  1006. data/lib/ddtrace/contrib/lograge/patcher.rb +0 -26
  1007. data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +0 -34
  1008. data/lib/ddtrace/contrib/mongodb/ext.rb +0 -24
  1009. data/lib/ddtrace/contrib/mongodb/instrumentation.rb +0 -70
  1010. data/lib/ddtrace/contrib/mongodb/integration.rb +0 -44
  1011. data/lib/ddtrace/contrib/mongodb/parsers.rb +0 -69
  1012. data/lib/ddtrace/contrib/mongodb/patcher.rb +0 -32
  1013. data/lib/ddtrace/contrib/mongodb/subscribers.rb +0 -112
  1014. data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +0 -31
  1015. data/lib/ddtrace/contrib/mysql2/ext.rb +0 -19
  1016. data/lib/ddtrace/contrib/mysql2/instrumentation.rb +0 -65
  1017. data/lib/ddtrace/contrib/mysql2/integration.rb +0 -39
  1018. data/lib/ddtrace/contrib/mysql2/patcher.rb +0 -28
  1019. data/lib/ddtrace/contrib/patchable.rb +0 -71
  1020. data/lib/ddtrace/contrib/patcher.rb +0 -66
  1021. data/lib/ddtrace/contrib/presto/configuration/settings.rb +0 -31
  1022. data/lib/ddtrace/contrib/presto/ext.rb +0 -29
  1023. data/lib/ddtrace/contrib/presto/instrumentation.rb +0 -111
  1024. data/lib/ddtrace/contrib/presto/integration.rb +0 -39
  1025. data/lib/ddtrace/contrib/presto/patcher.rb +0 -34
  1026. data/lib/ddtrace/contrib/qless/configuration/settings.rb +0 -36
  1027. data/lib/ddtrace/contrib/qless/ext.rb +0 -21
  1028. data/lib/ddtrace/contrib/qless/integration.rb +0 -39
  1029. data/lib/ddtrace/contrib/qless/patcher.rb +0 -35
  1030. data/lib/ddtrace/contrib/qless/qless_job.rb +0 -74
  1031. data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +0 -34
  1032. data/lib/ddtrace/contrib/que/configuration/settings.rb +0 -44
  1033. data/lib/ddtrace/contrib/que/ext.rb +0 -31
  1034. data/lib/ddtrace/contrib/que/integration.rb +0 -43
  1035. data/lib/ddtrace/contrib/que/patcher.rb +0 -25
  1036. data/lib/ddtrace/contrib/que/tracer.rb +0 -58
  1037. data/lib/ddtrace/contrib/racecar/configuration/settings.rb +0 -31
  1038. data/lib/ddtrace/contrib/racecar/event.rb +0 -77
  1039. data/lib/ddtrace/contrib/racecar/events/batch.rb +0 -28
  1040. data/lib/ddtrace/contrib/racecar/events/consume.rb +0 -28
  1041. data/lib/ddtrace/contrib/racecar/events/message.rb +0 -28
  1042. data/lib/ddtrace/contrib/racecar/events.rb +0 -33
  1043. data/lib/ddtrace/contrib/racecar/ext.rb +0 -26
  1044. data/lib/ddtrace/contrib/racecar/integration.rb +0 -40
  1045. data/lib/ddtrace/contrib/racecar/patcher.rb +0 -27
  1046. data/lib/ddtrace/contrib/rack/configuration/settings.rb +0 -47
  1047. data/lib/ddtrace/contrib/rack/ext.rb +0 -22
  1048. data/lib/ddtrace/contrib/rack/integration.rb +0 -46
  1049. data/lib/ddtrace/contrib/rack/middlewares.rb +0 -288
  1050. data/lib/ddtrace/contrib/rack/patcher.rb +0 -106
  1051. data/lib/ddtrace/contrib/rack/request_queue.rb +0 -45
  1052. data/lib/ddtrace/contrib/rails/auto_instrument_railtie.rb +0 -10
  1053. data/lib/ddtrace/contrib/rails/configuration/settings.rb +0 -101
  1054. data/lib/ddtrace/contrib/rails/ext.rb +0 -18
  1055. data/lib/ddtrace/contrib/rails/framework.rb +0 -172
  1056. data/lib/ddtrace/contrib/rails/integration.rb +0 -45
  1057. data/lib/ddtrace/contrib/rails/log_injection.rb +0 -42
  1058. data/lib/ddtrace/contrib/rails/middlewares.rb +0 -44
  1059. data/lib/ddtrace/contrib/rails/patcher.rb +0 -119
  1060. data/lib/ddtrace/contrib/rails/railtie.rb +0 -18
  1061. data/lib/ddtrace/contrib/rails/utils.rb +0 -25
  1062. data/lib/ddtrace/contrib/rake/configuration/settings.rb +0 -32
  1063. data/lib/ddtrace/contrib/rake/ext.rb +0 -22
  1064. data/lib/ddtrace/contrib/rake/instrumentation.rb +0 -91
  1065. data/lib/ddtrace/contrib/rake/integration.rb +0 -39
  1066. data/lib/ddtrace/contrib/rake/patcher.rb +0 -31
  1067. data/lib/ddtrace/contrib/redis/configuration/resolver.rb +0 -46
  1068. data/lib/ddtrace/contrib/redis/configuration/settings.rb +0 -36
  1069. data/lib/ddtrace/contrib/redis/ext.rb +0 -23
  1070. data/lib/ddtrace/contrib/redis/instrumentation.rb +0 -90
  1071. data/lib/ddtrace/contrib/redis/integration.rb +0 -43
  1072. data/lib/ddtrace/contrib/redis/patcher.rb +0 -33
  1073. data/lib/ddtrace/contrib/redis/quantize.rb +0 -76
  1074. data/lib/ddtrace/contrib/redis/tags.rb +0 -47
  1075. data/lib/ddtrace/contrib/redis/vendor/resolver.rb +0 -159
  1076. data/lib/ddtrace/contrib/registerable.rb +0 -33
  1077. data/lib/ddtrace/contrib/registry.rb +0 -43
  1078. data/lib/ddtrace/contrib/resque/configuration/settings.rb +0 -49
  1079. data/lib/ddtrace/contrib/resque/ext.rb +0 -18
  1080. data/lib/ddtrace/contrib/resque/integration.rb +0 -44
  1081. data/lib/ddtrace/contrib/resque/patcher.rb +0 -30
  1082. data/lib/ddtrace/contrib/resque/resque_job.rb +0 -104
  1083. data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +0 -32
  1084. data/lib/ddtrace/contrib/rest_client/ext.rb +0 -18
  1085. data/lib/ddtrace/contrib/rest_client/integration.rb +0 -39
  1086. data/lib/ddtrace/contrib/rest_client/patcher.rb +0 -25
  1087. data/lib/ddtrace/contrib/rest_client/request_patch.rb +0 -92
  1088. data/lib/ddtrace/contrib/semantic_logger/configuration/settings.rb +0 -19
  1089. data/lib/ddtrace/contrib/semantic_logger/ext.rb +0 -11
  1090. data/lib/ddtrace/contrib/semantic_logger/instrumentation.rb +0 -43
  1091. data/lib/ddtrace/contrib/semantic_logger/integration.rb +0 -48
  1092. data/lib/ddtrace/contrib/semantic_logger/patcher.rb +0 -26
  1093. data/lib/ddtrace/contrib/sequel/configuration/settings.rb +0 -29
  1094. data/lib/ddtrace/contrib/sequel/database.rb +0 -64
  1095. data/lib/ddtrace/contrib/sequel/dataset.rb +0 -64
  1096. data/lib/ddtrace/contrib/sequel/ext.rb +0 -20
  1097. data/lib/ddtrace/contrib/sequel/integration.rb +0 -39
  1098. data/lib/ddtrace/contrib/sequel/patcher.rb +0 -34
  1099. data/lib/ddtrace/contrib/sequel/utils.rb +0 -75
  1100. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +0 -32
  1101. data/lib/ddtrace/contrib/shoryuken/ext.rb +0 -22
  1102. data/lib/ddtrace/contrib/shoryuken/integration.rb +0 -40
  1103. data/lib/ddtrace/contrib/shoryuken/patcher.rb +0 -25
  1104. data/lib/ddtrace/contrib/shoryuken/tracer.rb +0 -56
  1105. data/lib/ddtrace/contrib/sidekiq/client_tracer.rb +0 -44
  1106. data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +0 -38
  1107. data/lib/ddtrace/contrib/sidekiq/ext.rb +0 -31
  1108. data/lib/ddtrace/contrib/sidekiq/integration.rb +0 -49
  1109. data/lib/ddtrace/contrib/sidekiq/patcher.rb +0 -68
  1110. data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/heartbeat.rb +0 -30
  1111. data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/job_fetch.rb +0 -30
  1112. data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/scheduled_push.rb +0 -29
  1113. data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +0 -66
  1114. data/lib/ddtrace/contrib/sidekiq/tracing.rb +0 -45
  1115. data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +0 -40
  1116. data/lib/ddtrace/contrib/sinatra/env.rb +0 -59
  1117. data/lib/ddtrace/contrib/sinatra/ext.rb +0 -28
  1118. data/lib/ddtrace/contrib/sinatra/headers.rb +0 -30
  1119. data/lib/ddtrace/contrib/sinatra/integration.rb +0 -39
  1120. data/lib/ddtrace/contrib/sinatra/patcher.rb +0 -30
  1121. data/lib/ddtrace/contrib/sinatra/tracer.rb +0 -150
  1122. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +0 -112
  1123. data/lib/ddtrace/contrib/sneakers/configuration/settings.rb +0 -34
  1124. data/lib/ddtrace/contrib/sneakers/ext.rb +0 -23
  1125. data/lib/ddtrace/contrib/sneakers/integration.rb +0 -42
  1126. data/lib/ddtrace/contrib/sneakers/patcher.rb +0 -25
  1127. data/lib/ddtrace/contrib/sneakers/tracer.rb +0 -54
  1128. data/lib/ddtrace/contrib/status_code_matcher.rb +0 -70
  1129. data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +0 -31
  1130. data/lib/ddtrace/contrib/sucker_punch/exception_handler.rb +0 -25
  1131. data/lib/ddtrace/contrib/sucker_punch/ext.rb +0 -22
  1132. data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +0 -89
  1133. data/lib/ddtrace/contrib/sucker_punch/integration.rb +0 -39
  1134. data/lib/ddtrace/contrib/sucker_punch/patcher.rb +0 -44
  1135. data/lib/ddtrace/correlation.rb +0 -40
  1136. data/lib/ddtrace/diagnostics/environment_logger.rb +0 -280
  1137. data/lib/ddtrace/diagnostics/health.rb +0 -34
  1138. data/lib/ddtrace/distributed_tracing/headers/b3.rb +0 -45
  1139. data/lib/ddtrace/distributed_tracing/headers/b3_single.rb +0 -57
  1140. data/lib/ddtrace/distributed_tracing/headers/datadog.rb +0 -43
  1141. data/lib/ddtrace/distributed_tracing/headers/headers.rb +0 -72
  1142. data/lib/ddtrace/distributed_tracing/headers/helpers.rb +0 -44
  1143. data/lib/ddtrace/encoding.rb +0 -72
  1144. data/lib/ddtrace/error.rb +0 -97
  1145. data/lib/ddtrace/event.rb +0 -53
  1146. data/lib/ddtrace/ext/analytics.rb +0 -13
  1147. data/lib/ddtrace/ext/app_types.rb +0 -12
  1148. data/lib/ddtrace/ext/correlation.rb +0 -12
  1149. data/lib/ddtrace/ext/diagnostics.rb +0 -37
  1150. data/lib/ddtrace/ext/distributed.rb +0 -40
  1151. data/lib/ddtrace/ext/environment.rb +0 -24
  1152. data/lib/ddtrace/ext/errors.rb +0 -11
  1153. data/lib/ddtrace/ext/forced_tracing.rb +0 -26
  1154. data/lib/ddtrace/ext/git.rb +0 -32
  1155. data/lib/ddtrace/ext/http.rb +0 -47
  1156. data/lib/ddtrace/ext/integration.rb +0 -9
  1157. data/lib/ddtrace/ext/manual_tracing.rb +0 -10
  1158. data/lib/ddtrace/ext/metrics.rb +0 -16
  1159. data/lib/ddtrace/ext/net.rb +0 -11
  1160. data/lib/ddtrace/ext/priority.rb +0 -19
  1161. data/lib/ddtrace/ext/profiling.rb +0 -53
  1162. data/lib/ddtrace/ext/runtime.rb +0 -25
  1163. data/lib/ddtrace/ext/sampling.rb +0 -17
  1164. data/lib/ddtrace/ext/sql.rb +0 -9
  1165. data/lib/ddtrace/ext/test.rb +0 -9
  1166. data/lib/ddtrace/ext/transport.rb +0 -32
  1167. data/lib/ddtrace/forced_tracing.rb +0 -39
  1168. data/lib/ddtrace/logger.rb +0 -41
  1169. data/lib/ddtrace/metrics.rb +0 -282
  1170. data/lib/ddtrace/opentelemetry/extensions.rb +0 -14
  1171. data/lib/ddtrace/opentelemetry/span.rb +0 -34
  1172. data/lib/ddtrace/opentracer/binary_propagator.rb +0 -25
  1173. data/lib/ddtrace/opentracer/carrier.rb +0 -7
  1174. data/lib/ddtrace/opentracer/distributed_headers.rb +0 -56
  1175. data/lib/ddtrace/opentracer/global_tracer.rb +0 -16
  1176. data/lib/ddtrace/opentracer/propagator.rb +0 -23
  1177. data/lib/ddtrace/opentracer/rack_propagator.rb +0 -61
  1178. data/lib/ddtrace/opentracer/scope.rb +0 -16
  1179. data/lib/ddtrace/opentracer/scope_manager.rb +0 -7
  1180. data/lib/ddtrace/opentracer/span.rb +0 -95
  1181. data/lib/ddtrace/opentracer/span_context.rb +0 -15
  1182. data/lib/ddtrace/opentracer/span_context_factory.rb +0 -24
  1183. data/lib/ddtrace/opentracer/text_map_propagator.rb +0 -76
  1184. data/lib/ddtrace/opentracer/thread_local_scope.rb +0 -32
  1185. data/lib/ddtrace/opentracer/thread_local_scope_manager.rb +0 -41
  1186. data/lib/ddtrace/opentracer/tracer.rb +0 -209
  1187. data/lib/ddtrace/opentracer.rb +0 -22
  1188. data/lib/ddtrace/patcher.rb +0 -69
  1189. data/lib/ddtrace/pin.rb +0 -86
  1190. data/lib/ddtrace/pipeline/span_filter.rb +0 -39
  1191. data/lib/ddtrace/pipeline/span_processor.rb +0 -21
  1192. data/lib/ddtrace/pipeline.rb +0 -47
  1193. data/lib/ddtrace/profiling/backtrace_location.rb +0 -33
  1194. data/lib/ddtrace/profiling/buffer.rb +0 -42
  1195. data/lib/ddtrace/profiling/collectors/stack.rb +0 -297
  1196. data/lib/ddtrace/profiling/encoding/profile.rb +0 -46
  1197. data/lib/ddtrace/profiling/event.rb +0 -14
  1198. data/lib/ddtrace/profiling/events/stack.rb +0 -81
  1199. data/lib/ddtrace/profiling/exporter.rb +0 -24
  1200. data/lib/ddtrace/profiling/ext/forking.rb +0 -98
  1201. data/lib/ddtrace/profiling/flush.rb +0 -44
  1202. data/lib/ddtrace/profiling/native_extension.rb +0 -40
  1203. data/lib/ddtrace/profiling/pprof/builder.rb +0 -126
  1204. data/lib/ddtrace/profiling/pprof/converter.rb +0 -103
  1205. data/lib/ddtrace/profiling/pprof/message_set.rb +0 -15
  1206. data/lib/ddtrace/profiling/pprof/payload.rb +0 -19
  1207. data/lib/ddtrace/profiling/pprof/pprof.proto +0 -212
  1208. data/lib/ddtrace/profiling/pprof/pprof_pb.rb +0 -82
  1209. data/lib/ddtrace/profiling/pprof/stack_sample.rb +0 -140
  1210. data/lib/ddtrace/profiling/pprof/string_table.rb +0 -11
  1211. data/lib/ddtrace/profiling/pprof/template.rb +0 -119
  1212. data/lib/ddtrace/profiling/profiler.rb +0 -31
  1213. data/lib/ddtrace/profiling/recorder.rb +0 -96
  1214. data/lib/ddtrace/profiling/scheduler.rb +0 -150
  1215. data/lib/ddtrace/profiling/tasks/setup.rb +0 -90
  1216. data/lib/ddtrace/profiling/trace_identifiers/ddtrace.rb +0 -42
  1217. data/lib/ddtrace/profiling/trace_identifiers/helper.rb +0 -46
  1218. data/lib/ddtrace/profiling/transport/client.rb +0 -15
  1219. data/lib/ddtrace/profiling/transport/http/api/endpoint.rb +0 -94
  1220. data/lib/ddtrace/profiling/transport/http/api/instance.rb +0 -37
  1221. data/lib/ddtrace/profiling/transport/http/api/spec.rb +0 -41
  1222. data/lib/ddtrace/profiling/transport/http/api.rb +0 -44
  1223. data/lib/ddtrace/profiling/transport/http/builder.rb +0 -29
  1224. data/lib/ddtrace/profiling/transport/http/client.rb +0 -34
  1225. data/lib/ddtrace/profiling/transport/http/response.rb +0 -22
  1226. data/lib/ddtrace/profiling/transport/http.rb +0 -111
  1227. data/lib/ddtrace/profiling/transport/io/client.rb +0 -28
  1228. data/lib/ddtrace/profiling/transport/io/response.rb +0 -17
  1229. data/lib/ddtrace/profiling/transport/io.rb +0 -31
  1230. data/lib/ddtrace/profiling/transport/parcel.rb +0 -18
  1231. data/lib/ddtrace/profiling/transport/request.rb +0 -16
  1232. data/lib/ddtrace/profiling/transport/response.rb +0 -9
  1233. data/lib/ddtrace/profiling.rb +0 -149
  1234. data/lib/ddtrace/propagation/grpc_propagator.rb +0 -75
  1235. data/lib/ddtrace/propagation/http_propagator.rb +0 -91
  1236. data/lib/ddtrace/quantization/hash.rb +0 -104
  1237. data/lib/ddtrace/quantization/http.rb +0 -90
  1238. data/lib/ddtrace/runtime/metrics.rb +0 -135
  1239. data/lib/ddtrace/sampler.rb +0 -303
  1240. data/lib/ddtrace/sampling/matcher.rb +0 -58
  1241. data/lib/ddtrace/sampling/rate_limiter.rb +0 -177
  1242. data/lib/ddtrace/sampling/rule.rb +0 -62
  1243. data/lib/ddtrace/sampling/rule_sampler.rb +0 -133
  1244. data/lib/ddtrace/sampling.rb +0 -3
  1245. data/lib/ddtrace/span.rb +0 -445
  1246. data/lib/ddtrace/sync_writer.rb +0 -69
  1247. data/lib/ddtrace/tasks/exec.rb +0 -47
  1248. data/lib/ddtrace/tasks/help.rb +0 -15
  1249. data/lib/ddtrace/tracer.rb +0 -449
  1250. data/lib/ddtrace/transport/http/adapters/net.rb +0 -156
  1251. data/lib/ddtrace/transport/http/adapters/registry.rb +0 -26
  1252. data/lib/ddtrace/transport/http/adapters/test.rb +0 -86
  1253. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +0 -78
  1254. data/lib/ddtrace/transport/http/api/endpoint.rb +0 -28
  1255. data/lib/ddtrace/transport/http/api/fallbacks.rb +0 -23
  1256. data/lib/ddtrace/transport/http/api/instance.rb +0 -34
  1257. data/lib/ddtrace/transport/http/api/map.rb +0 -15
  1258. data/lib/ddtrace/transport/http/api/spec.rb +0 -16
  1259. data/lib/ddtrace/transport/http/api.rb +0 -47
  1260. data/lib/ddtrace/transport/http/builder.rb +0 -177
  1261. data/lib/ddtrace/transport/http/client.rb +0 -52
  1262. data/lib/ddtrace/transport/http/env.rb +0 -57
  1263. data/lib/ddtrace/transport/http/response.rb +0 -27
  1264. data/lib/ddtrace/transport/http/statistics.rb +0 -44
  1265. data/lib/ddtrace/transport/http/traces.rb +0 -143
  1266. data/lib/ddtrace/transport/http.rb +0 -113
  1267. data/lib/ddtrace/transport/io/client.rb +0 -84
  1268. data/lib/ddtrace/transport/io/response.rb +0 -24
  1269. data/lib/ddtrace/transport/io/traces.rb +0 -100
  1270. data/lib/ddtrace/transport/io.rb +0 -27
  1271. data/lib/ddtrace/transport/parcel.rb +0 -20
  1272. data/lib/ddtrace/transport/request.rb +0 -14
  1273. data/lib/ddtrace/transport/response.rb +0 -61
  1274. data/lib/ddtrace/transport/statistics.rb +0 -73
  1275. data/lib/ddtrace/transport/traces.rb +0 -206
  1276. data/lib/ddtrace/utils/compression.rb +0 -28
  1277. data/lib/ddtrace/utils/database.rb +0 -26
  1278. data/lib/ddtrace/utils/forking.rb +0 -53
  1279. data/lib/ddtrace/utils/object_set.rb +0 -40
  1280. data/lib/ddtrace/utils/only_once.rb +0 -41
  1281. data/lib/ddtrace/utils/sequence.rb +0 -18
  1282. data/lib/ddtrace/utils/string_table.rb +0 -46
  1283. data/lib/ddtrace/utils/time.rb +0 -51
  1284. data/lib/ddtrace/utils.rb +0 -80
  1285. data/lib/ddtrace/vendor/active_record/connection_specification.rb +0 -302
  1286. data/lib/ddtrace/vendor/multipart-post/multipart/post/composite_read_io.rb +0 -117
  1287. data/lib/ddtrace/vendor/multipart-post/multipart/post/multipartable.rb +0 -58
  1288. data/lib/ddtrace/vendor/multipart-post/multipart/post/parts.rb +0 -136
  1289. data/lib/ddtrace/vendor/multipart-post/multipart/post/version.rb +0 -10
  1290. data/lib/ddtrace/vendor/multipart-post/multipart/post.rb +0 -9
  1291. data/lib/ddtrace/vendor/multipart-post/multipart.rb +0 -13
  1292. data/lib/ddtrace/vendor/multipart-post/net/http/post/multipart.rb +0 -33
  1293. data/lib/ddtrace/worker.rb +0 -21
  1294. data/lib/ddtrace/workers/async.rb +0 -175
  1295. data/lib/ddtrace/workers/interval_loop.rb +0 -116
  1296. data/lib/ddtrace/workers/polling.rb +0 -56
  1297. data/lib/ddtrace/workers/queue.rb +0 -41
  1298. data/lib/ddtrace/workers/runtime_metrics.rb +0 -65
  1299. data/lib/ddtrace/workers/trace_writer.rb +0 -200
  1300. data/lib/ddtrace/workers.rb +0 -123
  1301. data/lib/ddtrace/writer.rb +0 -200
  1302. /data/lib/{ddtrace → datadog/core}/vendor/multipart-post/LICENSE +0 -0
  1303. /data/lib/{ddtrace/vendor/active_record → datadog/tracing/contrib/active_record/vendor}/MIT-LICENSE +0 -0
  1304. /data/lib/{ddtrace → datadog/tracing}/contrib/redis/vendor/LICENSE +0 -0
@@ -0,0 +1,186 @@
1
+ require_relative '../../core/utils/time'
2
+
3
+ module Datadog
4
+ module Tracing
5
+ module Sampling
6
+ # Checks for rate limiting on a resource.
7
+ # @public_api
8
+ class RateLimiter
9
+ # Checks if resource of specified size can be
10
+ # conforms with the current limit.
11
+ #
12
+ # Implementations of this method are not guaranteed
13
+ # to be side-effect free.
14
+ #
15
+ # @return [Boolean] whether a resource conforms with the current limit
16
+ def allow?(size); end
17
+
18
+ # The effective rate limiting ratio based on
19
+ # recent calls to `allow?`.
20
+ #
21
+ # @return [Float] recent allowance ratio
22
+ def effective_rate; end
23
+ end
24
+
25
+ # Implementation of the Token Bucket metering algorithm
26
+ # for rate limiting.
27
+ #
28
+ # @see https://en.wikipedia.org/wiki/Token_bucket Token bucket
29
+ # @public_api
30
+ class TokenBucket < RateLimiter
31
+ attr_reader :rate, :max_tokens
32
+
33
+ # @param rate [Numeric] Allowance rate, in units per second
34
+ # if rate is negative, always allow
35
+ # if rate is zero, never allow
36
+ # @param max_tokens [Numeric] Limit of available tokens
37
+ def initialize(rate, max_tokens = rate)
38
+ super()
39
+
40
+ raise ArgumentError, "rate must be a number: #{rate}" unless rate.is_a?(Numeric)
41
+ raise ArgumentError, "max_tokens must be a number: #{max_tokens}" unless max_tokens.is_a?(Numeric)
42
+
43
+ @rate = rate
44
+ @max_tokens = max_tokens
45
+
46
+ @tokens = max_tokens
47
+ @total_messages = 0
48
+ @conforming_messages = 0
49
+ @prev_conforming_messages = nil
50
+ @prev_total_messages = nil
51
+ @current_window = nil
52
+
53
+ @last_refill = Core::Utils::Time.get_time
54
+ end
55
+
56
+ # Checks if a message of provided +size+
57
+ # conforms with the current bucket limit.
58
+ #
59
+ # If it does, return +true+ and remove +size+
60
+ # tokens from the bucket.
61
+ # If it does not, return +false+ without affecting
62
+ # the tokens from the bucket.
63
+ #
64
+ # @return [Boolean] +true+ if message conforms with current bucket limit
65
+ def allow?(size)
66
+ allowed = should_allow?(size)
67
+ update_rate_counts(allowed)
68
+ allowed
69
+ end
70
+
71
+ # Ratio of 'conformance' per 'total messages' checked
72
+ # averaged for the past 2 buckets
73
+ #
74
+ # Returns +1.0+ when no messages have been checked yet.
75
+ #
76
+ # @return [Float] Conformance ratio, between +[0,1]+
77
+ def effective_rate
78
+ return 0.0 if @rate.zero?
79
+ return 1.0 if @rate < 0 || @total_messages.zero?
80
+
81
+ return current_window_rate if @prev_conforming_messages.nil? || @prev_total_messages.nil?
82
+
83
+ (@conforming_messages.to_f + @prev_conforming_messages.to_f) / (@total_messages + @prev_total_messages)
84
+ end
85
+
86
+ # Ratio of 'conformance' per 'total messages' checked
87
+ # on this bucket
88
+ #
89
+ # Returns +1.0+ when no messages have been checked yet.
90
+ #
91
+ # @return [Float] Conformance ratio, between +[0,1]+
92
+ def current_window_rate
93
+ return 1.0 if @total_messages.zero?
94
+
95
+ @conforming_messages.to_f / @total_messages
96
+ end
97
+
98
+ # @return [Numeric] number of tokens currently available
99
+ def available_tokens
100
+ @tokens
101
+ end
102
+
103
+ private
104
+
105
+ def refill_since_last_message
106
+ now = Core::Utils::Time.get_time
107
+ elapsed = now - @last_refill
108
+
109
+ # Update the number of available tokens, but ensure we do not exceed the max
110
+ # we return the min of tokens + rate*elapsed, or max tokens
111
+ refill_tokens(@rate * elapsed)
112
+
113
+ @last_refill = now
114
+ end
115
+
116
+ def refill_tokens(size)
117
+ @tokens += size
118
+ @tokens = @max_tokens if @tokens > @max_tokens
119
+ end
120
+
121
+ def increment_total_count
122
+ @total_messages += 1
123
+ end
124
+
125
+ def increment_conforming_count
126
+ @conforming_messages += 1
127
+ end
128
+
129
+ def should_allow?(size)
130
+ # rate limit of 0 blocks everything
131
+ return false if @rate.zero?
132
+
133
+ # negative rate limit disables rate limiting
134
+ return true if @rate < 0
135
+
136
+ refill_since_last_message
137
+
138
+ # if tokens < 1 we don't allow?
139
+ return false if @tokens < size
140
+
141
+ @tokens -= size
142
+
143
+ true
144
+ end
145
+
146
+ # Sets and Updates the past two 1 second windows for which
147
+ # the rate limiter must compute it's rate over and updates
148
+ # the total count, and conforming message count if +allowed+
149
+ def update_rate_counts(allowed)
150
+ now = Core::Utils::Time.get_time
151
+
152
+ # No tokens have been seen yet, start a new window
153
+ if @current_window.nil?
154
+ @current_window = now
155
+ # If more than 1 second has past since last window, reset
156
+ elsif now - @current_window >= 1
157
+ @prev_conforming_messages = @conforming_messages
158
+ @prev_total_messages = @total_messages
159
+ @conforming_messages = 0
160
+ @total_messages = 0
161
+ @current_window = now
162
+ end
163
+
164
+ increment_conforming_count if allowed
165
+
166
+ increment_total_count
167
+ end
168
+ end
169
+
170
+ # {Datadog::Tracing::Sampling::RateLimiter} that accepts all resources,
171
+ # with no limits.
172
+ # @public_api
173
+ class UnlimitedLimiter < RateLimiter
174
+ # @return [Boolean] always +true+
175
+ def allow?(_)
176
+ true
177
+ end
178
+
179
+ # @return [Float] always 100%
180
+ def effective_rate
181
+ 1.0
182
+ end
183
+ end
184
+ end
185
+ end
186
+ end
@@ -0,0 +1,68 @@
1
+ require_relative 'sampler'
2
+ require_relative '../utils'
3
+
4
+ module Datadog
5
+ module Tracing
6
+ module Sampling
7
+ # {Datadog::Tracing::Sampling::RateSampler} is based on a sample rate.
8
+ # @public_api
9
+ class RateSampler < Sampler
10
+ KNUTH_FACTOR = 1111111111111111111
11
+
12
+ # Initialize a {Datadog::Tracing::Sampling::RateSampler}.
13
+ # This sampler keeps a random subset of the traces. Its main purpose is to
14
+ # reduce the instrumentation footprint.
15
+ #
16
+ # * +sample_rate+: the sample rate as a {Float} between 0.0 and 1.0. 0.0
17
+ # means that no trace will be sampled; 1.0 means that all traces will be
18
+ # sampled.
19
+ #
20
+ # DEV-2.0: Allow for `sample_rate` zero (drop all) to be allowed. This eases
21
+ # DEV-2.0: usage for all internal users of the {RateSampler} class: both
22
+ # DEV-2.0: RuleSampler and Single Span Sampling leverage the RateSampler, but want
23
+ # DEV-2.0: `sample_rate` zero to mean "drop all". They work around this by hard-
24
+ # DEV-2.0: setting the `sample_rate` to zero like so:
25
+ # DEV-2.0: ```
26
+ # DEV-2.0: sampler = RateSampler.new
27
+ # DEV-2.0: sampler.sample_rate = sample_rate
28
+ # DEV-2.0: ```
29
+ def initialize(sample_rate = 1.0, decision: nil)
30
+ super()
31
+
32
+ unless sample_rate > 0.0 && sample_rate <= 1.0
33
+ Datadog.logger.error('sample rate is not between 0 and 1, disabling the sampler')
34
+ sample_rate = 1.0
35
+ end
36
+
37
+ self.sample_rate = sample_rate
38
+
39
+ @decision = decision
40
+ end
41
+
42
+ def sample_rate(*_)
43
+ @sample_rate
44
+ end
45
+
46
+ def sample_rate=(sample_rate)
47
+ @sample_rate = sample_rate
48
+ @sampling_id_threshold = sample_rate * Tracing::Utils::EXTERNAL_MAX_ID
49
+ end
50
+
51
+ def sample?(trace)
52
+ ((trace.id * KNUTH_FACTOR) % Tracing::Utils::EXTERNAL_MAX_ID) <= @sampling_id_threshold
53
+ end
54
+
55
+ def sample!(trace)
56
+ sampled = trace.sampled = sample?(trace)
57
+
58
+ return false unless sampled
59
+
60
+ trace.sample_rate = @sample_rate
61
+ trace.set_tag(Tracing::Metadata::Ext::Distributed::TAG_DECISION_MAKER, @decision) if @decision
62
+
63
+ true
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,72 @@
1
+ require_relative 'matcher'
2
+ require_relative 'rate_sampler'
3
+
4
+ module Datadog
5
+ module Tracing
6
+ module Sampling
7
+ # Sampling rule that dictates if a trace matches
8
+ # a specific criteria and what sampling strategy to
9
+ # apply in case of a positive match.
10
+ # @public_api
11
+ class Rule
12
+ attr_reader :matcher, :sampler
13
+
14
+ # @param [Matcher] matcher A matcher to verify trace conformity against
15
+ # @param [Sampler] sampler A sampler to be consulted on a positive match
16
+ def initialize(matcher, sampler)
17
+ @matcher = matcher
18
+ @sampler = sampler
19
+ end
20
+
21
+ # Evaluates if the provided `trace` conforms to the `matcher`.
22
+ #
23
+ # @param [TraceOperation] trace
24
+ # @return [Boolean] whether this rules applies to the trace
25
+ # @return [NilClass] if the matcher fails errs during evaluation
26
+ def match?(trace)
27
+ @matcher.match?(trace)
28
+ rescue => e
29
+ Datadog.logger.error(
30
+ "Matcher failed. Cause: #{e.class.name} #{e.message} Source: #{Array(e.backtrace).first}"
31
+ )
32
+ nil
33
+ end
34
+
35
+ # (see Datadog::Tracing::Sampling::Sampler#sample?)
36
+ def sample?(trace)
37
+ @sampler.sample?(trace)
38
+ end
39
+
40
+ # (see Datadog::Tracing::Sampling::Sampler#sample_rate)
41
+ def sample_rate(trace)
42
+ @sampler.sample_rate(trace)
43
+ end
44
+ end
45
+
46
+ # A {Datadog::Tracing::Sampling::Rule} that matches a trace based on
47
+ # trace name and/or service name and
48
+ # applies a fixed sampling to matching spans.
49
+ # @public_api
50
+ class SimpleRule < Rule
51
+ # @param name [String,Regexp,Proc] Matcher for case equality (===) with the trace name, defaults to always match
52
+ # @param service [String,Regexp,Proc] Matcher for case equality (===) with the service name,
53
+ # defaults to always match
54
+ # @param sample_rate [Float] Sampling rate between +[0,1]+
55
+ def initialize(name: SimpleMatcher::MATCH_ALL, service: SimpleMatcher::MATCH_ALL, sample_rate: 1.0)
56
+ # We want to allow 0.0 to drop all traces, but {Datadog::Tracing::Sampling::RateSampler}
57
+ # considers 0.0 an invalid rate and falls back to 100% sampling.
58
+ #
59
+ # We address that here by not setting the rate in the constructor,
60
+ # but using the setter method.
61
+ #
62
+ # We don't want to make this change directly to {Datadog::Tracing::Sampling::RateSampler}
63
+ # because it breaks its current contract to existing users.
64
+ sampler = RateSampler.new
65
+ sampler.sample_rate = sample_rate
66
+
67
+ super(SimpleMatcher.new(name: name, service: service), sampler)
68
+ end
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,157 @@
1
+ require_relative 'ext'
2
+ require_relative 'rate_limiter'
3
+ require_relative 'rule'
4
+
5
+ module Datadog
6
+ module Tracing
7
+ module Sampling
8
+ # Span {Sampler} that applies a set of {Rule}s to decide
9
+ # on sampling outcome. Then, a rate limiter is applied.
10
+ #
11
+ # If a trace does not conform to any rules, a default
12
+ # sampling strategy is applied.
13
+ # @public_api
14
+ class RuleSampler
15
+ attr_reader :rules, :rate_limiter, :default_sampler
16
+
17
+ # @param rules [Array<Rule>] ordered list of rules to be applied to a trace
18
+ # @param rate_limit [Float] number of traces per second, defaults to +100+
19
+ # @param rate_limiter [RateLimiter] limiter applied after rule matching
20
+ # @param default_sample_rate [Float] fallback sample rate when no rules apply to a trace,
21
+ # between +[0,1]+, defaults to +1+
22
+ # @param default_sampler [Sample] fallback strategy when no rules apply to a trace
23
+ def initialize(
24
+ rules = [],
25
+ rate_limit: Datadog.configuration.tracing.sampling.rate_limit,
26
+ rate_limiter: nil,
27
+ default_sample_rate: Datadog.configuration.tracing.sampling.default_rate,
28
+ default_sampler: nil
29
+ )
30
+ @rules = rules
31
+ @rate_limiter = if rate_limiter
32
+ rate_limiter
33
+ elsif rate_limit
34
+ TokenBucket.new(rate_limit)
35
+ else
36
+ UnlimitedLimiter.new
37
+ end
38
+
39
+ @default_sampler = if default_sampler
40
+ default_sampler
41
+ elsif default_sample_rate
42
+ # Add to the end of the rule list a rule always matches any trace
43
+ @rules << SimpleRule.new(sample_rate: default_sample_rate)
44
+ nil
45
+ else
46
+ # TODO: Simplify .tags access, as `Tracer#tags` can't be arbitrarily changed anymore
47
+ RateByServiceSampler.new(1.0, env: -> { Tracing.send(:tracer).tags['env'] })
48
+ end
49
+ end
50
+
51
+ def self.parse(rules, rate_limit, default_sample_rate)
52
+ parsed_rules = JSON.parse(rules).map do |rule|
53
+ sample_rate = rule['sample_rate']
54
+
55
+ begin
56
+ sample_rate = Float(sample_rate)
57
+ rescue
58
+ raise "Rule '#{rule.inspect}' does not contain a float property `sample_rate`"
59
+ end
60
+
61
+ kwargs = {
62
+ name: rule['name'],
63
+ service: rule['service'],
64
+ sample_rate: sample_rate,
65
+ }
66
+
67
+ Core::BackportFrom24.hash_compact!(kwargs)
68
+
69
+ SimpleRule.new(**kwargs)
70
+ end
71
+
72
+ new(parsed_rules, rate_limit: rate_limit, default_sample_rate: default_sample_rate)
73
+ rescue => e
74
+ Datadog.logger.error do
75
+ "Could not parse trace sampling rules '#{rules}': #{e.class.name} #{e.message} at #{Array(e.backtrace).first}"
76
+ end
77
+ nil
78
+ end
79
+
80
+ # /RuleSampler's components (it's rate limiter, for example) are
81
+ # not be guaranteed to be size-effect free.
82
+ # It is not possible to guarantee that a call to {#sample?} will
83
+ # return the same result as a successive call to {#sample!} with the same trace.
84
+ #
85
+ # Use {#sample!} instead
86
+ def sample?(_trace)
87
+ raise 'RuleSampler cannot be evaluated without side-effects'
88
+ end
89
+
90
+ def sample!(trace)
91
+ sampled = sample_trace(trace) do |t|
92
+ @default_sampler.sample!(t).tap do
93
+ # We want to make sure the trace is tagged with the agent-derived
94
+ # service rate. Retrieve this from the rate by service sampler.
95
+ # Only do this if it was set by a RateByServiceSampler.
96
+ trace.agent_sample_rate = @default_sampler.sample_rate(trace) if @default_sampler.is_a?(RateByServiceSampler)
97
+ end
98
+ end
99
+
100
+ trace.sampled = sampled
101
+ end
102
+
103
+ # @!visibility private
104
+ def update(*args, **kwargs)
105
+ return false unless @default_sampler.respond_to?(:update)
106
+
107
+ @default_sampler.update(*args, **kwargs)
108
+ end
109
+
110
+ private
111
+
112
+ def sample_trace(trace)
113
+ rule = @rules.find { |r| r.match?(trace) }
114
+
115
+ return yield(trace) if rule.nil?
116
+
117
+ sampled = rule.sample?(trace)
118
+ sample_rate = rule.sample_rate(trace)
119
+
120
+ set_priority(trace, sampled)
121
+ set_rule_metrics(trace, sample_rate)
122
+
123
+ return false unless sampled
124
+
125
+ rate_limiter.allow?(1).tap do |allowed|
126
+ set_priority(trace, allowed)
127
+ set_limiter_metrics(trace, rate_limiter.effective_rate)
128
+ trace.set_tag(Tracing::Metadata::Ext::Distributed::TAG_DECISION_MAKER, Ext::Decision::TRACE_SAMPLING_RULE)
129
+ end
130
+ rescue StandardError => e
131
+ Datadog.logger.error(
132
+ "Rule sampling failed. Cause: #{e.class.name} #{e.message} Source: #{Array(e.backtrace).first}"
133
+ )
134
+ yield(trace)
135
+ end
136
+
137
+ # Span priority should only be set when the {RuleSampler}
138
+ # was responsible for the sampling decision.
139
+ def set_priority(trace, sampled)
140
+ trace.sampling_priority = if sampled
141
+ Sampling::Ext::Priority::USER_KEEP
142
+ else
143
+ Sampling::Ext::Priority::USER_REJECT
144
+ end
145
+ end
146
+
147
+ def set_rule_metrics(trace, sample_rate)
148
+ trace.rule_sample_rate = sample_rate
149
+ end
150
+
151
+ def set_limiter_metrics(trace, limiter_rate)
152
+ trace.rate_limiter_rate = limiter_rate
153
+ end
154
+ end
155
+ end
156
+ end
157
+ end
@@ -0,0 +1,42 @@
1
+ module Datadog
2
+ module Tracing
3
+ module Sampling
4
+ # Interface for client-side trace sampling.
5
+ # @abstract
6
+ # @public_api
7
+ class Sampler
8
+ # Returns `true` if the provided trace should be kept.
9
+ # Otherwise, `false`.
10
+ #
11
+ # This method *must not* modify the `trace`.
12
+ #
13
+ # @param [Datadog::Tracing::TraceOperation] trace
14
+ # @return [Boolean] should this trace be kept?
15
+ def sample?(trace)
16
+ raise NotImplementedError, 'Samplers must implement the #sample? method'
17
+ end
18
+
19
+ # Returns `true` if the provided trace should be kept.
20
+ # Otherwise, `false`.
21
+ #
22
+ # This method *may* modify the `trace`, in case changes are necessary based on the
23
+ # sampling decision.
24
+ #
25
+ # @param [Datadog::Tracing::TraceOperation] trace
26
+ # @return [Boolean] should this trace be kept?
27
+ def sample!(trace)
28
+ raise NotImplementedError, 'Samplers must implement the #sample! method'
29
+ end
30
+
31
+ # The sampling rate, if this sampler has such concept.
32
+ # Otherwise, `nil`.
33
+ #
34
+ # @param [Datadog::Tracing::TraceOperation] trace
35
+ # @return [Float,nil] sampling ratio between 0.0 and 1.0 (inclusive), or `nil` if not applicable
36
+ def sample_rate(trace)
37
+ raise NotImplementedError, 'Samplers must implement the #sample_rate method'
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Datadog
4
+ module Tracing
5
+ module Sampling
6
+ module Span
7
+ # Single Span Sampling constants.
8
+ module Ext
9
+ # Accept all spans (100% retention).
10
+ DEFAULT_SAMPLE_RATE = 1.0
11
+ # Unlimited.
12
+ # @see Datadog::Tracing::Sampling::TokenBucket
13
+ DEFAULT_MAX_PER_SECOND = -1
14
+
15
+ # Sampling decision method used to come to the sampling decision for this span
16
+ TAG_MECHANISM = '_dd.span_sampling.mechanism'
17
+ # Sampling rate applied to this span, if a rule applies
18
+ TAG_RULE_RATE = '_dd.span_sampling.rule_rate'
19
+ # Rate limit configured for this span, if a rule applies
20
+ TAG_MAX_PER_SECOND = '_dd.span_sampling.max_per_second'
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,89 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Datadog
4
+ module Tracing
5
+ module Sampling
6
+ module Span
7
+ # Checks if a span conforms to a matching criteria.
8
+ class Matcher
9
+ attr_reader :name, :service
10
+
11
+ # Pattern that matches any string
12
+ MATCH_ALL_PATTERN = '*'
13
+
14
+ # Matches span name and service to their respective patterns provided.
15
+ #
16
+ # The patterns are {String}s with two special characters available:
17
+ # 1. `?`: matches exactly one of any character.
18
+ # 2. `*`: matches a substring of any size, including zero.
19
+ # These patterns can occur any point of the string, any number of times.
20
+ #
21
+ # Both {SpanOperation#name} and {SpanOperation#service} must match the provided patterns.
22
+ #
23
+ # The whole String has to match the provided patterns: providing a pattern that
24
+ # matches a portion of the provided String is not considered a match.
25
+ #
26
+ # @example web-*
27
+ # `'web-*'` will match any string starting with `web-`.
28
+ # @example cache-?
29
+ # `'cache-?'` will match any string starting with `database-` followed by exactly one character.
30
+ #
31
+ # @param name_pattern [String] a pattern to be matched against {SpanOperation#name}
32
+ # @param service_pattern [String] a pattern to be matched against {SpanOperation#service}
33
+ def initialize(name_pattern: MATCH_ALL_PATTERN, service_pattern: MATCH_ALL_PATTERN)
34
+ @name = pattern_to_regex(name_pattern)
35
+ @service = pattern_to_regex(service_pattern)
36
+ end
37
+
38
+ # {Regexp#match?} was added in Ruby 2.4, and it's measurably
39
+ # the least costly way to get a boolean result for a Regexp match.
40
+ # @see https://www.ruby-lang.org/en/news/2016/12/25/ruby-2-4-0-released/
41
+ if Regexp.method_defined?(:match?)
42
+ # Returns `true` if the span conforms to the configured patterns,
43
+ # `false` otherwise
44
+ #
45
+ # @param [SpanOperation] span
46
+ # @return [Boolean]
47
+ def match?(span)
48
+ # Matching is performed at the end of the lifecycle of a Span,
49
+ # thus both `name` and `service` are guaranteed to be not `nil`.
50
+ @name.match?(span.name) && @service.match?(span.service)
51
+ end
52
+ else
53
+ # DEV: Remove when support for Ruby 2.3 and older is removed.
54
+ def match?(span)
55
+ @name === span.name && @service === span.service
56
+ end
57
+ end
58
+
59
+ def ==(other)
60
+ return super unless other.is_a?(Matcher)
61
+
62
+ name == other.name &&
63
+ service == other.service
64
+ end
65
+
66
+ private
67
+
68
+ # @param pattern [String]
69
+ # @return [Regexp]
70
+ def pattern_to_regex(pattern)
71
+ # Ensure no undesired characters are treated as regex.
72
+ # Our valid special characters, `?` and `*`,
73
+ # will be escaped so...
74
+ pattern = Regexp.quote(pattern)
75
+
76
+ # ...we account for that here:
77
+ pattern.gsub!('\?', '.') # Any single character
78
+ pattern.gsub!('\*', '.*') # Any substring
79
+
80
+ # Patterns have to match the whole input string
81
+ pattern = "\\A#{pattern}\\z"
82
+
83
+ Regexp.new(pattern)
84
+ end
85
+ end
86
+ end
87
+ end
88
+ end
89
+ end