ddtrace 0.34.1 → 1.23.1

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 (1171) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +3321 -277
  3. data/LICENSE-3rdparty.csv +8 -0
  4. data/README.md +17 -9
  5. data/bin/ddprofrb +15 -0
  6. data/bin/ddtracerb +17 -0
  7. data/ext/datadog_profiling_loader/datadog_profiling_loader.c +134 -0
  8. data/ext/datadog_profiling_loader/extconf.rb +72 -0
  9. data/ext/datadog_profiling_native_extension/NativeExtensionDesign.md +156 -0
  10. data/ext/datadog_profiling_native_extension/clock_id.h +22 -0
  11. data/ext/datadog_profiling_native_extension/clock_id_from_pthread.c +56 -0
  12. data/ext/datadog_profiling_native_extension/clock_id_noop.c +22 -0
  13. data/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +1161 -0
  14. data/ext/datadog_profiling_native_extension/collectors_discrete_dynamic_sampler.c +422 -0
  15. data/ext/datadog_profiling_native_extension/collectors_discrete_dynamic_sampler.h +101 -0
  16. data/ext/datadog_profiling_native_extension/collectors_dynamic_sampling_rate.c +150 -0
  17. data/ext/datadog_profiling_native_extension/collectors_dynamic_sampling_rate.h +18 -0
  18. data/ext/datadog_profiling_native_extension/collectors_gc_profiling_helper.c +156 -0
  19. data/ext/datadog_profiling_native_extension/collectors_gc_profiling_helper.h +5 -0
  20. data/ext/datadog_profiling_native_extension/collectors_idle_sampling_helper.c +244 -0
  21. data/ext/datadog_profiling_native_extension/collectors_idle_sampling_helper.h +3 -0
  22. data/ext/datadog_profiling_native_extension/collectors_stack.c +372 -0
  23. data/ext/datadog_profiling_native_extension/collectors_stack.h +27 -0
  24. data/ext/datadog_profiling_native_extension/collectors_thread_context.c +1402 -0
  25. data/ext/datadog_profiling_native_extension/collectors_thread_context.h +15 -0
  26. data/ext/datadog_profiling_native_extension/extconf.rb +302 -0
  27. data/ext/datadog_profiling_native_extension/heap_recorder.c +1047 -0
  28. data/ext/datadog_profiling_native_extension/heap_recorder.h +166 -0
  29. data/ext/datadog_profiling_native_extension/helpers.h +23 -0
  30. data/ext/datadog_profiling_native_extension/http_transport.c +375 -0
  31. data/ext/datadog_profiling_native_extension/libdatadog_helpers.c +62 -0
  32. data/ext/datadog_profiling_native_extension/libdatadog_helpers.h +42 -0
  33. data/ext/datadog_profiling_native_extension/native_extension_helpers.rb +319 -0
  34. data/ext/datadog_profiling_native_extension/private_vm_api_access.c +892 -0
  35. data/ext/datadog_profiling_native_extension/private_vm_api_access.h +61 -0
  36. data/ext/datadog_profiling_native_extension/profiling.c +267 -0
  37. data/ext/datadog_profiling_native_extension/ruby_helpers.c +267 -0
  38. data/ext/datadog_profiling_native_extension/ruby_helpers.h +122 -0
  39. data/ext/datadog_profiling_native_extension/setup_signal_handler.c +115 -0
  40. data/ext/datadog_profiling_native_extension/setup_signal_handler.h +11 -0
  41. data/ext/datadog_profiling_native_extension/stack_recorder.c +1040 -0
  42. data/ext/datadog_profiling_native_extension/stack_recorder.h +27 -0
  43. data/ext/datadog_profiling_native_extension/time_helpers.c +53 -0
  44. data/ext/datadog_profiling_native_extension/time_helpers.h +26 -0
  45. data/lib/datadog/appsec/assets/blocked.html +99 -0
  46. data/lib/datadog/appsec/assets/blocked.json +1 -0
  47. data/lib/datadog/appsec/assets/blocked.text +5 -0
  48. data/lib/datadog/appsec/assets/waf_rules/README.md +7 -0
  49. data/lib/datadog/appsec/assets/waf_rules/processors.json +92 -0
  50. data/lib/datadog/appsec/assets/waf_rules/recommended.json +7703 -0
  51. data/lib/datadog/appsec/assets/waf_rules/scanners.json +114 -0
  52. data/lib/datadog/appsec/assets/waf_rules/strict.json +1635 -0
  53. data/lib/datadog/appsec/assets.rb +44 -0
  54. data/lib/datadog/appsec/autoload.rb +11 -0
  55. data/lib/datadog/appsec/component.rb +94 -0
  56. data/lib/datadog/appsec/configuration/settings.rb +202 -0
  57. data/lib/datadog/appsec/configuration.rb +11 -0
  58. data/lib/datadog/appsec/contrib/auto_instrument.rb +25 -0
  59. data/lib/datadog/appsec/contrib/devise/event.rb +57 -0
  60. data/lib/datadog/appsec/contrib/devise/ext.rb +13 -0
  61. data/lib/datadog/appsec/contrib/devise/integration.rb +42 -0
  62. data/lib/datadog/appsec/contrib/devise/patcher/authenticatable_patch.rb +76 -0
  63. data/lib/datadog/appsec/contrib/devise/patcher/registration_controller_patch.rb +54 -0
  64. data/lib/datadog/appsec/contrib/devise/patcher.rb +45 -0
  65. data/lib/datadog/appsec/contrib/devise/resource.rb +35 -0
  66. data/lib/datadog/appsec/contrib/devise/tracking.rb +57 -0
  67. data/lib/datadog/appsec/contrib/integration.rb +37 -0
  68. data/lib/datadog/appsec/contrib/patcher.rb +12 -0
  69. data/lib/datadog/appsec/contrib/rack/ext.rb +13 -0
  70. data/lib/datadog/appsec/contrib/rack/gateway/request.rb +104 -0
  71. data/lib/datadog/appsec/contrib/rack/gateway/response.rb +30 -0
  72. data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +160 -0
  73. data/lib/datadog/appsec/contrib/rack/integration.rb +42 -0
  74. data/lib/datadog/appsec/contrib/rack/patcher.rb +34 -0
  75. data/lib/datadog/appsec/contrib/rack/reactive/request.rb +81 -0
  76. data/lib/datadog/appsec/contrib/rack/reactive/request_body.rb +60 -0
  77. data/lib/datadog/appsec/contrib/rack/reactive/response.rb +66 -0
  78. data/lib/datadog/appsec/contrib/rack/request_body_middleware.rb +44 -0
  79. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +224 -0
  80. data/lib/datadog/appsec/contrib/rails/ext.rb +13 -0
  81. data/lib/datadog/appsec/contrib/rails/framework.rb +16 -0
  82. data/lib/datadog/appsec/contrib/rails/gateway/request.rb +67 -0
  83. data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +69 -0
  84. data/lib/datadog/appsec/contrib/rails/integration.rb +41 -0
  85. data/lib/datadog/appsec/contrib/rails/patcher.rb +165 -0
  86. data/lib/datadog/appsec/contrib/rails/reactive/action.rb +66 -0
  87. data/lib/datadog/appsec/contrib/rails/request.rb +36 -0
  88. data/lib/datadog/appsec/contrib/rails/request_middleware.rb +20 -0
  89. data/lib/datadog/appsec/contrib/sinatra/ext.rb +14 -0
  90. data/lib/datadog/appsec/contrib/sinatra/framework.rb +20 -0
  91. data/lib/datadog/appsec/contrib/sinatra/gateway/request.rb +17 -0
  92. data/lib/datadog/appsec/contrib/sinatra/gateway/route_params.rb +23 -0
  93. data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +115 -0
  94. data/lib/datadog/appsec/contrib/sinatra/integration.rb +41 -0
  95. data/lib/datadog/appsec/contrib/sinatra/patcher.rb +166 -0
  96. data/lib/datadog/appsec/contrib/sinatra/reactive/routed.rb +61 -0
  97. data/lib/datadog/appsec/contrib/sinatra/request_middleware.rb +20 -0
  98. data/lib/datadog/appsec/event.rb +169 -0
  99. data/lib/datadog/appsec/ext.rb +10 -0
  100. data/lib/datadog/appsec/extensions.rb +15 -0
  101. data/lib/datadog/appsec/instrumentation/gateway/argument.rb +22 -0
  102. data/lib/datadog/appsec/instrumentation/gateway.rb +64 -0
  103. data/lib/datadog/appsec/instrumentation.rb +9 -0
  104. data/lib/datadog/appsec/monitor/gateway/watcher.rb +67 -0
  105. data/lib/datadog/appsec/monitor/reactive/set_user.rb +58 -0
  106. data/lib/datadog/appsec/monitor.rb +11 -0
  107. data/lib/datadog/appsec/processor/actions.rb +49 -0
  108. data/lib/datadog/appsec/processor/rule_loader.rb +123 -0
  109. data/lib/datadog/appsec/processor/rule_merger.rb +152 -0
  110. data/lib/datadog/appsec/processor.rb +171 -0
  111. data/lib/datadog/appsec/rate_limiter.rb +58 -0
  112. data/lib/datadog/appsec/reactive/address_hash.rb +22 -0
  113. data/lib/datadog/appsec/reactive/engine.rb +47 -0
  114. data/lib/datadog/appsec/reactive/operation.rb +68 -0
  115. data/lib/datadog/appsec/reactive/subscriber.rb +19 -0
  116. data/lib/datadog/appsec/remote.rb +129 -0
  117. data/lib/datadog/appsec/response.rb +151 -0
  118. data/lib/datadog/appsec/sample_rate.rb +21 -0
  119. data/lib/datadog/appsec/scope.rb +61 -0
  120. data/lib/datadog/appsec/utils/http/media_range.rb +199 -0
  121. data/lib/datadog/appsec/utils/http/media_type.rb +85 -0
  122. data/lib/datadog/appsec/utils/http.rb +11 -0
  123. data/lib/datadog/appsec/utils.rb +9 -0
  124. data/lib/datadog/appsec.rb +60 -0
  125. data/lib/datadog/auto_instrument.rb +3 -0
  126. data/lib/datadog/core/backport.rb +51 -0
  127. data/lib/datadog/core/buffer/cruby.rb +55 -0
  128. data/lib/datadog/core/buffer/random.rb +134 -0
  129. data/lib/datadog/core/buffer/thread_safe.rb +58 -0
  130. data/lib/datadog/core/chunker.rb +35 -0
  131. data/lib/datadog/core/configuration/agent_settings_resolver.rb +405 -0
  132. data/lib/datadog/core/configuration/base.rb +89 -0
  133. data/lib/datadog/core/configuration/components.rb +174 -0
  134. data/lib/datadog/core/configuration/ext.rb +47 -0
  135. data/lib/datadog/core/configuration/option.rb +319 -0
  136. data/lib/datadog/core/configuration/option_definition.rb +176 -0
  137. data/lib/datadog/core/configuration/options.rb +128 -0
  138. data/lib/datadog/core/configuration/settings.rb +848 -0
  139. data/lib/datadog/core/configuration.rb +309 -0
  140. data/lib/datadog/core/diagnostics/environment_logger.rb +183 -0
  141. data/lib/datadog/core/diagnostics/health.rb +19 -0
  142. data/lib/datadog/core/encoding.rb +72 -0
  143. data/lib/datadog/core/environment/cgroup.rb +51 -0
  144. data/lib/datadog/core/environment/class_count.rb +21 -0
  145. data/lib/datadog/core/environment/container.rb +89 -0
  146. data/lib/datadog/core/environment/execution.rb +103 -0
  147. data/lib/datadog/core/environment/ext.rb +46 -0
  148. data/lib/datadog/core/environment/gc.rb +20 -0
  149. data/lib/datadog/core/environment/git.rb +25 -0
  150. data/lib/datadog/core/environment/identity.rb +84 -0
  151. data/lib/datadog/core/environment/platform.rb +44 -0
  152. data/lib/datadog/core/environment/socket.rb +24 -0
  153. data/lib/datadog/core/environment/thread_count.rb +20 -0
  154. data/lib/datadog/core/environment/variable_helpers.rb +53 -0
  155. data/lib/datadog/core/environment/vm_cache.rb +64 -0
  156. data/lib/datadog/core/environment/yjit.rb +58 -0
  157. data/lib/datadog/core/error.rb +100 -0
  158. data/lib/datadog/core/extensions.rb +16 -0
  159. data/lib/datadog/core/git/ext.rb +16 -0
  160. data/lib/datadog/core/header_collection.rb +43 -0
  161. data/lib/datadog/core/logger.rb +44 -0
  162. data/lib/datadog/core/logging/ext.rb +13 -0
  163. data/lib/datadog/core/metrics/client.rb +197 -0
  164. data/lib/datadog/core/metrics/ext.rb +18 -0
  165. data/lib/datadog/core/metrics/helpers.rb +25 -0
  166. data/lib/datadog/core/metrics/logging.rb +42 -0
  167. data/lib/datadog/core/metrics/metric.rb +14 -0
  168. data/lib/datadog/core/metrics/options.rb +48 -0
  169. data/lib/datadog/core/pin.rb +73 -0
  170. data/lib/datadog/core/remote/client/capabilities.rb +62 -0
  171. data/lib/datadog/core/remote/client.rb +232 -0
  172. data/lib/datadog/core/remote/component.rb +162 -0
  173. data/lib/datadog/core/remote/configuration/content.rb +111 -0
  174. data/lib/datadog/core/remote/configuration/digest.rb +62 -0
  175. data/lib/datadog/core/remote/configuration/path.rb +90 -0
  176. data/lib/datadog/core/remote/configuration/repository.rb +294 -0
  177. data/lib/datadog/core/remote/configuration/target.rb +74 -0
  178. data/lib/datadog/core/remote/configuration.rb +18 -0
  179. data/lib/datadog/core/remote/dispatcher.rb +59 -0
  180. data/lib/datadog/core/remote/ext.rb +13 -0
  181. data/lib/datadog/core/remote/negotiation.rb +70 -0
  182. data/lib/datadog/core/remote/tie/tracing.rb +39 -0
  183. data/lib/datadog/core/remote/tie.rb +27 -0
  184. data/lib/datadog/core/remote/transport/config.rb +60 -0
  185. data/lib/datadog/core/remote/transport/http/api/instance.rb +39 -0
  186. data/lib/datadog/core/remote/transport/http/api/spec.rb +21 -0
  187. data/lib/datadog/core/remote/transport/http/api.rb +58 -0
  188. data/lib/datadog/core/remote/transport/http/builder.rb +219 -0
  189. data/lib/datadog/core/remote/transport/http/client.rb +48 -0
  190. data/lib/datadog/core/remote/transport/http/config.rb +280 -0
  191. data/lib/datadog/core/remote/transport/http/negotiation.rb +146 -0
  192. data/lib/datadog/core/remote/transport/http.rb +179 -0
  193. data/lib/datadog/core/remote/transport/negotiation.rb +62 -0
  194. data/lib/datadog/core/remote/worker.rb +102 -0
  195. data/lib/datadog/core/remote.rb +24 -0
  196. data/lib/datadog/core/runtime/ext.rb +38 -0
  197. data/lib/datadog/core/runtime/metrics.rb +183 -0
  198. data/lib/datadog/core/telemetry/client.rb +95 -0
  199. data/lib/datadog/core/telemetry/emitter.rb +44 -0
  200. data/lib/datadog/core/telemetry/event.rb +273 -0
  201. data/lib/datadog/core/telemetry/ext.rb +16 -0
  202. data/lib/datadog/core/telemetry/heartbeat.rb +33 -0
  203. data/lib/datadog/core/telemetry/http/adapters/net.rb +111 -0
  204. data/lib/datadog/core/telemetry/http/env.rb +20 -0
  205. data/lib/datadog/core/telemetry/http/ext.rb +25 -0
  206. data/lib/datadog/core/telemetry/http/response.rb +68 -0
  207. data/lib/datadog/core/telemetry/http/transport.rb +61 -0
  208. data/lib/datadog/core/telemetry/request.rb +59 -0
  209. data/lib/datadog/core/transport/ext.rb +49 -0
  210. data/lib/datadog/core/transport/http/adapters/net.rb +168 -0
  211. data/lib/datadog/core/transport/http/adapters/registry.rb +29 -0
  212. data/lib/datadog/core/transport/http/adapters/test.rb +89 -0
  213. data/lib/datadog/core/transport/http/adapters/unix_socket.rb +83 -0
  214. data/lib/datadog/core/transport/http/api/endpoint.rb +31 -0
  215. data/lib/datadog/core/transport/http/api/fallbacks.rb +26 -0
  216. data/lib/datadog/core/transport/http/api/map.rb +18 -0
  217. data/lib/datadog/core/transport/http/env.rb +62 -0
  218. data/lib/datadog/core/transport/http/response.rb +60 -0
  219. data/lib/datadog/core/transport/parcel.rb +22 -0
  220. data/lib/datadog/core/transport/request.rb +17 -0
  221. data/lib/datadog/core/transport/response.rb +64 -0
  222. data/lib/datadog/core/utils/compression.rb +36 -0
  223. data/lib/datadog/core/utils/duration.rb +52 -0
  224. data/lib/datadog/core/utils/forking.rb +61 -0
  225. data/lib/datadog/core/utils/hash.rb +79 -0
  226. data/lib/datadog/core/utils/network.rb +140 -0
  227. data/lib/datadog/core/utils/only_once.rb +42 -0
  228. data/lib/datadog/core/utils/safe_dup.rb +50 -0
  229. data/lib/datadog/core/utils/sequence.rb +26 -0
  230. data/lib/datadog/core/utils/time.rb +52 -0
  231. data/lib/datadog/core/utils/url.rb +25 -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/LICENSE +11 -0
  235. data/lib/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rb +118 -0
  236. data/lib/datadog/core/vendor/multipart-post/multipart/post/multipartable.rb +59 -0
  237. data/lib/datadog/core/vendor/multipart-post/multipart/post/parts.rb +137 -0
  238. data/lib/datadog/core/vendor/multipart-post/multipart/post/version.rb +11 -0
  239. data/lib/datadog/core/vendor/multipart-post/multipart/post.rb +10 -0
  240. data/lib/datadog/core/vendor/multipart-post/multipart.rb +14 -0
  241. data/lib/datadog/core/vendor/multipart-post/net/http/post/multipart.rb +34 -0
  242. data/lib/datadog/core/worker.rb +24 -0
  243. data/lib/datadog/core/workers/async.rb +183 -0
  244. data/lib/datadog/core/workers/interval_loop.rb +123 -0
  245. data/lib/datadog/core/workers/polling.rb +57 -0
  246. data/lib/datadog/core/workers/queue.rb +44 -0
  247. data/lib/datadog/core/workers/runtime_metrics.rb +62 -0
  248. data/lib/datadog/core.rb +45 -0
  249. data/lib/datadog/kit/appsec/events.rb +169 -0
  250. data/lib/datadog/kit/enable_core_dumps.rb +49 -0
  251. data/lib/datadog/kit/identity.rb +104 -0
  252. data/lib/datadog/kit.rb +11 -0
  253. data/lib/datadog/opentelemetry/api/context.rb +193 -0
  254. data/lib/datadog/opentelemetry/api/trace/span.rb +14 -0
  255. data/lib/datadog/opentelemetry/sdk/configurator.rb +37 -0
  256. data/lib/datadog/opentelemetry/sdk/id_generator.rb +26 -0
  257. data/lib/datadog/opentelemetry/sdk/propagator.rb +92 -0
  258. data/lib/datadog/opentelemetry/sdk/span_processor.rb +134 -0
  259. data/lib/datadog/opentelemetry/sdk/trace/span.rb +167 -0
  260. data/lib/datadog/opentelemetry/trace.rb +58 -0
  261. data/lib/datadog/opentelemetry.rb +51 -0
  262. data/lib/datadog/opentracer/binary_propagator.rb +26 -0
  263. data/lib/datadog/opentracer/carrier.rb +9 -0
  264. data/lib/datadog/opentracer/distributed_headers.rb +54 -0
  265. data/lib/datadog/opentracer/global_tracer.rb +17 -0
  266. data/lib/datadog/opentracer/propagator.rb +26 -0
  267. data/lib/datadog/opentracer/rack_propagator.rb +71 -0
  268. data/lib/datadog/opentracer/scope.rb +18 -0
  269. data/lib/datadog/opentracer/scope_manager.rb +9 -0
  270. data/lib/datadog/opentracer/span.rb +99 -0
  271. data/lib/datadog/opentracer/span_context.rb +19 -0
  272. data/lib/datadog/opentracer/span_context_factory.rb +27 -0
  273. data/lib/datadog/opentracer/text_map_propagator.rb +87 -0
  274. data/lib/datadog/opentracer/thread_local_scope.rb +34 -0
  275. data/lib/datadog/opentracer/thread_local_scope_manager.rb +64 -0
  276. data/lib/datadog/opentracer/tracer.rb +212 -0
  277. data/lib/datadog/opentracer.rb +33 -0
  278. data/lib/datadog/profiling/collectors/code_provenance.rb +119 -0
  279. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +137 -0
  280. data/lib/datadog/profiling/collectors/dynamic_sampling_rate.rb +14 -0
  281. data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +68 -0
  282. data/lib/datadog/profiling/collectors/info.rb +101 -0
  283. data/lib/datadog/profiling/collectors/stack.rb +13 -0
  284. data/lib/datadog/profiling/collectors/thread_context.rb +61 -0
  285. data/lib/datadog/profiling/component.rb +426 -0
  286. data/lib/datadog/profiling/exporter.rb +104 -0
  287. data/lib/datadog/profiling/ext/forking.rb +96 -0
  288. data/lib/datadog/profiling/ext.rb +35 -0
  289. data/lib/datadog/profiling/flush.rb +43 -0
  290. data/lib/datadog/profiling/http_transport.rb +147 -0
  291. data/lib/datadog/profiling/load_native_extension.rb +39 -0
  292. data/lib/datadog/profiling/native_extension.rb +20 -0
  293. data/lib/datadog/profiling/preload.rb +5 -0
  294. data/lib/datadog/profiling/profiler.rb +62 -0
  295. data/lib/datadog/profiling/scheduler.rb +135 -0
  296. data/lib/datadog/profiling/stack_recorder.rb +71 -0
  297. data/lib/datadog/profiling/tag_builder.rb +58 -0
  298. data/lib/datadog/profiling/tasks/exec.rb +48 -0
  299. data/lib/datadog/profiling/tasks/help.rb +16 -0
  300. data/lib/datadog/profiling/tasks/setup.rb +58 -0
  301. data/lib/datadog/profiling.rb +161 -0
  302. data/lib/datadog/tracing/analytics.rb +25 -0
  303. data/lib/datadog/tracing/buffer.rb +127 -0
  304. data/lib/datadog/tracing/client_ip.rb +61 -0
  305. data/lib/datadog/tracing/component.rb +235 -0
  306. data/lib/datadog/tracing/configuration/agent_settings_resolver.rb +13 -0
  307. data/lib/datadog/tracing/configuration/dynamic/option.rb +71 -0
  308. data/lib/datadog/tracing/configuration/dynamic.rb +64 -0
  309. data/lib/datadog/tracing/configuration/ext.rb +108 -0
  310. data/lib/datadog/tracing/configuration/http.rb +74 -0
  311. data/lib/datadog/tracing/configuration/settings.rb +502 -0
  312. data/lib/datadog/tracing/context.rb +68 -0
  313. data/lib/datadog/tracing/context_provider.rb +80 -0
  314. data/lib/datadog/tracing/contrib/action_cable/configuration/settings.rb +39 -0
  315. data/lib/datadog/tracing/contrib/action_cable/event.rb +71 -0
  316. data/lib/datadog/tracing/contrib/action_cable/events/broadcast.rb +56 -0
  317. data/lib/datadog/tracing/contrib/action_cable/events/perform_action.rb +61 -0
  318. data/lib/datadog/tracing/contrib/action_cable/events/transmit.rb +57 -0
  319. data/lib/datadog/tracing/contrib/action_cable/events.rb +37 -0
  320. data/lib/datadog/tracing/contrib/action_cable/ext.rb +33 -0
  321. data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +88 -0
  322. data/lib/datadog/tracing/contrib/action_cable/integration.rb +48 -0
  323. data/lib/datadog/tracing/contrib/action_cable/patcher.rb +31 -0
  324. data/lib/datadog/tracing/contrib/action_mailer/configuration/settings.rb +40 -0
  325. data/lib/datadog/tracing/contrib/action_mailer/event.rb +52 -0
  326. data/lib/datadog/tracing/contrib/action_mailer/events/deliver.rb +58 -0
  327. data/lib/datadog/tracing/contrib/action_mailer/events/process.rb +45 -0
  328. data/lib/datadog/tracing/contrib/action_mailer/events.rb +34 -0
  329. data/lib/datadog/tracing/contrib/action_mailer/ext.rb +34 -0
  330. data/lib/datadog/tracing/contrib/action_mailer/integration.rb +48 -0
  331. data/lib/datadog/tracing/contrib/action_mailer/patcher.rb +29 -0
  332. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +136 -0
  333. data/lib/datadog/tracing/contrib/action_pack/action_controller/patcher.rb +29 -0
  334. data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +50 -0
  335. data/lib/datadog/tracing/contrib/action_pack/ext.rb +23 -0
  336. data/lib/datadog/tracing/contrib/action_pack/integration.rb +48 -0
  337. data/lib/datadog/tracing/contrib/action_pack/patcher.rb +27 -0
  338. data/lib/datadog/tracing/contrib/action_pack/utils.rb +38 -0
  339. data/lib/datadog/tracing/contrib/action_view/configuration/settings.rb +38 -0
  340. data/lib/datadog/tracing/contrib/action_view/event.rb +35 -0
  341. data/lib/datadog/tracing/contrib/action_view/events/render_partial.rb +52 -0
  342. data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +55 -0
  343. data/lib/datadog/tracing/contrib/action_view/events.rb +34 -0
  344. data/lib/datadog/tracing/contrib/action_view/ext.rb +25 -0
  345. data/lib/datadog/tracing/contrib/action_view/instrumentation/partial_renderer.rb +76 -0
  346. data/lib/datadog/tracing/contrib/action_view/instrumentation/template_renderer.rb +89 -0
  347. data/lib/datadog/tracing/contrib/action_view/integration.rb +55 -0
  348. data/lib/datadog/tracing/contrib/action_view/patcher.rb +45 -0
  349. data/lib/datadog/tracing/contrib/action_view/utils.rb +34 -0
  350. data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +44 -0
  351. data/lib/datadog/tracing/contrib/active_job/event.rb +58 -0
  352. data/lib/datadog/tracing/contrib/active_job/events/discard.rb +48 -0
  353. data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +47 -0
  354. data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +47 -0
  355. data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +49 -0
  356. data/lib/datadog/tracing/contrib/active_job/events/perform.rb +47 -0
  357. data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +48 -0
  358. data/lib/datadog/tracing/contrib/active_job/events.rb +42 -0
  359. data/lib/datadog/tracing/contrib/active_job/ext.rb +40 -0
  360. data/lib/datadog/tracing/contrib/active_job/integration.rb +48 -0
  361. data/lib/datadog/tracing/contrib/active_job/log_injection.rb +24 -0
  362. data/lib/datadog/tracing/contrib/active_job/patcher.rb +36 -0
  363. data/lib/datadog/tracing/contrib/active_model_serializers/configuration/settings.rb +37 -0
  364. data/lib/datadog/tracing/contrib/active_model_serializers/event.rb +68 -0
  365. data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +43 -0
  366. data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +45 -0
  367. data/lib/datadog/tracing/contrib/active_model_serializers/events.rb +34 -0
  368. data/lib/datadog/tracing/contrib/active_model_serializers/ext.rb +25 -0
  369. data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +43 -0
  370. data/lib/datadog/tracing/contrib/active_model_serializers/patcher.rb +32 -0
  371. data/lib/datadog/tracing/contrib/active_record/configuration/makara_resolver.rb +34 -0
  372. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +150 -0
  373. data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +47 -0
  374. data/lib/datadog/tracing/contrib/active_record/event.rb +30 -0
  375. data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +56 -0
  376. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +75 -0
  377. data/lib/datadog/tracing/contrib/active_record/events.rb +34 -0
  378. data/lib/datadog/tracing/contrib/active_record/ext.rb +30 -0
  379. data/lib/datadog/tracing/contrib/active_record/integration.rb +54 -0
  380. data/lib/datadog/tracing/contrib/active_record/patcher.rb +27 -0
  381. data/lib/datadog/tracing/contrib/active_record/utils.rb +126 -0
  382. data/lib/datadog/tracing/contrib/active_record/vendor/MIT-LICENSE +20 -0
  383. data/lib/datadog/tracing/contrib/active_record/vendor/connection_specification.rb +305 -0
  384. data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +186 -0
  385. data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +76 -0
  386. data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +47 -0
  387. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +46 -0
  388. data/lib/datadog/tracing/contrib/active_support/ext.rb +32 -0
  389. data/lib/datadog/tracing/contrib/active_support/integration.rb +49 -0
  390. data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +71 -0
  391. data/lib/datadog/tracing/contrib/active_support/notifications/subscriber.rb +71 -0
  392. data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +162 -0
  393. data/lib/datadog/tracing/contrib/active_support/patcher.rb +27 -0
  394. data/lib/datadog/tracing/contrib/analytics.rb +28 -0
  395. data/lib/datadog/tracing/contrib/auto_instrument.rb +53 -0
  396. data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +52 -0
  397. data/lib/datadog/tracing/contrib/aws/ext.rb +50 -0
  398. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +119 -0
  399. data/lib/datadog/tracing/contrib/aws/integration.rb +45 -0
  400. data/lib/datadog/tracing/contrib/aws/parsed_context.rb +62 -0
  401. data/lib/datadog/tracing/contrib/aws/patcher.rb +57 -0
  402. data/lib/datadog/tracing/contrib/aws/service/base.rb +16 -0
  403. data/lib/datadog/tracing/contrib/aws/service/dynamodb.rb +22 -0
  404. data/lib/datadog/tracing/contrib/aws/service/eventbridge.rb +22 -0
  405. data/lib/datadog/tracing/contrib/aws/service/kinesis.rb +32 -0
  406. data/lib/datadog/tracing/contrib/aws/service/s3.rb +22 -0
  407. data/lib/datadog/tracing/contrib/aws/service/sns.rb +30 -0
  408. data/lib/datadog/tracing/contrib/aws/service/sqs.rb +27 -0
  409. data/lib/datadog/tracing/contrib/aws/service/states.rb +40 -0
  410. data/lib/datadog/tracing/contrib/aws/services.rb +137 -0
  411. data/lib/datadog/tracing/contrib/concurrent_ruby/async_patch.rb +20 -0
  412. data/lib/datadog/tracing/contrib/concurrent_ruby/configuration/settings.rb +24 -0
  413. data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +53 -0
  414. data/lib/datadog/tracing/contrib/concurrent_ruby/ext.rb +16 -0
  415. data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +20 -0
  416. data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +42 -0
  417. data/lib/datadog/tracing/contrib/concurrent_ruby/patcher.rb +49 -0
  418. data/lib/datadog/tracing/contrib/concurrent_ruby/promises_future_patch.rb +22 -0
  419. data/lib/datadog/tracing/contrib/configurable.rb +102 -0
  420. data/lib/datadog/tracing/contrib/configuration/resolver.rb +85 -0
  421. data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +43 -0
  422. data/lib/datadog/tracing/contrib/configuration/settings.rb +39 -0
  423. data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +57 -0
  424. data/lib/datadog/tracing/contrib/dalli/ext.rb +40 -0
  425. data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +73 -0
  426. data/lib/datadog/tracing/contrib/dalli/integration.rb +50 -0
  427. data/lib/datadog/tracing/contrib/dalli/patcher.rb +28 -0
  428. data/lib/datadog/tracing/contrib/dalli/quantize.rb +24 -0
  429. data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +45 -0
  430. data/lib/datadog/tracing/contrib/delayed_job/ext.rb +29 -0
  431. data/lib/datadog/tracing/contrib/delayed_job/integration.rb +41 -0
  432. data/lib/datadog/tracing/contrib/delayed_job/patcher.rb +37 -0
  433. data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +108 -0
  434. data/lib/datadog/tracing/contrib/delayed_job/server_internal_tracer/worker.rb +34 -0
  435. data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +53 -0
  436. data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +34 -0
  437. data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +48 -0
  438. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +160 -0
  439. data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +85 -0
  440. data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +55 -0
  441. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +221 -0
  442. data/lib/datadog/tracing/contrib/ethon/ext.rb +32 -0
  443. data/lib/datadog/tracing/contrib/ethon/integration.rb +46 -0
  444. data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +102 -0
  445. data/lib/datadog/tracing/contrib/ethon/patcher.rb +30 -0
  446. data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +57 -0
  447. data/lib/datadog/tracing/contrib/excon/ext.rb +29 -0
  448. data/lib/datadog/tracing/contrib/excon/integration.rb +46 -0
  449. data/lib/datadog/tracing/contrib/excon/middleware.rb +192 -0
  450. data/lib/datadog/tracing/contrib/excon/patcher.rb +31 -0
  451. data/lib/datadog/tracing/contrib/ext.rb +55 -0
  452. data/lib/datadog/tracing/contrib/extensions.rb +233 -0
  453. data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +68 -0
  454. data/lib/datadog/tracing/contrib/faraday/connection.rb +22 -0
  455. data/lib/datadog/tracing/contrib/faraday/ext.rb +29 -0
  456. data/lib/datadog/tracing/contrib/faraday/integration.rb +46 -0
  457. data/lib/datadog/tracing/contrib/faraday/middleware.rb +110 -0
  458. data/lib/datadog/tracing/contrib/faraday/patcher.rb +54 -0
  459. data/lib/datadog/tracing/contrib/faraday/rack_builder.rb +22 -0
  460. data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +45 -0
  461. data/lib/datadog/tracing/contrib/grape/endpoint.rb +248 -0
  462. data/lib/datadog/tracing/contrib/grape/ext.rb +29 -0
  463. data/lib/datadog/tracing/contrib/grape/instrumentation.rb +35 -0
  464. data/lib/datadog/tracing/contrib/grape/integration.rb +42 -0
  465. data/lib/datadog/tracing/contrib/grape/patcher.rb +33 -0
  466. data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +39 -0
  467. data/lib/datadog/tracing/contrib/graphql/ext.rb +20 -0
  468. data/lib/datadog/tracing/contrib/graphql/integration.rb +42 -0
  469. data/lib/datadog/tracing/contrib/graphql/patcher.rb +88 -0
  470. data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +79 -0
  471. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +119 -0
  472. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +107 -0
  473. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb +101 -0
  474. data/lib/datadog/tracing/contrib/grpc/distributed/fetcher.rb +26 -0
  475. data/lib/datadog/tracing/contrib/grpc/distributed/propagation.rb +42 -0
  476. data/lib/datadog/tracing/contrib/grpc/ext.rb +29 -0
  477. data/lib/datadog/tracing/contrib/grpc/formatting.rb +127 -0
  478. data/lib/datadog/tracing/contrib/grpc/integration.rb +48 -0
  479. data/lib/datadog/tracing/contrib/grpc/intercept_with_datadog.rb +53 -0
  480. data/lib/datadog/tracing/contrib/grpc/patcher.rb +34 -0
  481. data/lib/datadog/tracing/contrib/hanami/action_tracer.rb +47 -0
  482. data/lib/datadog/tracing/contrib/hanami/configuration/settings.rb +23 -0
  483. data/lib/datadog/tracing/contrib/hanami/ext.rb +24 -0
  484. data/lib/datadog/tracing/contrib/hanami/integration.rb +42 -0
  485. data/lib/datadog/tracing/contrib/hanami/patcher.rb +33 -0
  486. data/lib/datadog/tracing/contrib/hanami/plugin.rb +23 -0
  487. data/lib/datadog/tracing/contrib/hanami/renderer_policy_tracing.rb +41 -0
  488. data/lib/datadog/tracing/contrib/hanami/router_tracing.rb +44 -0
  489. data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +40 -0
  490. data/lib/datadog/tracing/contrib/http/configuration/settings.rb +75 -0
  491. data/lib/datadog/tracing/contrib/http/distributed/fetcher.rb +38 -0
  492. data/lib/datadog/tracing/contrib/http/distributed/propagation.rb +37 -0
  493. data/lib/datadog/tracing/contrib/http/ext.rb +29 -0
  494. data/lib/datadog/tracing/contrib/http/instrumentation.rb +158 -0
  495. data/lib/datadog/tracing/contrib/http/integration.rb +49 -0
  496. data/lib/datadog/tracing/contrib/http/patcher.rb +30 -0
  497. data/lib/datadog/tracing/contrib/http_annotation_helper.rb +17 -0
  498. data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +75 -0
  499. data/lib/datadog/tracing/contrib/httpclient/ext.rb +30 -0
  500. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +135 -0
  501. data/lib/datadog/tracing/contrib/httpclient/integration.rb +46 -0
  502. data/lib/datadog/tracing/contrib/httpclient/patcher.rb +40 -0
  503. data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +75 -0
  504. data/lib/datadog/tracing/contrib/httprb/ext.rb +29 -0
  505. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +145 -0
  506. data/lib/datadog/tracing/contrib/httprb/integration.rb +46 -0
  507. data/lib/datadog/tracing/contrib/httprb/patcher.rb +40 -0
  508. data/lib/datadog/tracing/contrib/integration.rb +78 -0
  509. data/lib/datadog/tracing/contrib/kafka/configuration/settings.rb +39 -0
  510. data/lib/datadog/tracing/contrib/kafka/consumer_event.rb +19 -0
  511. data/lib/datadog/tracing/contrib/kafka/consumer_group_event.rb +18 -0
  512. data/lib/datadog/tracing/contrib/kafka/event.rb +53 -0
  513. data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +40 -0
  514. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +47 -0
  515. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +45 -0
  516. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +45 -0
  517. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +35 -0
  518. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +35 -0
  519. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +35 -0
  520. data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +39 -0
  521. data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +42 -0
  522. data/lib/datadog/tracing/contrib/kafka/events.rb +48 -0
  523. data/lib/datadog/tracing/contrib/kafka/ext.rb +55 -0
  524. data/lib/datadog/tracing/contrib/kafka/integration.rb +42 -0
  525. data/lib/datadog/tracing/contrib/kafka/patcher.rb +29 -0
  526. data/lib/datadog/tracing/contrib/lograge/configuration/settings.rb +24 -0
  527. data/lib/datadog/tracing/contrib/lograge/ext.rb +15 -0
  528. data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +31 -0
  529. data/lib/datadog/tracing/contrib/lograge/integration.rb +48 -0
  530. data/lib/datadog/tracing/contrib/lograge/patcher.rb +29 -0
  531. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +55 -0
  532. data/lib/datadog/tracing/contrib/mongodb/ext.rb +38 -0
  533. data/lib/datadog/tracing/contrib/mongodb/instrumentation.rb +47 -0
  534. data/lib/datadog/tracing/contrib/mongodb/integration.rb +46 -0
  535. data/lib/datadog/tracing/contrib/mongodb/parsers.rb +47 -0
  536. data/lib/datadog/tracing/contrib/mongodb/patcher.rb +34 -0
  537. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +139 -0
  538. data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +63 -0
  539. data/lib/datadog/tracing/contrib/mysql2/ext.rb +28 -0
  540. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +95 -0
  541. data/lib/datadog/tracing/contrib/mysql2/integration.rb +41 -0
  542. data/lib/datadog/tracing/contrib/mysql2/patcher.rb +31 -0
  543. data/lib/datadog/tracing/contrib/opensearch/configuration/settings.rb +53 -0
  544. data/lib/datadog/tracing/contrib/opensearch/ext.rb +38 -0
  545. data/lib/datadog/tracing/contrib/opensearch/integration.rb +44 -0
  546. data/lib/datadog/tracing/contrib/opensearch/patcher.rb +135 -0
  547. data/lib/datadog/tracing/contrib/opensearch/quantize.rb +81 -0
  548. data/lib/datadog/tracing/contrib/patchable.rb +109 -0
  549. data/lib/datadog/tracing/contrib/patcher.rb +83 -0
  550. data/lib/datadog/tracing/contrib/pg/configuration/settings.rb +64 -0
  551. data/lib/datadog/tracing/contrib/pg/ext.rb +35 -0
  552. data/lib/datadog/tracing/contrib/pg/instrumentation.rb +211 -0
  553. data/lib/datadog/tracing/contrib/pg/integration.rb +41 -0
  554. data/lib/datadog/tracing/contrib/pg/patcher.rb +31 -0
  555. data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +51 -0
  556. data/lib/datadog/tracing/contrib/presto/ext.rb +38 -0
  557. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +136 -0
  558. data/lib/datadog/tracing/contrib/presto/integration.rb +41 -0
  559. data/lib/datadog/tracing/contrib/presto/patcher.rb +35 -0
  560. data/lib/datadog/tracing/contrib/propagation/sql_comment/comment.rb +41 -0
  561. data/lib/datadog/tracing/contrib/propagation/sql_comment/ext.rb +33 -0
  562. data/lib/datadog/tracing/contrib/propagation/sql_comment/mode.rb +28 -0
  563. data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +53 -0
  564. data/lib/datadog/tracing/contrib/qless/configuration/settings.rb +45 -0
  565. data/lib/datadog/tracing/contrib/qless/ext.rb +27 -0
  566. data/lib/datadog/tracing/contrib/qless/integration.rb +41 -0
  567. data/lib/datadog/tracing/contrib/qless/patcher.rb +36 -0
  568. data/lib/datadog/tracing/contrib/qless/qless_job.rb +75 -0
  569. data/lib/datadog/tracing/contrib/qless/tracer_cleaner.rb +30 -0
  570. data/lib/datadog/tracing/contrib/que/configuration/settings.rb +57 -0
  571. data/lib/datadog/tracing/contrib/que/ext.rb +33 -0
  572. data/lib/datadog/tracing/contrib/que/integration.rb +44 -0
  573. data/lib/datadog/tracing/contrib/que/patcher.rb +26 -0
  574. data/lib/datadog/tracing/contrib/que/tracer.rb +63 -0
  575. data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +46 -0
  576. data/lib/datadog/tracing/contrib/racecar/event.rb +81 -0
  577. data/lib/datadog/tracing/contrib/racecar/events/batch.rb +36 -0
  578. data/lib/datadog/tracing/contrib/racecar/events/consume.rb +33 -0
  579. data/lib/datadog/tracing/contrib/racecar/events/message.rb +36 -0
  580. data/lib/datadog/tracing/contrib/racecar/events.rb +36 -0
  581. data/lib/datadog/tracing/contrib/racecar/ext.rb +33 -0
  582. data/lib/datadog/tracing/contrib/racecar/integration.rb +42 -0
  583. data/lib/datadog/tracing/contrib/racecar/patcher.rb +29 -0
  584. data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +54 -0
  585. data/lib/datadog/tracing/contrib/rack/ext.rb +31 -0
  586. data/lib/datadog/tracing/contrib/rack/header_collection.rb +38 -0
  587. data/lib/datadog/tracing/contrib/rack/header_tagging.rb +63 -0
  588. data/lib/datadog/tracing/contrib/rack/integration.rb +48 -0
  589. data/lib/datadog/tracing/contrib/rack/middlewares.rb +315 -0
  590. data/lib/datadog/tracing/contrib/rack/patcher.rb +117 -0
  591. data/lib/datadog/tracing/contrib/rack/request_queue.rb +46 -0
  592. data/lib/datadog/tracing/contrib/rails/auto_instrument_railtie.rb +8 -0
  593. data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +84 -0
  594. data/lib/datadog/tracing/contrib/rails/ext.rb +20 -0
  595. data/lib/datadog/tracing/contrib/rails/framework.rb +148 -0
  596. data/lib/datadog/tracing/contrib/rails/integration.rb +47 -0
  597. data/lib/datadog/tracing/contrib/rails/log_injection.rb +27 -0
  598. data/lib/datadog/tracing/contrib/rails/middlewares.rb +46 -0
  599. data/lib/datadog/tracing/contrib/rails/patcher.rb +87 -0
  600. data/lib/datadog/tracing/contrib/rails/railtie.rb +17 -0
  601. data/lib/datadog/tracing/contrib/rails/utils.rb +28 -0
  602. data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +55 -0
  603. data/lib/datadog/tracing/contrib/rake/ext.rb +27 -0
  604. data/lib/datadog/tracing/contrib/rake/instrumentation.rb +101 -0
  605. data/lib/datadog/tracing/contrib/rake/integration.rb +41 -0
  606. data/lib/datadog/tracing/contrib/rake/patcher.rb +33 -0
  607. data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +47 -0
  608. data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +57 -0
  609. data/lib/datadog/tracing/contrib/redis/ext.rb +35 -0
  610. data/lib/datadog/tracing/contrib/redis/instrumentation.rb +51 -0
  611. data/lib/datadog/tracing/contrib/redis/integration.rb +78 -0
  612. data/lib/datadog/tracing/contrib/redis/patcher.rb +90 -0
  613. data/lib/datadog/tracing/contrib/redis/quantize.rb +80 -0
  614. data/lib/datadog/tracing/contrib/redis/tags.rb +68 -0
  615. data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +83 -0
  616. data/lib/datadog/tracing/contrib/redis/vendor/LICENSE +20 -0
  617. data/lib/datadog/tracing/contrib/redis/vendor/resolver.rb +160 -0
  618. data/lib/datadog/tracing/contrib/registerable.rb +50 -0
  619. data/lib/datadog/tracing/contrib/registry.rb +52 -0
  620. data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +44 -0
  621. data/lib/datadog/tracing/contrib/resque/ext.rb +22 -0
  622. data/lib/datadog/tracing/contrib/resque/integration.rb +46 -0
  623. data/lib/datadog/tracing/contrib/resque/patcher.rb +29 -0
  624. data/lib/datadog/tracing/contrib/resque/resque_job.rb +106 -0
  625. data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +55 -0
  626. data/lib/datadog/tracing/contrib/rest_client/ext.rb +28 -0
  627. data/lib/datadog/tracing/contrib/rest_client/integration.rb +41 -0
  628. data/lib/datadog/tracing/contrib/rest_client/patcher.rb +28 -0
  629. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +129 -0
  630. data/lib/datadog/tracing/contrib/roda/configuration/settings.rb +38 -0
  631. data/lib/datadog/tracing/contrib/roda/ext.rb +19 -0
  632. data/lib/datadog/tracing/contrib/roda/instrumentation.rb +76 -0
  633. data/lib/datadog/tracing/contrib/roda/integration.rb +45 -0
  634. data/lib/datadog/tracing/contrib/roda/patcher.rb +30 -0
  635. data/lib/datadog/tracing/contrib/semantic_logger/configuration/settings.rb +24 -0
  636. data/lib/datadog/tracing/contrib/semantic_logger/ext.rb +15 -0
  637. data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +35 -0
  638. data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +50 -0
  639. data/lib/datadog/tracing/contrib/semantic_logger/patcher.rb +29 -0
  640. data/lib/datadog/tracing/contrib/sequel/configuration/settings.rb +37 -0
  641. data/lib/datadog/tracing/contrib/sequel/database.rb +60 -0
  642. data/lib/datadog/tracing/contrib/sequel/dataset.rb +67 -0
  643. data/lib/datadog/tracing/contrib/sequel/ext.rb +23 -0
  644. data/lib/datadog/tracing/contrib/sequel/integration.rb +41 -0
  645. data/lib/datadog/tracing/contrib/sequel/patcher.rb +37 -0
  646. data/lib/datadog/tracing/contrib/sequel/utils.rb +88 -0
  647. data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +45 -0
  648. data/lib/datadog/tracing/contrib/shoryuken/ext.rb +27 -0
  649. data/lib/datadog/tracing/contrib/shoryuken/integration.rb +42 -0
  650. data/lib/datadog/tracing/contrib/shoryuken/patcher.rb +28 -0
  651. data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +65 -0
  652. data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +66 -0
  653. data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +53 -0
  654. data/lib/datadog/tracing/contrib/sidekiq/distributed/propagation.rb +38 -0
  655. data/lib/datadog/tracing/contrib/sidekiq/ext.rb +45 -0
  656. data/lib/datadog/tracing/contrib/sidekiq/integration.rb +59 -0
  657. data/lib/datadog/tracing/contrib/sidekiq/patcher.rb +90 -0
  658. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/heartbeat.rb +61 -0
  659. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/job_fetch.rb +36 -0
  660. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/redis_info.rb +34 -0
  661. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/scheduled_poller.rb +57 -0
  662. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/stop.rb +34 -0
  663. data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +118 -0
  664. data/lib/datadog/tracing/contrib/sidekiq/utils.rb +44 -0
  665. data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +44 -0
  666. data/lib/datadog/tracing/contrib/sinatra/env.rb +36 -0
  667. data/lib/datadog/tracing/contrib/sinatra/ext.rb +37 -0
  668. data/lib/datadog/tracing/contrib/sinatra/framework.rb +114 -0
  669. data/lib/datadog/tracing/contrib/sinatra/integration.rb +41 -0
  670. data/lib/datadog/tracing/contrib/sinatra/patcher.rb +75 -0
  671. data/lib/datadog/tracing/contrib/sinatra/tracer.rb +84 -0
  672. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +116 -0
  673. data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +43 -0
  674. data/lib/datadog/tracing/contrib/sneakers/ext.rb +27 -0
  675. data/lib/datadog/tracing/contrib/sneakers/integration.rb +44 -0
  676. data/lib/datadog/tracing/contrib/sneakers/patcher.rb +27 -0
  677. data/lib/datadog/tracing/contrib/sneakers/tracer.rb +60 -0
  678. data/lib/datadog/tracing/contrib/span_attribute_schema.rb +92 -0
  679. data/lib/datadog/tracing/contrib/status_code_matcher.rb +72 -0
  680. data/lib/datadog/tracing/contrib/stripe/configuration/settings.rb +37 -0
  681. data/lib/datadog/tracing/contrib/stripe/ext.rb +27 -0
  682. data/lib/datadog/tracing/contrib/stripe/integration.rb +43 -0
  683. data/lib/datadog/tracing/contrib/stripe/patcher.rb +28 -0
  684. data/lib/datadog/tracing/contrib/stripe/request.rb +67 -0
  685. data/lib/datadog/tracing/contrib/sucker_punch/configuration/settings.rb +39 -0
  686. data/lib/datadog/tracing/contrib/sucker_punch/exception_handler.rb +28 -0
  687. data/lib/datadog/tracing/contrib/sucker_punch/ext.rb +28 -0
  688. data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +102 -0
  689. data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +41 -0
  690. data/lib/datadog/tracing/contrib/sucker_punch/patcher.rb +35 -0
  691. data/lib/datadog/tracing/contrib/trilogy/configuration/settings.rb +58 -0
  692. data/lib/datadog/tracing/contrib/trilogy/ext.rb +27 -0
  693. data/lib/datadog/tracing/contrib/trilogy/instrumentation.rb +94 -0
  694. data/lib/datadog/tracing/contrib/trilogy/integration.rb +43 -0
  695. data/lib/datadog/tracing/contrib/trilogy/patcher.rb +31 -0
  696. data/lib/datadog/tracing/contrib/utils/database.rb +31 -0
  697. data/lib/datadog/tracing/contrib/utils/quantization/hash.rb +109 -0
  698. data/lib/datadog/tracing/contrib/utils/quantization/http.rb +177 -0
  699. data/lib/datadog/tracing/contrib.rb +82 -0
  700. data/lib/datadog/tracing/correlation.rb +128 -0
  701. data/lib/datadog/tracing/diagnostics/environment_logger.rb +165 -0
  702. data/lib/datadog/tracing/diagnostics/ext.rb +36 -0
  703. data/lib/datadog/tracing/diagnostics/health.rb +40 -0
  704. data/lib/datadog/tracing/distributed/b3_multi.rb +72 -0
  705. data/lib/datadog/tracing/distributed/b3_single.rb +68 -0
  706. data/lib/datadog/tracing/distributed/datadog.rb +199 -0
  707. data/lib/datadog/tracing/distributed/datadog_tags_codec.rb +84 -0
  708. data/lib/datadog/tracing/distributed/fetcher.rb +21 -0
  709. data/lib/datadog/tracing/distributed/headers/ext.rb +34 -0
  710. data/lib/datadog/tracing/distributed/helpers.rb +65 -0
  711. data/lib/datadog/tracing/distributed/none.rb +18 -0
  712. data/lib/datadog/tracing/distributed/propagation.rb +127 -0
  713. data/lib/datadog/tracing/distributed/trace_context.rb +415 -0
  714. data/lib/datadog/tracing/event.rb +74 -0
  715. data/lib/datadog/tracing/flush.rb +96 -0
  716. data/lib/datadog/tracing/metadata/analytics.rb +26 -0
  717. data/lib/datadog/tracing/metadata/errors.rb +24 -0
  718. data/lib/datadog/tracing/metadata/ext.rb +191 -0
  719. data/lib/datadog/tracing/metadata/tagging.rb +129 -0
  720. data/lib/datadog/tracing/metadata.rb +20 -0
  721. data/lib/datadog/tracing/pipeline/span_filter.rb +46 -0
  722. data/lib/datadog/tracing/pipeline/span_processor.rb +39 -0
  723. data/lib/datadog/tracing/pipeline.rb +61 -0
  724. data/lib/datadog/tracing/propagation/http.rb +14 -0
  725. data/lib/datadog/tracing/remote.rb +78 -0
  726. data/lib/datadog/tracing/runtime/metrics.rb +17 -0
  727. data/lib/datadog/tracing/sampling/all_sampler.rb +25 -0
  728. data/lib/datadog/tracing/sampling/ext.rb +56 -0
  729. data/lib/datadog/tracing/sampling/matcher.rb +88 -0
  730. data/lib/datadog/tracing/sampling/priority_sampler.rb +165 -0
  731. data/lib/datadog/tracing/sampling/rate_by_key_sampler.rb +94 -0
  732. data/lib/datadog/tracing/sampling/rate_by_service_sampler.rb +62 -0
  733. data/lib/datadog/tracing/sampling/rate_limiter.rb +186 -0
  734. data/lib/datadog/tracing/sampling/rate_sampler.rb +68 -0
  735. data/lib/datadog/tracing/sampling/rule.rb +77 -0
  736. data/lib/datadog/tracing/sampling/rule_sampler.rb +159 -0
  737. data/lib/datadog/tracing/sampling/sampler.rb +42 -0
  738. data/lib/datadog/tracing/sampling/span/ext.rb +25 -0
  739. data/lib/datadog/tracing/sampling/span/matcher.rb +89 -0
  740. data/lib/datadog/tracing/sampling/span/rule.rb +82 -0
  741. data/lib/datadog/tracing/sampling/span/rule_parser.rb +104 -0
  742. data/lib/datadog/tracing/sampling/span/sampler.rb +77 -0
  743. data/lib/datadog/tracing/span.rb +214 -0
  744. data/lib/datadog/tracing/span_operation.rb +505 -0
  745. data/lib/datadog/tracing/sync_writer.rb +67 -0
  746. data/lib/datadog/tracing/trace_digest.rb +177 -0
  747. data/lib/datadog/tracing/trace_operation.rb +485 -0
  748. data/lib/datadog/tracing/trace_segment.rb +220 -0
  749. data/lib/datadog/tracing/tracer.rb +541 -0
  750. data/lib/datadog/tracing/transport/http/api/instance.rb +37 -0
  751. data/lib/datadog/tracing/transport/http/api/spec.rb +19 -0
  752. data/lib/datadog/tracing/transport/http/api.rb +43 -0
  753. data/lib/datadog/tracing/transport/http/builder.rb +162 -0
  754. data/lib/datadog/tracing/transport/http/client.rb +57 -0
  755. data/lib/datadog/tracing/transport/http/statistics.rb +47 -0
  756. data/lib/datadog/tracing/transport/http/traces.rb +152 -0
  757. data/lib/datadog/tracing/transport/http.rb +125 -0
  758. data/lib/datadog/tracing/transport/io/client.rb +89 -0
  759. data/lib/datadog/tracing/transport/io/response.rb +27 -0
  760. data/lib/datadog/tracing/transport/io/traces.rb +101 -0
  761. data/lib/datadog/tracing/transport/io.rb +30 -0
  762. data/lib/datadog/tracing/transport/serializable_trace.rb +126 -0
  763. data/lib/datadog/tracing/transport/statistics.rb +77 -0
  764. data/lib/datadog/tracing/transport/trace_formatter.rb +240 -0
  765. data/lib/datadog/tracing/transport/traces.rb +224 -0
  766. data/lib/datadog/tracing/utils.rb +83 -0
  767. data/lib/datadog/tracing/workers/trace_writer.rb +194 -0
  768. data/lib/datadog/tracing/workers.rb +123 -0
  769. data/lib/datadog/tracing/writer.rb +186 -0
  770. data/lib/datadog/tracing.rb +148 -0
  771. data/lib/ddtrace/auto_instrument.rb +16 -0
  772. data/lib/ddtrace/auto_instrument_base.rb +8 -0
  773. data/lib/ddtrace/profiling/preload.rb +2 -0
  774. data/lib/ddtrace/transport/ext.rb +47 -0
  775. data/lib/ddtrace/version.rb +19 -5
  776. data/lib/ddtrace.rb +9 -72
  777. metadata +808 -632
  778. data/.circleci/config.yml +0 -441
  779. data/.circleci/images/primary/Dockerfile-2.0.0 +0 -73
  780. data/.circleci/images/primary/Dockerfile-2.1.10 +0 -73
  781. data/.circleci/images/primary/Dockerfile-2.2.10 +0 -73
  782. data/.circleci/images/primary/Dockerfile-2.3.8 +0 -75
  783. data/.circleci/images/primary/Dockerfile-2.4.6 +0 -73
  784. data/.circleci/images/primary/Dockerfile-2.5.6 +0 -73
  785. data/.circleci/images/primary/Dockerfile-2.6.4 +0 -73
  786. data/.circleci/images/primary/Dockerfile-2.7.0 +0 -73
  787. data/.dockerignore +0 -1
  788. data/.env +0 -26
  789. data/.github/CODEOWNERS +0 -1
  790. data/.gitignore +0 -59
  791. data/.rspec +0 -1
  792. data/.rubocop.yml +0 -81
  793. data/.yardopts +0 -5
  794. data/Appraisals +0 -944
  795. data/CONTRIBUTING.md +0 -85
  796. data/Gemfile +0 -7
  797. data/Rakefile +0 -722
  798. data/benchmarks/postgres_database.yml +0 -9
  799. data/benchmarks/sidekiq_test.rb +0 -154
  800. data/ddtrace.gemspec +0 -64
  801. data/docker-compose.yml +0 -335
  802. data/docs/DevelopmentGuide.md +0 -195
  803. data/docs/GettingStarted.md +0 -2142
  804. data/lib/ddtrace/analytics.rb +0 -36
  805. data/lib/ddtrace/augmentation/method_wrapper.rb +0 -20
  806. data/lib/ddtrace/augmentation/method_wrapping.rb +0 -38
  807. data/lib/ddtrace/augmentation/shim.rb +0 -102
  808. data/lib/ddtrace/augmentation.rb +0 -13
  809. data/lib/ddtrace/buffer.rb +0 -119
  810. data/lib/ddtrace/configuration/base.rb +0 -84
  811. data/lib/ddtrace/configuration/dependency_resolver.rb +0 -24
  812. data/lib/ddtrace/configuration/option.rb +0 -64
  813. data/lib/ddtrace/configuration/option_definition.rb +0 -123
  814. data/lib/ddtrace/configuration/option_definition_set.rb +0 -18
  815. data/lib/ddtrace/configuration/option_set.rb +0 -6
  816. data/lib/ddtrace/configuration/options.rb +0 -112
  817. data/lib/ddtrace/configuration/pin_setup.rb +0 -30
  818. data/lib/ddtrace/configuration/settings.rb +0 -187
  819. data/lib/ddtrace/configuration.rb +0 -30
  820. data/lib/ddtrace/context.rb +0 -305
  821. data/lib/ddtrace/context_flush.rb +0 -69
  822. data/lib/ddtrace/context_provider.rb +0 -50
  823. data/lib/ddtrace/contrib/action_cable/configuration/settings.rb +0 -25
  824. data/lib/ddtrace/contrib/action_cable/event.rb +0 -65
  825. data/lib/ddtrace/contrib/action_cable/events/broadcast.rb +0 -49
  826. data/lib/ddtrace/contrib/action_cable/events/perform_action.rb +0 -55
  827. data/lib/ddtrace/contrib/action_cable/events/transmit.rb +0 -50
  828. data/lib/ddtrace/contrib/action_cable/events.rb +0 -33
  829. data/lib/ddtrace/contrib/action_cable/ext.rb +0 -23
  830. data/lib/ddtrace/contrib/action_cable/instrumentation.rb +0 -31
  831. data/lib/ddtrace/contrib/action_cable/integration.rb +0 -38
  832. data/lib/ddtrace/contrib/action_cable/patcher.rb +0 -27
  833. data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +0 -148
  834. data/lib/ddtrace/contrib/action_pack/action_controller/patcher.rb +0 -25
  835. data/lib/ddtrace/contrib/action_pack/configuration/settings.rb +0 -27
  836. data/lib/ddtrace/contrib/action_pack/ext.rb +0 -16
  837. data/lib/ddtrace/contrib/action_pack/integration.rb +0 -38
  838. data/lib/ddtrace/contrib/action_pack/patcher.rb +0 -23
  839. data/lib/ddtrace/contrib/action_pack/utils.rb +0 -36
  840. data/lib/ddtrace/contrib/action_view/configuration/settings.rb +0 -26
  841. data/lib/ddtrace/contrib/action_view/event.rb +0 -39
  842. data/lib/ddtrace/contrib/action_view/events/render_partial.rb +0 -45
  843. data/lib/ddtrace/contrib/action_view/events/render_template.rb +0 -48
  844. data/lib/ddtrace/contrib/action_view/events.rb +0 -30
  845. data/lib/ddtrace/contrib/action_view/ext.rb +0 -17
  846. data/lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb +0 -74
  847. data/lib/ddtrace/contrib/action_view/instrumentation/template_renderer.rb +0 -167
  848. data/lib/ddtrace/contrib/action_view/integration.rb +0 -45
  849. data/lib/ddtrace/contrib/action_view/patcher.rb +0 -47
  850. data/lib/ddtrace/contrib/action_view/utils.rb +0 -32
  851. data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +0 -25
  852. data/lib/ddtrace/contrib/active_model_serializers/event.rb +0 -68
  853. data/lib/ddtrace/contrib/active_model_serializers/events/render.rb +0 -32
  854. data/lib/ddtrace/contrib/active_model_serializers/events/serialize.rb +0 -35
  855. data/lib/ddtrace/contrib/active_model_serializers/events.rb +0 -30
  856. data/lib/ddtrace/contrib/active_model_serializers/ext.rb +0 -17
  857. data/lib/ddtrace/contrib/active_model_serializers/integration.rb +0 -40
  858. data/lib/ddtrace/contrib/active_model_serializers/patcher.rb +0 -29
  859. data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +0 -45
  860. data/lib/ddtrace/contrib/active_record/configuration/settings.rb +0 -30
  861. data/lib/ddtrace/contrib/active_record/event.rb +0 -30
  862. data/lib/ddtrace/contrib/active_record/events/instantiation.rb +0 -60
  863. data/lib/ddtrace/contrib/active_record/events/sql.rb +0 -64
  864. data/lib/ddtrace/contrib/active_record/events.rb +0 -30
  865. data/lib/ddtrace/contrib/active_record/ext.rb +0 -21
  866. data/lib/ddtrace/contrib/active_record/integration.rb +0 -46
  867. data/lib/ddtrace/contrib/active_record/patcher.rb +0 -23
  868. data/lib/ddtrace/contrib/active_record/utils.rb +0 -76
  869. data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +0 -157
  870. data/lib/ddtrace/contrib/active_support/cache/patcher.rb +0 -48
  871. data/lib/ddtrace/contrib/active_support/cache/redis.rb +0 -47
  872. data/lib/ddtrace/contrib/active_support/configuration/settings.rb +0 -25
  873. data/lib/ddtrace/contrib/active_support/ext.rb +0 -21
  874. data/lib/ddtrace/contrib/active_support/integration.rb +0 -40
  875. data/lib/ddtrace/contrib/active_support/notifications/event.rb +0 -62
  876. data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +0 -66
  877. data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +0 -159
  878. data/lib/ddtrace/contrib/active_support/patcher.rb +0 -23
  879. data/lib/ddtrace/contrib/analytics.rb +0 -24
  880. data/lib/ddtrace/contrib/aws/configuration/settings.rb +0 -25
  881. data/lib/ddtrace/contrib/aws/ext.rb +0 -20
  882. data/lib/ddtrace/contrib/aws/instrumentation.rb +0 -56
  883. data/lib/ddtrace/contrib/aws/integration.rb +0 -42
  884. data/lib/ddtrace/contrib/aws/parsed_context.rb +0 -56
  885. data/lib/ddtrace/contrib/aws/patcher.rb +0 -49
  886. data/lib/ddtrace/contrib/aws/services.rb +0 -115
  887. data/lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb +0 -15
  888. data/lib/ddtrace/contrib/concurrent_ruby/context_composite_executor_service.rb +0 -35
  889. data/lib/ddtrace/contrib/concurrent_ruby/ext.rb +0 -11
  890. data/lib/ddtrace/contrib/concurrent_ruby/future_patch.rb +0 -23
  891. data/lib/ddtrace/contrib/concurrent_ruby/integration.rb +0 -38
  892. data/lib/ddtrace/contrib/concurrent_ruby/patcher.rb +0 -28
  893. data/lib/ddtrace/contrib/configurable.rb +0 -76
  894. data/lib/ddtrace/contrib/configuration/resolver.rb +0 -16
  895. data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +0 -39
  896. data/lib/ddtrace/contrib/configuration/settings.rb +0 -35
  897. data/lib/ddtrace/contrib/dalli/configuration/settings.rb +0 -25
  898. data/lib/ddtrace/contrib/dalli/ext.rb +0 -17
  899. data/lib/ddtrace/contrib/dalli/instrumentation.rb +0 -50
  900. data/lib/ddtrace/contrib/dalli/integration.rb +0 -38
  901. data/lib/ddtrace/contrib/dalli/patcher.rb +0 -67
  902. data/lib/ddtrace/contrib/dalli/quantize.rb +0 -22
  903. data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +0 -25
  904. data/lib/ddtrace/contrib/delayed_job/ext.rb +0 -18
  905. data/lib/ddtrace/contrib/delayed_job/integration.rb +0 -38
  906. data/lib/ddtrace/contrib/delayed_job/patcher.rb +0 -28
  907. data/lib/ddtrace/contrib/delayed_job/plugin.rb +0 -61
  908. data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +0 -26
  909. data/lib/ddtrace/contrib/elasticsearch/ext.rb +0 -19
  910. data/lib/ddtrace/contrib/elasticsearch/integration.rb +0 -39
  911. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +0 -118
  912. data/lib/ddtrace/contrib/elasticsearch/quantize.rb +0 -80
  913. data/lib/ddtrace/contrib/ethon/configuration/settings.rb +0 -27
  914. data/lib/ddtrace/contrib/ethon/easy_patch.rb +0 -148
  915. data/lib/ddtrace/contrib/ethon/ext.rb +0 -15
  916. data/lib/ddtrace/contrib/ethon/integration.rb +0 -43
  917. data/lib/ddtrace/contrib/ethon/multi_patch.rb +0 -80
  918. data/lib/ddtrace/contrib/ethon/patcher.rb +0 -25
  919. data/lib/ddtrace/contrib/excon/configuration/settings.rb +0 -28
  920. data/lib/ddtrace/contrib/excon/ext.rb +0 -14
  921. data/lib/ddtrace/contrib/excon/integration.rb +0 -43
  922. data/lib/ddtrace/contrib/excon/middleware.rb +0 -157
  923. data/lib/ddtrace/contrib/excon/patcher.rb +0 -27
  924. data/lib/ddtrace/contrib/extensions.rb +0 -59
  925. data/lib/ddtrace/contrib/faraday/configuration/settings.rb +0 -33
  926. data/lib/ddtrace/contrib/faraday/connection.rb +0 -18
  927. data/lib/ddtrace/contrib/faraday/ext.rb +0 -14
  928. data/lib/ddtrace/contrib/faraday/integration.rb +0 -43
  929. data/lib/ddtrace/contrib/faraday/middleware.rb +0 -81
  930. data/lib/ddtrace/contrib/faraday/patcher.rb +0 -81
  931. data/lib/ddtrace/contrib/faraday/rack_builder.rb +0 -18
  932. data/lib/ddtrace/contrib/grape/configuration/settings.rb +0 -27
  933. data/lib/ddtrace/contrib/grape/endpoint.rb +0 -208
  934. data/lib/ddtrace/contrib/grape/ext.rb +0 -19
  935. data/lib/ddtrace/contrib/grape/instrumentation.rb +0 -33
  936. data/lib/ddtrace/contrib/grape/integration.rb +0 -39
  937. data/lib/ddtrace/contrib/grape/patcher.rb +0 -73
  938. data/lib/ddtrace/contrib/graphql/configuration/settings.rb +0 -27
  939. data/lib/ddtrace/contrib/graphql/ext.rb +0 -13
  940. data/lib/ddtrace/contrib/graphql/integration.rb +0 -39
  941. data/lib/ddtrace/contrib/graphql/patcher.rb +0 -57
  942. data/lib/ddtrace/contrib/grpc/configuration/settings.rb +0 -25
  943. data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +0 -56
  944. data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +0 -76
  945. data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +0 -74
  946. data/lib/ddtrace/contrib/grpc/ext.rb +0 -15
  947. data/lib/ddtrace/contrib/grpc/integration.rb +0 -38
  948. data/lib/ddtrace/contrib/grpc/intercept_with_datadog.rb +0 -49
  949. data/lib/ddtrace/contrib/grpc/patcher.rb +0 -72
  950. data/lib/ddtrace/contrib/http/circuit_breaker.rb +0 -63
  951. data/lib/ddtrace/contrib/http/configuration/settings.rb +0 -27
  952. data/lib/ddtrace/contrib/http/ext.rb +0 -14
  953. data/lib/ddtrace/contrib/http/instrumentation.rb +0 -170
  954. data/lib/ddtrace/contrib/http/integration.rb +0 -45
  955. data/lib/ddtrace/contrib/http/patcher.rb +0 -26
  956. data/lib/ddtrace/contrib/http_annotation_helper.rb +0 -10
  957. data/lib/ddtrace/contrib/integration.rb +0 -16
  958. data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +0 -28
  959. data/lib/ddtrace/contrib/mongodb/ext.rb +0 -20
  960. data/lib/ddtrace/contrib/mongodb/instrumentation.rb +0 -68
  961. data/lib/ddtrace/contrib/mongodb/integration.rb +0 -38
  962. data/lib/ddtrace/contrib/mongodb/parsers.rb +0 -68
  963. data/lib/ddtrace/contrib/mongodb/patcher.rb +0 -31
  964. data/lib/ddtrace/contrib/mongodb/subscribers.rb +0 -108
  965. data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +0 -25
  966. data/lib/ddtrace/contrib/mysql2/ext.rb +0 -15
  967. data/lib/ddtrace/contrib/mysql2/instrumentation.rb +0 -60
  968. data/lib/ddtrace/contrib/mysql2/integration.rb +0 -38
  969. data/lib/ddtrace/contrib/mysql2/patcher.rb +0 -27
  970. data/lib/ddtrace/contrib/patchable.rb +0 -59
  971. data/lib/ddtrace/contrib/patcher.rb +0 -56
  972. data/lib/ddtrace/contrib/presto/configuration/settings.rb +0 -25
  973. data/lib/ddtrace/contrib/presto/ext.rb +0 -25
  974. data/lib/ddtrace/contrib/presto/instrumentation.rb +0 -107
  975. data/lib/ddtrace/contrib/presto/integration.rb +0 -38
  976. data/lib/ddtrace/contrib/presto/patcher.rb +0 -30
  977. data/lib/ddtrace/contrib/racecar/configuration/settings.rb +0 -25
  978. data/lib/ddtrace/contrib/racecar/event.rb +0 -71
  979. data/lib/ddtrace/contrib/racecar/events/batch.rb +0 -27
  980. data/lib/ddtrace/contrib/racecar/events/message.rb +0 -27
  981. data/lib/ddtrace/contrib/racecar/events.rb +0 -30
  982. data/lib/ddtrace/contrib/racecar/ext.rb +0 -21
  983. data/lib/ddtrace/contrib/racecar/integration.rb +0 -39
  984. data/lib/ddtrace/contrib/racecar/patcher.rb +0 -26
  985. data/lib/ddtrace/contrib/rack/configuration/settings.rb +0 -41
  986. data/lib/ddtrace/contrib/rack/ext.rb +0 -18
  987. data/lib/ddtrace/contrib/rack/integration.rb +0 -38
  988. data/lib/ddtrace/contrib/rack/middlewares.rb +0 -287
  989. data/lib/ddtrace/contrib/rack/patcher.rb +0 -107
  990. data/lib/ddtrace/contrib/rack/request_queue.rb +0 -39
  991. data/lib/ddtrace/contrib/rails/configuration/settings.rb +0 -81
  992. data/lib/ddtrace/contrib/rails/ext.rb +0 -13
  993. data/lib/ddtrace/contrib/rails/framework.rb +0 -125
  994. data/lib/ddtrace/contrib/rails/integration.rb +0 -44
  995. data/lib/ddtrace/contrib/rails/middlewares.rb +0 -38
  996. data/lib/ddtrace/contrib/rails/patcher.rb +0 -74
  997. data/lib/ddtrace/contrib/rails/railtie.rb +0 -17
  998. data/lib/ddtrace/contrib/rails/utils.rb +0 -20
  999. data/lib/ddtrace/contrib/rake/configuration/settings.rb +0 -27
  1000. data/lib/ddtrace/contrib/rake/ext.rb +0 -18
  1001. data/lib/ddtrace/contrib/rake/instrumentation.rb +0 -88
  1002. data/lib/ddtrace/contrib/rake/integration.rb +0 -38
  1003. data/lib/ddtrace/contrib/rake/patcher.rb +0 -30
  1004. data/lib/ddtrace/contrib/redis/configuration/resolver.rb +0 -36
  1005. data/lib/ddtrace/contrib/redis/configuration/settings.rb +0 -25
  1006. data/lib/ddtrace/contrib/redis/ext.rb +0 -18
  1007. data/lib/ddtrace/contrib/redis/integration.rb +0 -42
  1008. data/lib/ddtrace/contrib/redis/patcher.rb +0 -97
  1009. data/lib/ddtrace/contrib/redis/quantize.rb +0 -47
  1010. data/lib/ddtrace/contrib/redis/tags.rb +0 -38
  1011. data/lib/ddtrace/contrib/redis/vendor/resolver.rb +0 -159
  1012. data/lib/ddtrace/contrib/registerable.rb +0 -33
  1013. data/lib/ddtrace/contrib/registry.rb +0 -42
  1014. data/lib/ddtrace/contrib/resque/configuration/settings.rb +0 -26
  1015. data/lib/ddtrace/contrib/resque/ext.rb +0 -14
  1016. data/lib/ddtrace/contrib/resque/integration.rb +0 -47
  1017. data/lib/ddtrace/contrib/resque/patcher.rb +0 -29
  1018. data/lib/ddtrace/contrib/resque/resque_job.rb +0 -80
  1019. data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +0 -26
  1020. data/lib/ddtrace/contrib/rest_client/ext.rb +0 -14
  1021. data/lib/ddtrace/contrib/rest_client/integration.rb +0 -38
  1022. data/lib/ddtrace/contrib/rest_client/patcher.rb +0 -23
  1023. data/lib/ddtrace/contrib/rest_client/request_patch.rb +0 -89
  1024. data/lib/ddtrace/contrib/sequel/configuration/settings.rb +0 -23
  1025. data/lib/ddtrace/contrib/sequel/database.rb +0 -61
  1026. data/lib/ddtrace/contrib/sequel/dataset.rb +0 -62
  1027. data/lib/ddtrace/contrib/sequel/ext.rb +0 -15
  1028. data/lib/ddtrace/contrib/sequel/integration.rb +0 -38
  1029. data/lib/ddtrace/contrib/sequel/patcher.rb +0 -33
  1030. data/lib/ddtrace/contrib/sequel/utils.rb +0 -46
  1031. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +0 -24
  1032. data/lib/ddtrace/contrib/shoryuken/ext.rb +0 -18
  1033. data/lib/ddtrace/contrib/shoryuken/integration.rb +0 -39
  1034. data/lib/ddtrace/contrib/shoryuken/patcher.rb +0 -24
  1035. data/lib/ddtrace/contrib/shoryuken/tracer.rb +0 -49
  1036. data/lib/ddtrace/contrib/sidekiq/client_tracer.rb +0 -43
  1037. data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +0 -31
  1038. data/lib/ddtrace/contrib/sidekiq/ext.rb +0 -23
  1039. data/lib/ddtrace/contrib/sidekiq/integration.rb +0 -38
  1040. data/lib/ddtrace/contrib/sidekiq/patcher.rb +0 -34
  1041. data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +0 -66
  1042. data/lib/ddtrace/contrib/sidekiq/tracing.rb +0 -45
  1043. data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +0 -34
  1044. data/lib/ddtrace/contrib/sinatra/env.rb +0 -38
  1045. data/lib/ddtrace/contrib/sinatra/ext.rb +0 -18
  1046. data/lib/ddtrace/contrib/sinatra/headers.rb +0 -31
  1047. data/lib/ddtrace/contrib/sinatra/integration.rb +0 -38
  1048. data/lib/ddtrace/contrib/sinatra/patcher.rb +0 -27
  1049. data/lib/ddtrace/contrib/sinatra/tracer.rb +0 -87
  1050. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +0 -75
  1051. data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +0 -25
  1052. data/lib/ddtrace/contrib/sucker_punch/exception_handler.rb +0 -26
  1053. data/lib/ddtrace/contrib/sucker_punch/ext.rb +0 -18
  1054. data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +0 -84
  1055. data/lib/ddtrace/contrib/sucker_punch/integration.rb +0 -38
  1056. data/lib/ddtrace/contrib/sucker_punch/patcher.rb +0 -42
  1057. data/lib/ddtrace/correlation.rb +0 -35
  1058. data/lib/ddtrace/diagnostics/health.rb +0 -37
  1059. data/lib/ddtrace/distributed_tracing/headers/b3.rb +0 -44
  1060. data/lib/ddtrace/distributed_tracing/headers/b3_single.rb +0 -56
  1061. data/lib/ddtrace/distributed_tracing/headers/datadog.rb +0 -42
  1062. data/lib/ddtrace/distributed_tracing/headers/headers.rb +0 -70
  1063. data/lib/ddtrace/distributed_tracing/headers/helpers.rb +0 -45
  1064. data/lib/ddtrace/encoding.rb +0 -95
  1065. data/lib/ddtrace/environment.rb +0 -27
  1066. data/lib/ddtrace/error.rb +0 -27
  1067. data/lib/ddtrace/event.rb +0 -52
  1068. data/lib/ddtrace/ext/analytics.rb +0 -12
  1069. data/lib/ddtrace/ext/app_types.rb +0 -11
  1070. data/lib/ddtrace/ext/correlation.rb +0 -10
  1071. data/lib/ddtrace/ext/diagnostics.rb +0 -31
  1072. data/lib/ddtrace/ext/distributed.rb +0 -33
  1073. data/lib/ddtrace/ext/environment.rb +0 -13
  1074. data/lib/ddtrace/ext/errors.rb +0 -10
  1075. data/lib/ddtrace/ext/forced_tracing.rb +0 -25
  1076. data/lib/ddtrace/ext/http.rb +0 -46
  1077. data/lib/ddtrace/ext/manual_tracing.rb +0 -9
  1078. data/lib/ddtrace/ext/metrics.rb +0 -15
  1079. data/lib/ddtrace/ext/net.rb +0 -10
  1080. data/lib/ddtrace/ext/priority.rb +0 -16
  1081. data/lib/ddtrace/ext/runtime.rb +0 -26
  1082. data/lib/ddtrace/ext/sampling.rb +0 -16
  1083. data/lib/ddtrace/ext/sql.rb +0 -8
  1084. data/lib/ddtrace/ext/transport.rb +0 -17
  1085. data/lib/ddtrace/forced_tracing.rb +0 -36
  1086. data/lib/ddtrace/logger.rb +0 -81
  1087. data/lib/ddtrace/metrics.rb +0 -222
  1088. data/lib/ddtrace/monkey.rb +0 -58
  1089. data/lib/ddtrace/opentelemetry/extensions.rb +0 -13
  1090. data/lib/ddtrace/opentelemetry/span.rb +0 -33
  1091. data/lib/ddtrace/opentracer/binary_propagator.rb +0 -24
  1092. data/lib/ddtrace/opentracer/carrier.rb +0 -6
  1093. data/lib/ddtrace/opentracer/distributed_headers.rb +0 -52
  1094. data/lib/ddtrace/opentracer/global_tracer.rb +0 -15
  1095. data/lib/ddtrace/opentracer/propagator.rb +0 -22
  1096. data/lib/ddtrace/opentracer/rack_propagator.rb +0 -60
  1097. data/lib/ddtrace/opentracer/scope.rb +0 -15
  1098. data/lib/ddtrace/opentracer/scope_manager.rb +0 -6
  1099. data/lib/ddtrace/opentracer/span.rb +0 -98
  1100. data/lib/ddtrace/opentracer/span_context.rb +0 -14
  1101. data/lib/ddtrace/opentracer/span_context_factory.rb +0 -23
  1102. data/lib/ddtrace/opentracer/text_map_propagator.rb +0 -75
  1103. data/lib/ddtrace/opentracer/thread_local_scope.rb +0 -30
  1104. data/lib/ddtrace/opentracer/thread_local_scope_manager.rb +0 -40
  1105. data/lib/ddtrace/opentracer/tracer.rb +0 -208
  1106. data/lib/ddtrace/opentracer.rb +0 -40
  1107. data/lib/ddtrace/patcher.rb +0 -47
  1108. data/lib/ddtrace/pin.rb +0 -114
  1109. data/lib/ddtrace/pipeline/span_filter.rb +0 -38
  1110. data/lib/ddtrace/pipeline/span_processor.rb +0 -20
  1111. data/lib/ddtrace/pipeline.rb +0 -46
  1112. data/lib/ddtrace/propagation/grpc_propagator.rb +0 -61
  1113. data/lib/ddtrace/propagation/http_propagator.rb +0 -75
  1114. data/lib/ddtrace/quantization/hash.rb +0 -103
  1115. data/lib/ddtrace/quantization/http.rb +0 -86
  1116. data/lib/ddtrace/runtime/cgroup.rb +0 -44
  1117. data/lib/ddtrace/runtime/class_count.rb +0 -17
  1118. data/lib/ddtrace/runtime/container.rb +0 -73
  1119. data/lib/ddtrace/runtime/gc.rb +0 -16
  1120. data/lib/ddtrace/runtime/identity.rb +0 -41
  1121. data/lib/ddtrace/runtime/metrics.rb +0 -93
  1122. data/lib/ddtrace/runtime/object_space.rb +0 -19
  1123. data/lib/ddtrace/runtime/socket.rb +0 -14
  1124. data/lib/ddtrace/runtime/thread_count.rb +0 -16
  1125. data/lib/ddtrace/sampler.rb +0 -290
  1126. data/lib/ddtrace/sampling/matcher.rb +0 -57
  1127. data/lib/ddtrace/sampling/rate_limiter.rb +0 -127
  1128. data/lib/ddtrace/sampling/rule.rb +0 -61
  1129. data/lib/ddtrace/sampling/rule_sampler.rb +0 -125
  1130. data/lib/ddtrace/sampling.rb +0 -2
  1131. data/lib/ddtrace/span.rb +0 -297
  1132. data/lib/ddtrace/sync_writer.rb +0 -72
  1133. data/lib/ddtrace/tracer.rb +0 -437
  1134. data/lib/ddtrace/transport/http/adapters/net.rb +0 -112
  1135. data/lib/ddtrace/transport/http/adapters/registry.rb +0 -24
  1136. data/lib/ddtrace/transport/http/adapters/test.rb +0 -77
  1137. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +0 -64
  1138. data/lib/ddtrace/transport/http/api/endpoint.rb +0 -27
  1139. data/lib/ddtrace/transport/http/api/fallbacks.rb +0 -22
  1140. data/lib/ddtrace/transport/http/api/instance.rb +0 -29
  1141. data/lib/ddtrace/transport/http/api/map.rb +0 -14
  1142. data/lib/ddtrace/transport/http/api/spec.rb +0 -15
  1143. data/lib/ddtrace/transport/http/api.rb +0 -46
  1144. data/lib/ddtrace/transport/http/builder.rb +0 -165
  1145. data/lib/ddtrace/transport/http/client.rb +0 -107
  1146. data/lib/ddtrace/transport/http/env.rb +0 -48
  1147. data/lib/ddtrace/transport/http/response.rb +0 -26
  1148. data/lib/ddtrace/transport/http/statistics.rb +0 -30
  1149. data/lib/ddtrace/transport/http/traces.rb +0 -140
  1150. data/lib/ddtrace/transport/http.rb +0 -91
  1151. data/lib/ddtrace/transport/io/client.rb +0 -76
  1152. data/lib/ddtrace/transport/io/response.rb +0 -23
  1153. data/lib/ddtrace/transport/io/traces.rb +0 -44
  1154. data/lib/ddtrace/transport/io.rb +0 -26
  1155. data/lib/ddtrace/transport/parcel.rb +0 -17
  1156. data/lib/ddtrace/transport/request.rb +0 -13
  1157. data/lib/ddtrace/transport/response.rb +0 -49
  1158. data/lib/ddtrace/transport/statistics.rb +0 -72
  1159. data/lib/ddtrace/transport/traces.rb +0 -33
  1160. data/lib/ddtrace/utils/database.rb +0 -25
  1161. data/lib/ddtrace/utils/time.rb +0 -14
  1162. data/lib/ddtrace/utils.rb +0 -65
  1163. data/lib/ddtrace/vendor/active_record/connection_specification.rb +0 -301
  1164. data/lib/ddtrace/worker.rb +0 -20
  1165. data/lib/ddtrace/workers/async.rb +0 -165
  1166. data/lib/ddtrace/workers/loop.rb +0 -105
  1167. data/lib/ddtrace/workers/polling.rb +0 -48
  1168. data/lib/ddtrace/workers/queue.rb +0 -39
  1169. data/lib/ddtrace/workers.rb +0 -125
  1170. data/lib/ddtrace/writer.rb +0 -161
  1171. data/tasks/release_gem.rake +0 -28
@@ -0,0 +1,88 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Datadog
4
+ module Tracing
5
+ module Sampling
6
+ # Checks if a trace conforms to a matching criteria.
7
+ # @abstract
8
+ # @public_api
9
+ class Matcher
10
+ # Returns `true` if the trace should conforms to this rule, `false` otherwise
11
+ #
12
+ # @param [TraceOperation] trace
13
+ # @return [Boolean]
14
+ def match?(trace)
15
+ raise NotImplementedError
16
+ end
17
+ end
18
+
19
+ # A {Datadog::Sampling::Matcher} that supports matching a trace by
20
+ # trace name and/or service name.
21
+ # @public_api
22
+ class SimpleMatcher < Matcher
23
+ # Returns `true` for case equality (===) with any object
24
+ MATCH_ALL = Class.new do
25
+ # DEV: A class that implements `#===` is ~20% faster than
26
+ # DEV: a `Proc` that always returns `true`.
27
+ def ===(other)
28
+ true
29
+ end
30
+ end.new
31
+
32
+ attr_reader :name, :service, :resource, :tags
33
+
34
+ # @param name [String,Regexp,Proc] Matcher for case equality (===) with the trace name,
35
+ # defaults to always match
36
+ # @param service [String,Regexp,Proc] Matcher for case equality (===) with the service name,
37
+ # defaults to always match
38
+ # @param resource [String,Regexp,Proc] Matcher for case equality (===) with the resource name,
39
+ # defaults to always match
40
+ def initialize(name: MATCH_ALL, service: MATCH_ALL, resource: MATCH_ALL, tags: {})
41
+ super()
42
+ @name = name
43
+ @service = service
44
+ @resource = resource
45
+ @tags = tags
46
+ end
47
+
48
+ def match?(trace)
49
+ name === trace.name && service === trace.service && resource === trace.resource && tags_match?(trace)
50
+ end
51
+
52
+ private
53
+
54
+ # Match against the trace tags and metrics.
55
+ def tags_match?(trace)
56
+ @tags.all? do |name, matcher|
57
+ tag = trace.get_tag(name)
58
+
59
+ # Format metrics as strings, to allow for partial number matching (/4.*/ matching '400', '404', etc.).
60
+ # Because metrics are floats, we use the '%g' format specifier to avoid trailing zeros, which
61
+ # can affect exact string matching (e.g. '400' matching '400.0').
62
+ tag = format('%g', tag) if tag.is_a?(Numeric)
63
+
64
+ matcher === tag
65
+ end
66
+ end
67
+ end
68
+
69
+ # A {Datadog::Tracing::Sampling::Matcher} that allows for arbitrary trace matching
70
+ # based on the return value of a provided block.
71
+ # @public_api
72
+ class ProcMatcher < Matcher
73
+ attr_reader :block
74
+
75
+ # @yield [name, service] Provides trace name and service to the block
76
+ # @yieldreturn [Boolean] Whether the trace conforms to this matcher
77
+ def initialize(&block)
78
+ super()
79
+ @block = block
80
+ end
81
+
82
+ def match?(trace)
83
+ block.call(trace.name, trace.service)
84
+ end
85
+ end
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,165 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'ext'
4
+ require_relative 'all_sampler'
5
+ require_relative 'rate_sampler'
6
+ require_relative 'rate_by_service_sampler'
7
+
8
+ module Datadog
9
+ module Tracing
10
+ module Sampling
11
+ # {Datadog::Tracing::Sampling::PrioritySampler}
12
+ # @public_api
13
+ class PrioritySampler
14
+ # NOTE: We do not advise using a pre-sampler. It can save resources,
15
+ # but pre-sampling at rates < 100% may result in partial traces, unless
16
+ # the pre-sampler knows exactly how to drop a span without dropping its ancestors.
17
+ #
18
+ # Additionally, as service metrics are calculated in the Datadog Agent,
19
+ # the service's throughput will be underestimated.
20
+ attr_reader :pre_sampler, :priority_sampler
21
+
22
+ def initialize(opts = {})
23
+ @pre_sampler = opts[:base_sampler] || AllSampler.new
24
+ @priority_sampler = opts[:post_sampler] || RateByServiceSampler.new(decision: Sampling::Ext::Decision::AGENT_RATE)
25
+ end
26
+
27
+ def sample?(trace)
28
+ @pre_sampler.sample?(trace)
29
+ end
30
+
31
+ # DEV-2.0:We should get rid of this complicated interaction between @pre_sampler and @priority_sampler.
32
+ # DEV-2.0:If the user wants to configure a custom sampler, we should only allow them to provide a complete
33
+ # DEV-2.0:sampling suite, not having this convoluted support for mixing arbitrary provided samplers in
34
+ # DEV-2.0:the PrioritySampler. Ideally, the PrioritySampler is only used by Datadog.
35
+ # DEV-2.0:There are too many edge cases and combinations to work around currently in this class.
36
+ def sample!(trace)
37
+ # The priority that was set before the sampler ran.
38
+ # This comes from distributed tracing priority propagation.
39
+ distributed_sampling_priority = priority_assigned?(trace)
40
+
41
+ # If pre-sampling is configured, do it first. (By default, this will sample at 100%.)
42
+ # NOTE: Pre-sampling at rates < 100% may result in partial traces; not recommended.
43
+ trace.sampled = pre_sample?(trace) ? preserving_priority_sampling(trace) { @pre_sampler.sample!(trace) } : true
44
+
45
+ if trace.sampled?
46
+ # If priority sampling has already been applied upstream, use that value.
47
+ return true if priority_assigned?(trace)
48
+
49
+ # Check with post sampler how we set the priority.
50
+ sample = priority_sample!(trace)
51
+
52
+ # Check if post sampler has already assigned a priority.
53
+ return true if priority_assigned?(trace)
54
+
55
+ # If not, use agent priority values.
56
+ priority = sample ? Sampling::Ext::Priority::AUTO_KEEP : Sampling::Ext::Priority::AUTO_REJECT
57
+ assign_priority!(trace, priority)
58
+ else
59
+ # If discarded by pre-sampling, set "reject" priority, so other
60
+ # services for the same trace don't sample needlessly.
61
+ assign_priority!(trace, Sampling::Ext::Priority::AUTO_REJECT)
62
+ end
63
+
64
+ trace.sampled?
65
+ ensure
66
+ if trace.sampling_priority && trace.sampling_priority > 0
67
+ # Don't modify decision if priority was set upstream.
68
+ if !distributed_sampling_priority && !trace.has_tag?(Tracing::Metadata::Ext::Distributed::TAG_DECISION_MAKER)
69
+ # If no sampling priority being assigned at this point, a custom
70
+ # sampler implementation is configured: this means the user has
71
+ # full control over the sampling decision.
72
+ trace.set_tag(
73
+ Tracing::Metadata::Ext::Distributed::TAG_DECISION_MAKER,
74
+ Sampling::Ext::Decision::MANUAL
75
+ )
76
+ end
77
+ else
78
+ # The sampler decided to not keep this span, removing sampling decision.
79
+ trace.clear_tag(Tracing::Metadata::Ext::Distributed::TAG_DECISION_MAKER)
80
+ end
81
+ end
82
+
83
+ # (see Datadog::Tracing::Sampling::RateByServiceSampler#update)
84
+ def update(rate_by_service, decision: nil)
85
+ @priority_sampler.update(rate_by_service, decision: decision)
86
+ end
87
+
88
+ # Check if the Priority Sampling decision is to keep or drop the trace.
89
+ # Other factors can influence the sampling decision; this method is only
90
+ # responsible for interpreting the Sampling Priority decision.
91
+ #
92
+ # @param priority_sampling [Integer] priority sampling number
93
+ # @return [Boolean] true if trace is "kept" by priority sampling
94
+ # @return [Boolean] false if trace is "dropped" by priority sampling
95
+ def self.sampled?(priority_sampling)
96
+ priority_sampling >= Ext::Priority::AUTO_KEEP
97
+ end
98
+
99
+ private
100
+
101
+ def pre_sample?(trace)
102
+ case @pre_sampler
103
+ when RateSampler
104
+ @pre_sampler.sample_rate < 1.0
105
+ when RateByServiceSampler
106
+ @pre_sampler.sample_rate(trace) < 1.0
107
+ else
108
+ true
109
+ end
110
+ end
111
+
112
+ def priority_assigned?(trace)
113
+ !trace.sampling_priority.nil?
114
+ end
115
+
116
+ def priority_sample!(trace)
117
+ preserving_sampling(trace) do
118
+ @priority_sampler.sample!(trace)
119
+ end
120
+ end
121
+
122
+ # Ensures the trace's priority sampling decision is not changed by the @pre_sampler.
123
+ # The @pre_sampler should only change `trace.sampled`.
124
+ def preserving_priority_sampling(trace)
125
+ sampling_priority = trace.sampling_priority
126
+ sampling_decision = trace.get_tag(Tracing::Metadata::Ext::Distributed::TAG_DECISION_MAKER)
127
+
128
+ yield.tap do
129
+ trace.sampling_priority = sampling_priority
130
+
131
+ if sampling_decision
132
+ trace.set_tag(Tracing::Metadata::Ext::Distributed::TAG_DECISION_MAKER, sampling_decision)
133
+ else
134
+ trace.clear_tag(Tracing::Metadata::Ext::Distributed::TAG_DECISION_MAKER)
135
+ end
136
+ end
137
+ end
138
+
139
+ # Ensures the trace is always propagated to the writer and that
140
+ # the sample rate metric represents the true client-side sampling.
141
+ def preserving_sampling(trace)
142
+ pre_sample_rate_metric = trace.sample_rate
143
+
144
+ yield.tap do
145
+ # NOTE: We'll want to leave `trace.sampled = true` here; all spans for priority sampling must
146
+ # be sent to the agent. Otherwise metrics for traces will not be accurate, since the
147
+ # agent will have an incomplete dataset.
148
+ #
149
+ # We also ensure that the agent knows we that our `post_sampler` is not performing true sampling,
150
+ # to avoid erroneous metric upscaling.
151
+ trace.sampled = true
152
+
153
+ # Restore true sampling metric, as only the @pre_sampler can reject traces.
154
+ # otherwise if @pre_sampler is not enabled, sending this metric would be misleading.
155
+ trace.sample_rate = pre_sample_rate_metric || nil
156
+ end
157
+ end
158
+
159
+ def assign_priority!(trace, priority)
160
+ trace.sampling_priority = priority
161
+ end
162
+ end
163
+ end
164
+ end
165
+ end
@@ -0,0 +1,94 @@
1
+ require_relative 'sampler'
2
+ require_relative 'rate_sampler'
3
+
4
+ module Datadog
5
+ module Tracing
6
+ module Sampling
7
+ # Samples at different rates by key.
8
+ # @public_api
9
+ class RateByKeySampler < Sampler
10
+ attr_reader \
11
+ :default_key
12
+
13
+ def initialize(default_key, default_rate = 1.0, decision: nil, &block)
14
+ super()
15
+
16
+ raise ArgumentError, 'No resolver given!' unless block
17
+
18
+ @default_key = default_key
19
+ @resolver = block
20
+ @mutex = Mutex.new
21
+ @samplers = {}
22
+
23
+ set_rate(default_key, default_rate, decision)
24
+ end
25
+
26
+ def resolve(trace)
27
+ @resolver.call(trace)
28
+ end
29
+
30
+ def default_sampler
31
+ @samplers[default_key]
32
+ end
33
+
34
+ def sample?(trace)
35
+ key = resolve(trace)
36
+
37
+ @mutex.synchronize do
38
+ @samplers.fetch(key, default_sampler).sample?(trace)
39
+ end
40
+ end
41
+
42
+ def sample!(trace)
43
+ key = resolve(trace)
44
+
45
+ @mutex.synchronize do
46
+ @samplers.fetch(key, default_sampler).sample!(trace)
47
+ end
48
+ end
49
+
50
+ def sample_rate(trace)
51
+ key = resolve(trace)
52
+
53
+ @mutex.synchronize do
54
+ @samplers.fetch(key, default_sampler).sample_rate
55
+ end
56
+ end
57
+
58
+ def update(key, rate, decision: nil)
59
+ @mutex.synchronize do
60
+ set_rate(key, rate, decision)
61
+ end
62
+ end
63
+
64
+ def update_all(rate_by_key, decision: nil)
65
+ @mutex.synchronize do
66
+ rate_by_key.each { |key, rate| set_rate(key, rate, decision) }
67
+ end
68
+ end
69
+
70
+ def delete(key)
71
+ @mutex.synchronize do
72
+ @samplers.delete(key)
73
+ end
74
+ end
75
+
76
+ def delete_if(&block)
77
+ @mutex.synchronize do
78
+ @samplers.delete_if(&block)
79
+ end
80
+ end
81
+
82
+ def length
83
+ @samplers.length
84
+ end
85
+
86
+ private
87
+
88
+ def set_rate(key, rate, decision)
89
+ @samplers[key] = RateSampler.new(rate, decision: decision)
90
+ end
91
+ end
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,62 @@
1
+ require_relative 'rate_by_key_sampler'
2
+
3
+ module Datadog
4
+ module Tracing
5
+ module Sampling
6
+ # {Datadog::Tracing::Sampling::RateByServiceSampler} samples different services at different rates
7
+ # @public_api
8
+ class RateByServiceSampler < RateByKeySampler
9
+ DEFAULT_KEY = 'service:,env:'.freeze
10
+
11
+ def initialize(default_rate = 1.0, env: nil, decision: Datadog::Tracing::Sampling::Ext::Decision::DEFAULT)
12
+ super(
13
+ DEFAULT_KEY,
14
+ default_rate,
15
+ decision: decision,
16
+ &method(:key_for)
17
+ )
18
+
19
+ @env = env
20
+ end
21
+
22
+ def update(rate_by_service, decision: nil)
23
+ # Remove any old services
24
+ delete_if { |key, _| key != DEFAULT_KEY && !rate_by_service.key?(key) }
25
+
26
+ # Update each service rate
27
+ update_all(rate_by_service, decision: decision)
28
+
29
+ # Emit metric for service cache size
30
+ Datadog.health_metrics.sampling_service_cache_length(length)
31
+ end
32
+
33
+ private
34
+
35
+ # DEV: Creating a string on every trace to perform a single Hash lookup is expensive.
36
+ #
37
+ # Using 2 nested hashes: 1 for env and 1 for service is the fastest option.
38
+ # This approach requires large API changes to `RateByKeySampler`.
39
+ #
40
+ # Reducing the interpolated string size, by using a 1 character separator,
41
+ # is also measurably faster than the current method. This approach does not
42
+ # require changes to `RateByKeySampler`.
43
+ #
44
+ # Keep in mind that these changes also require changes to `#update`.
45
+ #
46
+ # Comparison:
47
+ # 2 nested hashes: `service_hash.fetch(service, {}).fetch(env, default_rate)`
48
+ # 7730045 i/s
49
+ # 1 char separator: `hash.fetch("#{service}\0#{env}", default_rate)`
50
+ # 4302801 i/s - 1.80x slower
51
+ # current: `hash.fetch("service:#{service},env:#{env}", default_rate)`
52
+ # 2720459 i/s - 2.84x slower
53
+ def key_for(trace)
54
+ # Resolve env dynamically, if Proc is given.
55
+ env = @env.is_a?(Proc) ? @env.call : @env
56
+
57
+ "service:#{trace.service},env:#{env}"
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -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