ddtrace 1.4.2 → 1.23.3

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 (895) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1177 -3
  3. data/LICENSE-3rdparty.csv +3 -1
  4. data/README.md +10 -12
  5. data/bin/ddprofrb +15 -0
  6. data/bin/ddtracerb +3 -1
  7. data/ext/{ddtrace_profiling_loader/ddtrace_profiling_loader.c → datadog_profiling_loader/datadog_profiling_loader.c} +11 -4
  8. data/ext/{ddtrace_profiling_loader → datadog_profiling_loader}/extconf.rb +24 -6
  9. data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/NativeExtensionDesign.md +48 -12
  10. data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/clock_id.h +1 -3
  11. data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/clock_id_from_pthread.c +6 -23
  12. data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/clock_id_noop.c +0 -1
  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/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/extconf.rb +114 -34
  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/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/http_transport.c +129 -88
  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/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/native_extension_helpers.rb +104 -29
  34. data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/private_vm_api_access.c +331 -131
  35. data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/private_vm_api_access.h +29 -1
  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 +98 -3
  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/processors.json +92 -0
  49. data/lib/datadog/appsec/assets/waf_rules/recommended.json +2861 -796
  50. data/lib/datadog/appsec/assets/waf_rules/scanners.json +114 -0
  51. data/lib/datadog/appsec/assets/waf_rules/strict.json +459 -122
  52. data/lib/datadog/appsec/assets.rb +10 -4
  53. data/lib/datadog/appsec/autoload.rb +4 -11
  54. data/lib/datadog/appsec/component.rb +94 -0
  55. data/lib/datadog/appsec/configuration/settings.rb +170 -162
  56. data/lib/datadog/appsec/configuration.rb +1 -70
  57. data/lib/datadog/appsec/contrib/auto_instrument.rb +3 -5
  58. data/lib/datadog/appsec/contrib/devise/event.rb +57 -0
  59. data/lib/datadog/appsec/contrib/devise/ext.rb +13 -0
  60. data/lib/datadog/appsec/contrib/devise/integration.rb +42 -0
  61. data/lib/datadog/appsec/contrib/devise/patcher/authenticatable_patch.rb +76 -0
  62. data/lib/datadog/appsec/contrib/devise/patcher/registration_controller_patch.rb +54 -0
  63. data/lib/datadog/appsec/contrib/devise/patcher.rb +45 -0
  64. data/lib/datadog/appsec/contrib/devise/resource.rb +35 -0
  65. data/lib/datadog/appsec/contrib/devise/tracking.rb +57 -0
  66. data/lib/datadog/appsec/contrib/integration.rb +1 -1
  67. data/lib/datadog/appsec/contrib/patcher.rb +1 -1
  68. data/lib/datadog/appsec/contrib/rack/ext.rb +1 -3
  69. data/lib/datadog/appsec/contrib/rack/gateway/request.rb +104 -0
  70. data/lib/datadog/appsec/contrib/rack/gateway/response.rb +30 -0
  71. data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +112 -121
  72. data/lib/datadog/appsec/contrib/rack/integration.rb +0 -7
  73. data/lib/datadog/appsec/contrib/rack/patcher.rb +3 -1
  74. data/lib/datadog/appsec/contrib/rack/reactive/request.rb +33 -39
  75. data/lib/datadog/appsec/contrib/rack/reactive/request_body.rb +19 -23
  76. data/lib/datadog/appsec/contrib/rack/reactive/response.rb +25 -23
  77. data/lib/datadog/appsec/contrib/rack/request_body_middleware.rb +11 -8
  78. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +153 -41
  79. data/lib/datadog/appsec/contrib/rails/ext.rb +2 -4
  80. data/lib/datadog/appsec/contrib/rails/framework.rb +2 -16
  81. data/lib/datadog/appsec/contrib/rails/gateway/request.rb +67 -0
  82. data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +40 -52
  83. data/lib/datadog/appsec/contrib/rails/integration.rb +1 -8
  84. data/lib/datadog/appsec/contrib/rails/patcher.rb +23 -20
  85. data/lib/datadog/appsec/contrib/rails/reactive/action.rb +21 -23
  86. data/lib/datadog/appsec/contrib/rails/request.rb +4 -1
  87. data/lib/datadog/appsec/contrib/rails/request_middleware.rb +1 -1
  88. data/lib/datadog/appsec/contrib/sinatra/ext.rb +2 -3
  89. data/lib/datadog/appsec/contrib/sinatra/framework.rb +2 -16
  90. data/lib/datadog/appsec/contrib/sinatra/gateway/request.rb +17 -0
  91. data/lib/datadog/appsec/contrib/sinatra/gateway/route_params.rb +23 -0
  92. data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +78 -87
  93. data/lib/datadog/appsec/contrib/sinatra/integration.rb +0 -7
  94. data/lib/datadog/appsec/contrib/sinatra/patcher.rb +33 -15
  95. data/lib/datadog/appsec/contrib/sinatra/reactive/routed.rb +19 -21
  96. data/lib/datadog/appsec/contrib/sinatra/request_middleware.rb +1 -1
  97. data/lib/datadog/appsec/event.rb +98 -50
  98. data/lib/datadog/appsec/ext.rb +10 -0
  99. data/lib/datadog/appsec/extensions.rb +2 -105
  100. data/lib/datadog/appsec/instrumentation/gateway/argument.rb +22 -0
  101. data/lib/datadog/appsec/instrumentation/gateway.rb +26 -6
  102. data/lib/datadog/appsec/instrumentation.rb +9 -0
  103. data/lib/datadog/appsec/monitor/gateway/watcher.rb +67 -0
  104. data/lib/datadog/appsec/monitor/reactive/set_user.rb +58 -0
  105. data/lib/datadog/appsec/monitor.rb +11 -0
  106. data/lib/datadog/appsec/processor/actions.rb +49 -0
  107. data/lib/datadog/appsec/processor/rule_loader.rb +123 -0
  108. data/lib/datadog/appsec/processor/rule_merger.rb +152 -0
  109. data/lib/datadog/appsec/processor.rb +68 -61
  110. data/lib/datadog/appsec/rate_limiter.rb +1 -3
  111. data/lib/datadog/appsec/reactive/address_hash.rb +6 -2
  112. data/lib/datadog/appsec/reactive/engine.rb +10 -7
  113. data/lib/datadog/appsec/reactive/operation.rb +19 -2
  114. data/lib/datadog/appsec/reactive/subscriber.rb +2 -1
  115. data/lib/datadog/appsec/remote.rb +129 -0
  116. data/lib/datadog/appsec/response.rb +151 -0
  117. data/lib/datadog/appsec/sample_rate.rb +21 -0
  118. data/lib/datadog/appsec/scope.rb +61 -0
  119. data/lib/datadog/appsec/utils/http/media_range.rb +199 -0
  120. data/lib/datadog/appsec/utils/http/media_type.rb +85 -0
  121. data/lib/datadog/appsec/utils/http.rb +11 -0
  122. data/lib/datadog/appsec/utils.rb +9 -0
  123. data/lib/datadog/appsec.rb +41 -4
  124. data/lib/datadog/auto_instrument.rb +3 -0
  125. data/lib/datadog/core/backport.rb +51 -0
  126. data/lib/datadog/core/buffer/cruby.rb +1 -1
  127. data/lib/datadog/core/buffer/random.rb +1 -1
  128. data/lib/datadog/core/buffer/thread_safe.rb +1 -1
  129. data/lib/datadog/core/chunker.rb +1 -1
  130. data/lib/datadog/core/configuration/agent_settings_resolver.rb +96 -56
  131. data/lib/datadog/core/configuration/base.rb +7 -16
  132. data/lib/datadog/core/configuration/components.rb +46 -300
  133. data/lib/datadog/core/configuration/ext.rb +47 -0
  134. data/lib/datadog/core/configuration/option.rb +272 -22
  135. data/lib/datadog/core/configuration/option_definition.rb +81 -31
  136. data/lib/datadog/core/configuration/options.rb +26 -16
  137. data/lib/datadog/core/configuration/settings.rb +498 -302
  138. data/lib/datadog/core/configuration.rb +16 -10
  139. data/lib/datadog/core/diagnostics/environment_logger.rb +131 -231
  140. data/lib/datadog/core/diagnostics/health.rb +4 -22
  141. data/lib/datadog/core/encoding.rb +0 -4
  142. data/lib/datadog/core/environment/cgroup.rb +0 -4
  143. data/lib/datadog/core/environment/class_count.rb +7 -7
  144. data/lib/datadog/core/environment/container.rb +0 -4
  145. data/lib/datadog/core/environment/execution.rb +103 -0
  146. data/lib/datadog/core/environment/ext.rb +12 -12
  147. data/lib/datadog/core/environment/gc.rb +1 -1
  148. data/lib/datadog/core/environment/git.rb +25 -0
  149. data/lib/datadog/core/environment/identity.rb +27 -1
  150. data/lib/datadog/core/environment/platform.rb +7 -3
  151. data/lib/datadog/core/environment/socket.rb +1 -1
  152. data/lib/datadog/core/environment/thread_count.rb +1 -1
  153. data/lib/datadog/core/environment/variable_helpers.rb +29 -44
  154. data/lib/datadog/core/environment/vm_cache.rb +18 -1
  155. data/lib/datadog/core/environment/yjit.rb +58 -0
  156. data/lib/datadog/core/error.rb +1 -2
  157. data/lib/datadog/core/extensions.rb +1 -1
  158. data/lib/datadog/core/git/ext.rb +5 -24
  159. data/lib/datadog/core/header_collection.rb +43 -0
  160. data/lib/datadog/core/logger.rb +0 -2
  161. data/lib/datadog/core/logging/ext.rb +3 -1
  162. data/lib/datadog/core/metrics/client.rb +3 -4
  163. data/lib/datadog/core/metrics/ext.rb +6 -8
  164. data/lib/datadog/core/metrics/helpers.rb +1 -1
  165. data/lib/datadog/core/metrics/logging.rb +0 -2
  166. data/lib/datadog/core/metrics/metric.rb +1 -1
  167. data/lib/datadog/core/metrics/options.rb +0 -2
  168. data/lib/datadog/core/pin.rb +0 -2
  169. data/lib/datadog/core/remote/client/capabilities.rb +62 -0
  170. data/lib/datadog/core/remote/client.rb +232 -0
  171. data/lib/datadog/core/remote/component.rb +162 -0
  172. data/lib/datadog/core/remote/configuration/content.rb +111 -0
  173. data/lib/datadog/core/remote/configuration/digest.rb +62 -0
  174. data/lib/datadog/core/remote/configuration/path.rb +90 -0
  175. data/lib/datadog/core/remote/configuration/repository.rb +294 -0
  176. data/lib/datadog/core/remote/configuration/target.rb +74 -0
  177. data/lib/datadog/core/remote/configuration.rb +18 -0
  178. data/lib/datadog/core/remote/dispatcher.rb +59 -0
  179. data/lib/datadog/core/remote/ext.rb +13 -0
  180. data/lib/datadog/core/remote/negotiation.rb +70 -0
  181. data/lib/datadog/core/remote/tie/tracing.rb +39 -0
  182. data/lib/datadog/core/remote/tie.rb +27 -0
  183. data/lib/datadog/core/remote/transport/config.rb +60 -0
  184. data/lib/datadog/core/remote/transport/http/api/instance.rb +39 -0
  185. data/lib/datadog/core/remote/transport/http/api/spec.rb +21 -0
  186. data/lib/datadog/core/remote/transport/http/api.rb +58 -0
  187. data/lib/datadog/core/remote/transport/http/builder.rb +219 -0
  188. data/lib/datadog/core/remote/transport/http/client.rb +48 -0
  189. data/lib/datadog/core/remote/transport/http/config.rb +280 -0
  190. data/lib/datadog/core/remote/transport/http/negotiation.rb +146 -0
  191. data/lib/datadog/core/remote/transport/http.rb +179 -0
  192. data/lib/datadog/core/remote/transport/negotiation.rb +62 -0
  193. data/lib/datadog/core/remote/worker.rb +102 -0
  194. data/lib/datadog/core/remote.rb +24 -0
  195. data/lib/datadog/core/runtime/ext.rb +21 -11
  196. data/lib/datadog/core/runtime/metrics.rb +64 -7
  197. data/lib/datadog/core/telemetry/component.rb +66 -0
  198. data/lib/datadog/core/telemetry/emitter.rb +9 -13
  199. data/lib/datadog/core/telemetry/event.rb +250 -47
  200. data/lib/datadog/core/telemetry/ext.rb +7 -2
  201. data/lib/datadog/core/telemetry/http/adapters/net.rb +1 -3
  202. data/lib/datadog/core/telemetry/http/env.rb +1 -1
  203. data/lib/datadog/core/telemetry/http/ext.rb +13 -8
  204. data/lib/datadog/core/telemetry/http/response.rb +4 -4
  205. data/lib/datadog/core/telemetry/http/transport.rb +12 -4
  206. data/lib/datadog/core/telemetry/request.rb +59 -0
  207. data/lib/datadog/core/telemetry/worker.rb +158 -0
  208. data/lib/datadog/core/transport/ext.rb +49 -0
  209. data/lib/datadog/core/transport/http/adapters/net.rb +168 -0
  210. data/lib/datadog/core/transport/http/adapters/registry.rb +29 -0
  211. data/lib/datadog/core/transport/http/adapters/test.rb +89 -0
  212. data/lib/datadog/core/transport/http/adapters/unix_socket.rb +83 -0
  213. data/lib/datadog/core/transport/http/api/endpoint.rb +31 -0
  214. data/lib/datadog/core/transport/http/api/fallbacks.rb +26 -0
  215. data/lib/datadog/core/transport/http/api/map.rb +18 -0
  216. data/lib/datadog/core/transport/http/env.rb +62 -0
  217. data/lib/datadog/core/transport/http/response.rb +60 -0
  218. data/lib/datadog/core/transport/parcel.rb +22 -0
  219. data/lib/datadog/core/transport/request.rb +17 -0
  220. data/lib/datadog/core/transport/response.rb +64 -0
  221. data/lib/datadog/core/utils/compression.rb +6 -2
  222. data/lib/datadog/core/utils/duration.rb +52 -0
  223. data/lib/datadog/core/utils/forking.rb +0 -2
  224. data/lib/datadog/core/utils/hash.rb +79 -0
  225. data/lib/datadog/core/utils/network.rb +140 -0
  226. data/lib/datadog/core/utils/only_once.rb +0 -2
  227. data/lib/datadog/core/utils/only_once_successful.rb +76 -0
  228. data/lib/datadog/core/utils/safe_dup.rb +35 -12
  229. data/lib/datadog/core/utils/sequence.rb +1 -1
  230. data/lib/datadog/core/utils/time.rb +1 -3
  231. data/lib/datadog/core/utils/url.rb +25 -0
  232. data/lib/datadog/core/utils.rb +1 -24
  233. data/lib/datadog/core/vendor/ipaddr.rb +78 -0
  234. data/lib/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rb +0 -2
  235. data/lib/datadog/core/vendor/multipart-post/multipart/post/multipartable.rb +0 -2
  236. data/lib/datadog/core/vendor/multipart-post/multipart/post/parts.rb +0 -2
  237. data/lib/datadog/core/vendor/multipart-post/multipart/post/version.rb +0 -2
  238. data/lib/datadog/core/vendor/multipart-post/multipart/post.rb +0 -2
  239. data/lib/datadog/core/vendor/multipart-post/multipart.rb +0 -2
  240. data/lib/datadog/core/vendor/multipart-post/net/http/post/multipart.rb +0 -2
  241. data/lib/datadog/core/worker.rb +1 -1
  242. data/lib/datadog/core/workers/async.rb +7 -6
  243. data/lib/datadog/core/workers/interval_loop.rb +6 -2
  244. data/lib/datadog/core/workers/polling.rb +2 -4
  245. data/lib/datadog/core/workers/queue.rb +1 -1
  246. data/lib/datadog/core/workers/runtime_metrics.rb +1 -1
  247. data/lib/datadog/core.rb +20 -55
  248. data/lib/datadog/kit/appsec/events.rb +169 -0
  249. data/lib/datadog/kit/enable_core_dumps.rb +8 -9
  250. data/lib/datadog/kit/identity.rb +90 -49
  251. data/lib/datadog/kit.rb +1 -1
  252. data/lib/datadog/opentelemetry/api/context.rb +193 -0
  253. data/lib/datadog/opentelemetry/api/trace/span.rb +14 -0
  254. data/lib/datadog/opentelemetry/sdk/configurator.rb +37 -0
  255. data/lib/datadog/opentelemetry/sdk/id_generator.rb +26 -0
  256. data/lib/datadog/opentelemetry/sdk/propagator.rb +92 -0
  257. data/lib/datadog/opentelemetry/sdk/span_processor.rb +134 -0
  258. data/lib/datadog/opentelemetry/sdk/trace/span.rb +167 -0
  259. data/lib/datadog/opentelemetry/trace.rb +58 -0
  260. data/lib/datadog/opentelemetry.rb +51 -0
  261. data/lib/datadog/opentracer/binary_propagator.rb +1 -1
  262. data/lib/datadog/opentracer/carrier.rb +1 -1
  263. data/lib/datadog/opentracer/distributed_headers.rb +7 -11
  264. data/lib/datadog/opentracer/global_tracer.rb +1 -1
  265. data/lib/datadog/opentracer/propagator.rb +1 -1
  266. data/lib/datadog/opentracer/rack_propagator.rb +0 -5
  267. data/lib/datadog/opentracer/scope.rb +1 -1
  268. data/lib/datadog/opentracer/scope_manager.rb +1 -1
  269. data/lib/datadog/opentracer/span.rb +0 -2
  270. data/lib/datadog/opentracer/span_context.rb +1 -1
  271. data/lib/datadog/opentracer/span_context_factory.rb +1 -1
  272. data/lib/datadog/opentracer/text_map_propagator.rb +6 -9
  273. data/lib/datadog/opentracer/thread_local_scope.rb +1 -1
  274. data/lib/datadog/opentracer/thread_local_scope_manager.rb +0 -2
  275. data/lib/datadog/opentracer/tracer.rb +0 -2
  276. data/lib/datadog/opentracer.rb +10 -1
  277. data/lib/datadog/profiling/collectors/code_provenance.rb +10 -6
  278. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +82 -19
  279. data/lib/datadog/profiling/collectors/dynamic_sampling_rate.rb +14 -0
  280. data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +68 -0
  281. data/lib/datadog/profiling/collectors/info.rb +101 -0
  282. data/lib/datadog/profiling/collectors/stack.rb +1 -1
  283. data/lib/datadog/profiling/collectors/thread_context.rb +61 -0
  284. data/lib/datadog/profiling/component.rb +426 -0
  285. data/lib/datadog/profiling/exporter.rb +32 -10
  286. data/lib/datadog/profiling/ext/forking.rb +0 -2
  287. data/lib/datadog/profiling/ext.rb +22 -32
  288. data/lib/datadog/profiling/flush.rb +11 -6
  289. data/lib/datadog/profiling/http_transport.rb +23 -8
  290. data/lib/datadog/profiling/load_native_extension.rb +25 -8
  291. data/lib/datadog/profiling/native_extension.rb +2 -23
  292. data/lib/datadog/profiling/preload.rb +1 -1
  293. data/lib/datadog/profiling/profiler.rb +42 -14
  294. data/lib/datadog/profiling/scheduler.rb +27 -25
  295. data/lib/datadog/profiling/stack_recorder.rb +36 -8
  296. data/lib/datadog/profiling/tag_builder.rb +6 -1
  297. data/lib/datadog/profiling/tasks/exec.rb +3 -5
  298. data/lib/datadog/profiling/tasks/help.rb +3 -5
  299. data/lib/datadog/profiling/tasks/setup.rb +0 -35
  300. data/lib/datadog/profiling.rb +65 -75
  301. data/lib/datadog/tracing/analytics.rb +1 -1
  302. data/lib/datadog/tracing/buffer.rb +0 -5
  303. data/lib/datadog/tracing/client_ip.rb +61 -0
  304. data/lib/datadog/tracing/component.rb +235 -0
  305. data/lib/datadog/tracing/configuration/agent_settings_resolver.rb +13 -0
  306. data/lib/datadog/tracing/configuration/dynamic/option.rb +71 -0
  307. data/lib/datadog/tracing/configuration/dynamic.rb +64 -0
  308. data/lib/datadog/tracing/configuration/ext.rb +72 -15
  309. data/lib/datadog/tracing/configuration/http.rb +74 -0
  310. data/lib/datadog/tracing/configuration/settings.rb +502 -0
  311. data/lib/datadog/tracing/context.rb +1 -1
  312. data/lib/datadog/tracing/context_provider.rb +0 -2
  313. data/lib/datadog/tracing/contrib/action_cable/configuration/settings.rb +11 -7
  314. data/lib/datadog/tracing/contrib/action_cable/event.rb +1 -1
  315. data/lib/datadog/tracing/contrib/action_cable/events/broadcast.rb +0 -2
  316. data/lib/datadog/tracing/contrib/action_cable/events/perform_action.rb +0 -2
  317. data/lib/datadog/tracing/contrib/action_cable/events/transmit.rb +0 -2
  318. data/lib/datadog/tracing/contrib/action_cable/events.rb +1 -1
  319. data/lib/datadog/tracing/contrib/action_cable/ext.rb +20 -19
  320. data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +0 -2
  321. data/lib/datadog/tracing/contrib/action_cable/integration.rb +0 -2
  322. data/lib/datadog/tracing/contrib/action_cable/patcher.rb +1 -1
  323. data/lib/datadog/tracing/contrib/action_mailer/configuration/settings.rb +11 -7
  324. data/lib/datadog/tracing/contrib/action_mailer/event.rb +1 -1
  325. data/lib/datadog/tracing/contrib/action_mailer/events/deliver.rb +1 -3
  326. data/lib/datadog/tracing/contrib/action_mailer/events/process.rb +0 -2
  327. data/lib/datadog/tracing/contrib/action_mailer/events.rb +1 -1
  328. data/lib/datadog/tracing/contrib/action_mailer/ext.rb +20 -19
  329. data/lib/datadog/tracing/contrib/action_mailer/integration.rb +0 -2
  330. data/lib/datadog/tracing/contrib/action_mailer/patcher.rb +1 -1
  331. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +2 -26
  332. data/lib/datadog/tracing/contrib/action_pack/action_controller/patcher.rb +1 -1
  333. data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +23 -9
  334. data/lib/datadog/tracing/contrib/action_pack/ext.rb +10 -9
  335. data/lib/datadog/tracing/contrib/action_pack/integration.rb +0 -2
  336. data/lib/datadog/tracing/contrib/action_pack/patcher.rb +1 -1
  337. data/lib/datadog/tracing/contrib/action_pack/utils.rb +0 -2
  338. data/lib/datadog/tracing/contrib/action_view/configuration/settings.rb +10 -8
  339. data/lib/datadog/tracing/contrib/action_view/event.rb +1 -1
  340. data/lib/datadog/tracing/contrib/action_view/events/render_partial.rb +0 -2
  341. data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +0 -2
  342. data/lib/datadog/tracing/contrib/action_view/events.rb +1 -1
  343. data/lib/datadog/tracing/contrib/action_view/ext.rb +12 -11
  344. data/lib/datadog/tracing/contrib/action_view/instrumentation/partial_renderer.rb +0 -2
  345. data/lib/datadog/tracing/contrib/action_view/instrumentation/template_renderer.rb +0 -2
  346. data/lib/datadog/tracing/contrib/action_view/integration.rb +0 -2
  347. data/lib/datadog/tracing/contrib/action_view/patcher.rb +0 -2
  348. data/lib/datadog/tracing/contrib/action_view/utils.rb +0 -2
  349. data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +15 -8
  350. data/lib/datadog/tracing/contrib/active_job/event.rb +1 -1
  351. data/lib/datadog/tracing/contrib/active_job/events/discard.rb +0 -2
  352. data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +0 -2
  353. data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +0 -2
  354. data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +0 -2
  355. data/lib/datadog/tracing/contrib/active_job/events/perform.rb +0 -2
  356. data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +0 -2
  357. data/lib/datadog/tracing/contrib/active_job/events.rb +1 -1
  358. data/lib/datadog/tracing/contrib/active_job/ext.rb +25 -24
  359. data/lib/datadog/tracing/contrib/active_job/integration.rb +0 -2
  360. data/lib/datadog/tracing/contrib/active_job/log_injection.rb +2 -2
  361. data/lib/datadog/tracing/contrib/active_job/patcher.rb +2 -2
  362. data/lib/datadog/tracing/contrib/active_model_serializers/configuration/settings.rb +11 -7
  363. data/lib/datadog/tracing/contrib/active_model_serializers/event.rb +1 -1
  364. data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +0 -2
  365. data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +0 -2
  366. data/lib/datadog/tracing/contrib/active_model_serializers/events.rb +1 -1
  367. data/lib/datadog/tracing/contrib/active_model_serializers/ext.rb +12 -11
  368. data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +0 -2
  369. data/lib/datadog/tracing/contrib/active_model_serializers/patcher.rb +1 -1
  370. data/lib/datadog/tracing/contrib/active_record/configuration/makara_resolver.rb +0 -2
  371. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +29 -17
  372. data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +17 -9
  373. data/lib/datadog/tracing/contrib/active_record/event.rb +1 -1
  374. data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +0 -2
  375. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +3 -6
  376. data/lib/datadog/tracing/contrib/active_record/events.rb +1 -1
  377. data/lib/datadog/tracing/contrib/active_record/ext.rb +17 -16
  378. data/lib/datadog/tracing/contrib/active_record/integration.rb +0 -2
  379. data/lib/datadog/tracing/contrib/active_record/patcher.rb +1 -1
  380. data/lib/datadog/tracing/contrib/active_record/utils.rb +1 -3
  381. data/lib/datadog/tracing/contrib/active_record/vendor/connection_specification.rb +0 -2
  382. data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +107 -201
  383. data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +4 -1
  384. data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +1 -1
  385. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +19 -8
  386. data/lib/datadog/tracing/contrib/active_support/ext.rb +18 -17
  387. data/lib/datadog/tracing/contrib/active_support/integration.rb +0 -2
  388. data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +1 -1
  389. data/lib/datadog/tracing/contrib/active_support/notifications/subscriber.rb +1 -1
  390. data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +0 -2
  391. data/lib/datadog/tracing/contrib/active_support/patcher.rb +1 -1
  392. data/lib/datadog/tracing/contrib/analytics.rb +1 -2
  393. data/lib/datadog/tracing/contrib/auto_instrument.rb +1 -1
  394. data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +25 -8
  395. data/lib/datadog/tracing/contrib/aws/ext.rb +37 -14
  396. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +28 -3
  397. data/lib/datadog/tracing/contrib/aws/integration.rb +0 -2
  398. data/lib/datadog/tracing/contrib/aws/parsed_context.rb +4 -2
  399. data/lib/datadog/tracing/contrib/aws/patcher.rb +1 -1
  400. data/lib/datadog/tracing/contrib/aws/service/base.rb +16 -0
  401. data/lib/datadog/tracing/contrib/aws/service/dynamodb.rb +22 -0
  402. data/lib/datadog/tracing/contrib/aws/service/eventbridge.rb +22 -0
  403. data/lib/datadog/tracing/contrib/aws/service/kinesis.rb +32 -0
  404. data/lib/datadog/tracing/contrib/aws/service/s3.rb +22 -0
  405. data/lib/datadog/tracing/contrib/aws/service/sns.rb +30 -0
  406. data/lib/datadog/tracing/contrib/aws/service/sqs.rb +27 -0
  407. data/lib/datadog/tracing/contrib/aws/service/states.rb +40 -0
  408. data/lib/datadog/tracing/contrib/aws/services.rb +17 -3
  409. data/lib/datadog/tracing/contrib/concurrent_ruby/async_patch.rb +20 -0
  410. data/lib/datadog/tracing/contrib/concurrent_ruby/configuration/settings.rb +4 -3
  411. data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +15 -15
  412. data/lib/datadog/tracing/contrib/concurrent_ruby/ext.rb +3 -3
  413. data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +4 -11
  414. data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +2 -3
  415. data/lib/datadog/tracing/contrib/concurrent_ruby/patcher.rb +20 -4
  416. data/lib/datadog/tracing/contrib/concurrent_ruby/promises_future_patch.rb +22 -0
  417. data/lib/datadog/tracing/contrib/configurable.rb +2 -2
  418. data/lib/datadog/tracing/contrib/configuration/resolver.rb +1 -1
  419. data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +1 -1
  420. data/lib/datadog/tracing/contrib/configuration/settings.rb +1 -5
  421. data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +30 -8
  422. data/lib/datadog/tracing/contrib/dalli/ext.rb +26 -10
  423. data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +23 -7
  424. data/lib/datadog/tracing/contrib/dalli/integration.rb +0 -2
  425. data/lib/datadog/tracing/contrib/dalli/patcher.rb +1 -1
  426. data/lib/datadog/tracing/contrib/dalli/quantize.rb +0 -2
  427. data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +15 -8
  428. data/lib/datadog/tracing/contrib/delayed_job/ext.rb +16 -15
  429. data/lib/datadog/tracing/contrib/delayed_job/integration.rb +0 -2
  430. data/lib/datadog/tracing/contrib/delayed_job/patcher.rb +1 -1
  431. data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +9 -1
  432. data/lib/datadog/tracing/contrib/delayed_job/server_internal_tracer/worker.rb +3 -1
  433. data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +25 -8
  434. data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +21 -13
  435. data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +0 -2
  436. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +105 -95
  437. data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +0 -4
  438. data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +28 -10
  439. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +52 -7
  440. data/lib/datadog/tracing/contrib/ethon/ext.rb +19 -11
  441. data/lib/datadog/tracing/contrib/ethon/integration.rb +0 -2
  442. data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +10 -3
  443. data/lib/datadog/tracing/contrib/ethon/patcher.rb +1 -2
  444. data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +30 -11
  445. data/lib/datadog/tracing/contrib/excon/ext.rb +16 -8
  446. data/lib/datadog/tracing/contrib/excon/integration.rb +0 -2
  447. data/lib/datadog/tracing/contrib/excon/middleware.rb +27 -4
  448. data/lib/datadog/tracing/contrib/excon/patcher.rb +1 -1
  449. data/lib/datadog/tracing/contrib/ext.rb +55 -0
  450. data/lib/datadog/tracing/contrib/extensions.rb +38 -4
  451. data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +37 -11
  452. data/lib/datadog/tracing/contrib/faraday/connection.rb +1 -1
  453. data/lib/datadog/tracing/contrib/faraday/ext.rb +16 -8
  454. data/lib/datadog/tracing/contrib/faraday/integration.rb +0 -2
  455. data/lib/datadog/tracing/contrib/faraday/middleware.rb +25 -7
  456. data/lib/datadog/tracing/contrib/faraday/patcher.rb +0 -2
  457. data/lib/datadog/tracing/contrib/faraday/rack_builder.rb +1 -1
  458. data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +10 -7
  459. data/lib/datadog/tracing/contrib/grape/endpoint.rb +0 -4
  460. data/lib/datadog/tracing/contrib/grape/ext.rb +16 -15
  461. data/lib/datadog/tracing/contrib/grape/instrumentation.rb +0 -2
  462. data/lib/datadog/tracing/contrib/grape/integration.rb +0 -2
  463. data/lib/datadog/tracing/contrib/grape/patcher.rb +1 -1
  464. data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +11 -8
  465. data/lib/datadog/tracing/contrib/graphql/ext.rb +7 -6
  466. data/lib/datadog/tracing/contrib/graphql/integration.rb +0 -2
  467. data/lib/datadog/tracing/contrib/graphql/patcher.rb +0 -2
  468. data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +51 -10
  469. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +45 -19
  470. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +43 -26
  471. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb +0 -6
  472. data/lib/datadog/tracing/contrib/grpc/distributed/fetcher.rb +26 -0
  473. data/lib/datadog/tracing/contrib/grpc/distributed/propagation.rb +42 -0
  474. data/lib/datadog/tracing/contrib/grpc/ext.rb +16 -11
  475. data/lib/datadog/tracing/contrib/grpc/formatting.rb +127 -0
  476. data/lib/datadog/tracing/contrib/grpc/integration.rb +8 -3
  477. data/lib/datadog/tracing/contrib/grpc/intercept_with_datadog.rb +1 -1
  478. data/lib/datadog/tracing/contrib/grpc/patcher.rb +1 -4
  479. data/lib/datadog/tracing/contrib/hanami/action_tracer.rb +47 -0
  480. data/lib/datadog/tracing/contrib/hanami/configuration/settings.rb +23 -0
  481. data/lib/datadog/tracing/contrib/hanami/ext.rb +24 -0
  482. data/lib/datadog/tracing/contrib/hanami/integration.rb +42 -0
  483. data/lib/datadog/tracing/contrib/hanami/patcher.rb +33 -0
  484. data/lib/datadog/tracing/contrib/hanami/plugin.rb +23 -0
  485. data/lib/datadog/tracing/contrib/hanami/renderer_policy_tracing.rb +41 -0
  486. data/lib/datadog/tracing/contrib/hanami/router_tracing.rb +44 -0
  487. data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +6 -9
  488. data/lib/datadog/tracing/contrib/http/configuration/settings.rb +48 -10
  489. data/lib/datadog/tracing/contrib/http/distributed/fetcher.rb +38 -0
  490. data/lib/datadog/tracing/contrib/http/distributed/propagation.rb +37 -0
  491. data/lib/datadog/tracing/contrib/http/ext.rb +16 -8
  492. data/lib/datadog/tracing/contrib/http/instrumentation.rb +32 -12
  493. data/lib/datadog/tracing/contrib/http/integration.rb +1 -1
  494. data/lib/datadog/tracing/contrib/http/patcher.rb +1 -1
  495. data/lib/datadog/tracing/contrib/http_annotation_helper.rb +1 -1
  496. data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +48 -10
  497. data/lib/datadog/tracing/contrib/httpclient/ext.rb +17 -8
  498. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +27 -8
  499. data/lib/datadog/tracing/contrib/httpclient/integration.rb +0 -2
  500. data/lib/datadog/tracing/contrib/httpclient/patcher.rb +0 -2
  501. data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +48 -10
  502. data/lib/datadog/tracing/contrib/httprb/ext.rb +16 -8
  503. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +27 -9
  504. data/lib/datadog/tracing/contrib/httprb/integration.rb +0 -2
  505. data/lib/datadog/tracing/contrib/httprb/patcher.rb +0 -2
  506. data/lib/datadog/tracing/contrib/integration.rb +1 -1
  507. data/lib/datadog/tracing/contrib/kafka/configuration/settings.rb +11 -7
  508. data/lib/datadog/tracing/contrib/kafka/consumer_event.rb +2 -1
  509. data/lib/datadog/tracing/contrib/kafka/consumer_group_event.rb +1 -1
  510. data/lib/datadog/tracing/contrib/kafka/event.rb +2 -1
  511. data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +0 -2
  512. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +0 -2
  513. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +0 -2
  514. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +0 -2
  515. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +0 -2
  516. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +0 -2
  517. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +0 -2
  518. data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +1 -2
  519. data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +1 -2
  520. data/lib/datadog/tracing/contrib/kafka/events.rb +1 -1
  521. data/lib/datadog/tracing/contrib/kafka/ext.rb +42 -39
  522. data/lib/datadog/tracing/contrib/kafka/integration.rb +0 -2
  523. data/lib/datadog/tracing/contrib/kafka/patcher.rb +1 -1
  524. data/lib/datadog/tracing/contrib/lograge/configuration/settings.rb +4 -3
  525. data/lib/datadog/tracing/contrib/lograge/ext.rb +2 -2
  526. data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +3 -18
  527. data/lib/datadog/tracing/contrib/lograge/integration.rb +0 -2
  528. data/lib/datadog/tracing/contrib/lograge/patcher.rb +1 -1
  529. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +25 -8
  530. data/lib/datadog/tracing/contrib/mongodb/ext.rb +25 -14
  531. data/lib/datadog/tracing/contrib/mongodb/instrumentation.rb +1 -1
  532. data/lib/datadog/tracing/contrib/mongodb/integration.rb +0 -2
  533. data/lib/datadog/tracing/contrib/mongodb/parsers.rb +0 -2
  534. data/lib/datadog/tracing/contrib/mongodb/patcher.rb +1 -1
  535. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +22 -4
  536. data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +36 -8
  537. data/lib/datadog/tracing/contrib/mysql2/ext.rb +15 -9
  538. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +38 -4
  539. data/lib/datadog/tracing/contrib/mysql2/integration.rb +0 -2
  540. data/lib/datadog/tracing/contrib/mysql2/patcher.rb +1 -1
  541. data/lib/datadog/tracing/contrib/opensearch/configuration/settings.rb +53 -0
  542. data/lib/datadog/tracing/contrib/opensearch/ext.rb +38 -0
  543. data/lib/datadog/tracing/contrib/opensearch/integration.rb +44 -0
  544. data/lib/datadog/tracing/contrib/opensearch/patcher.rb +135 -0
  545. data/lib/datadog/tracing/contrib/opensearch/quantize.rb +81 -0
  546. data/lib/datadog/tracing/contrib/patchable.rb +1 -1
  547. data/lib/datadog/tracing/contrib/patcher.rb +3 -5
  548. data/lib/datadog/tracing/contrib/pg/configuration/settings.rb +37 -8
  549. data/lib/datadog/tracing/contrib/pg/ext.rb +22 -18
  550. data/lib/datadog/tracing/contrib/pg/instrumentation.rb +122 -39
  551. data/lib/datadog/tracing/contrib/pg/integration.rb +0 -2
  552. data/lib/datadog/tracing/contrib/pg/patcher.rb +1 -1
  553. data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +24 -8
  554. data/lib/datadog/tracing/contrib/presto/ext.rb +25 -19
  555. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +17 -5
  556. data/lib/datadog/tracing/contrib/presto/integration.rb +0 -2
  557. data/lib/datadog/tracing/contrib/presto/patcher.rb +0 -2
  558. data/lib/datadog/tracing/contrib/propagation/sql_comment/comment.rb +41 -0
  559. data/lib/datadog/tracing/contrib/propagation/sql_comment/ext.rb +33 -0
  560. data/lib/datadog/tracing/contrib/propagation/sql_comment/mode.rb +28 -0
  561. data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +53 -0
  562. data/lib/datadog/tracing/contrib/qless/configuration/settings.rb +14 -9
  563. data/lib/datadog/tracing/contrib/qless/ext.rb +14 -13
  564. data/lib/datadog/tracing/contrib/qless/integration.rb +0 -2
  565. data/lib/datadog/tracing/contrib/qless/patcher.rb +1 -2
  566. data/lib/datadog/tracing/contrib/qless/qless_job.rb +3 -2
  567. data/lib/datadog/tracing/contrib/qless/tracer_cleaner.rb +1 -1
  568. data/lib/datadog/tracing/contrib/que/configuration/settings.rb +22 -14
  569. data/lib/datadog/tracing/contrib/que/ext.rb +1 -2
  570. data/lib/datadog/tracing/contrib/que/integration.rb +0 -2
  571. data/lib/datadog/tracing/contrib/que/patcher.rb +0 -2
  572. data/lib/datadog/tracing/contrib/que/tracer.rb +4 -2
  573. data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +19 -8
  574. data/lib/datadog/tracing/contrib/racecar/event.rb +7 -4
  575. data/lib/datadog/tracing/contrib/racecar/events/batch.rb +4 -3
  576. data/lib/datadog/tracing/contrib/racecar/events/consume.rb +0 -2
  577. data/lib/datadog/tracing/contrib/racecar/events/message.rb +4 -3
  578. data/lib/datadog/tracing/contrib/racecar/events.rb +1 -1
  579. data/lib/datadog/tracing/contrib/racecar/ext.rb +20 -18
  580. data/lib/datadog/tracing/contrib/racecar/integration.rb +0 -2
  581. data/lib/datadog/tracing/contrib/racecar/patcher.rb +1 -1
  582. data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +17 -14
  583. data/lib/datadog/tracing/contrib/rack/ext.rb +18 -12
  584. data/lib/datadog/tracing/contrib/rack/header_collection.rb +38 -0
  585. data/lib/datadog/tracing/contrib/rack/header_tagging.rb +63 -0
  586. data/lib/datadog/tracing/contrib/rack/integration.rb +0 -2
  587. data/lib/datadog/tracing/contrib/rack/middlewares.rb +138 -82
  588. data/lib/datadog/tracing/contrib/rack/patcher.rb +0 -2
  589. data/lib/datadog/tracing/contrib/rack/request_queue.rb +0 -2
  590. data/lib/datadog/tracing/contrib/rails/auto_instrument_railtie.rb +0 -4
  591. data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +29 -19
  592. data/lib/datadog/tracing/contrib/rails/ext.rb +7 -6
  593. data/lib/datadog/tracing/contrib/rails/framework.rb +1 -1
  594. data/lib/datadog/tracing/contrib/rails/integration.rb +0 -2
  595. data/lib/datadog/tracing/contrib/rails/log_injection.rb +7 -12
  596. data/lib/datadog/tracing/contrib/rails/middlewares.rb +1 -1
  597. data/lib/datadog/tracing/contrib/rails/patcher.rb +10 -43
  598. data/lib/datadog/tracing/contrib/rails/railtie.rb +3 -5
  599. data/lib/datadog/tracing/contrib/rails/utils.rb +2 -2
  600. data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +15 -11
  601. data/lib/datadog/tracing/contrib/rake/ext.rb +14 -13
  602. data/lib/datadog/tracing/contrib/rake/instrumentation.rb +0 -2
  603. data/lib/datadog/tracing/contrib/rake/integration.rb +0 -2
  604. data/lib/datadog/tracing/contrib/rake/patcher.rb +1 -1
  605. data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +0 -2
  606. data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +27 -10
  607. data/lib/datadog/tracing/contrib/redis/ext.rb +22 -13
  608. data/lib/datadog/tracing/contrib/redis/instrumentation.rb +13 -39
  609. data/lib/datadog/tracing/contrib/redis/integration.rb +34 -3
  610. data/lib/datadog/tracing/contrib/redis/patcher.rb +66 -11
  611. data/lib/datadog/tracing/contrib/redis/quantize.rb +11 -10
  612. data/lib/datadog/tracing/contrib/redis/tags.rb +24 -9
  613. data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +83 -0
  614. data/lib/datadog/tracing/contrib/redis/vendor/resolver.rb +0 -2
  615. data/lib/datadog/tracing/contrib/registerable.rb +1 -1
  616. data/lib/datadog/tracing/contrib/registry.rb +1 -1
  617. data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +15 -8
  618. data/lib/datadog/tracing/contrib/resque/ext.rb +9 -8
  619. data/lib/datadog/tracing/contrib/resque/integration.rb +0 -2
  620. data/lib/datadog/tracing/contrib/resque/patcher.rb +1 -1
  621. data/lib/datadog/tracing/contrib/resque/resque_job.rb +5 -1
  622. data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +28 -10
  623. data/lib/datadog/tracing/contrib/rest_client/ext.rb +15 -8
  624. data/lib/datadog/tracing/contrib/rest_client/integration.rb +0 -2
  625. data/lib/datadog/tracing/contrib/rest_client/patcher.rb +1 -2
  626. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +28 -3
  627. data/lib/datadog/tracing/contrib/roda/configuration/settings.rb +38 -0
  628. data/lib/datadog/tracing/contrib/roda/ext.rb +19 -0
  629. data/lib/datadog/tracing/contrib/roda/instrumentation.rb +76 -0
  630. data/lib/datadog/tracing/contrib/roda/integration.rb +45 -0
  631. data/lib/datadog/{ci/contrib/cucumber → tracing/contrib/roda}/patcher.rb +10 -7
  632. data/lib/datadog/tracing/contrib/semantic_logger/configuration/settings.rb +4 -3
  633. data/lib/datadog/tracing/contrib/semantic_logger/ext.rb +2 -2
  634. data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +6 -21
  635. data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +0 -2
  636. data/lib/datadog/tracing/contrib/semantic_logger/patcher.rb +1 -1
  637. data/lib/datadog/tracing/contrib/sequel/configuration/settings.rb +11 -7
  638. data/lib/datadog/tracing/contrib/sequel/database.rb +4 -3
  639. data/lib/datadog/tracing/contrib/sequel/dataset.rb +5 -2
  640. data/lib/datadog/tracing/contrib/sequel/ext.rb +10 -9
  641. data/lib/datadog/tracing/contrib/sequel/integration.rb +0 -2
  642. data/lib/datadog/tracing/contrib/sequel/patcher.rb +1 -1
  643. data/lib/datadog/tracing/contrib/sequel/utils.rb +7 -6
  644. data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +16 -9
  645. data/lib/datadog/tracing/contrib/shoryuken/ext.rb +14 -12
  646. data/lib/datadog/tracing/contrib/shoryuken/integration.rb +0 -2
  647. data/lib/datadog/tracing/contrib/shoryuken/patcher.rb +1 -1
  648. data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +5 -1
  649. data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +18 -4
  650. data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +20 -11
  651. data/lib/datadog/tracing/contrib/sidekiq/distributed/propagation.rb +38 -0
  652. data/lib/datadog/tracing/contrib/sidekiq/ext.rb +32 -31
  653. data/lib/datadog/tracing/contrib/sidekiq/integration.rb +8 -2
  654. data/lib/datadog/tracing/contrib/sidekiq/patcher.rb +15 -3
  655. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/heartbeat.rb +14 -5
  656. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/job_fetch.rb +3 -1
  657. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/redis_info.rb +3 -1
  658. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/scheduled_poller.rb +5 -1
  659. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/stop.rb +34 -0
  660. data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +24 -3
  661. data/lib/datadog/tracing/contrib/sidekiq/{tracing.rb → utils.rb} +2 -2
  662. data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +12 -11
  663. data/lib/datadog/tracing/contrib/sinatra/env.rb +11 -41
  664. data/lib/datadog/tracing/contrib/sinatra/ext.rb +24 -19
  665. data/lib/datadog/tracing/contrib/sinatra/framework.rb +0 -2
  666. data/lib/datadog/tracing/contrib/sinatra/integration.rb +0 -2
  667. data/lib/datadog/tracing/contrib/sinatra/patcher.rb +2 -3
  668. data/lib/datadog/tracing/contrib/sinatra/tracer.rb +8 -82
  669. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +14 -20
  670. data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +15 -10
  671. data/lib/datadog/tracing/contrib/sneakers/ext.rb +3 -2
  672. data/lib/datadog/tracing/contrib/sneakers/integration.rb +0 -2
  673. data/lib/datadog/tracing/contrib/sneakers/patcher.rb +0 -2
  674. data/lib/datadog/tracing/contrib/sneakers/tracer.rb +5 -2
  675. data/lib/datadog/tracing/contrib/span_attribute_schema.rb +92 -0
  676. data/lib/datadog/tracing/contrib/status_code_matcher.rb +0 -3
  677. data/lib/datadog/tracing/contrib/stripe/configuration/settings.rb +37 -0
  678. data/lib/datadog/tracing/contrib/stripe/ext.rb +27 -0
  679. data/lib/datadog/tracing/contrib/stripe/integration.rb +43 -0
  680. data/lib/datadog/tracing/contrib/stripe/patcher.rb +28 -0
  681. data/lib/datadog/tracing/contrib/stripe/request.rb +67 -0
  682. data/lib/datadog/tracing/contrib/sucker_punch/configuration/settings.rb +11 -7
  683. data/lib/datadog/tracing/contrib/sucker_punch/exception_handler.rb +1 -1
  684. data/lib/datadog/tracing/contrib/sucker_punch/ext.rb +15 -14
  685. data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +0 -2
  686. data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +0 -2
  687. data/lib/datadog/tracing/contrib/sucker_punch/patcher.rb +1 -2
  688. data/lib/datadog/tracing/contrib/trilogy/configuration/settings.rb +58 -0
  689. data/lib/datadog/tracing/contrib/trilogy/ext.rb +27 -0
  690. data/lib/datadog/tracing/contrib/trilogy/instrumentation.rb +94 -0
  691. data/lib/datadog/tracing/contrib/trilogy/integration.rb +43 -0
  692. data/lib/datadog/tracing/contrib/trilogy/patcher.rb +31 -0
  693. data/lib/datadog/tracing/contrib/utils/database.rb +4 -4
  694. data/lib/datadog/tracing/contrib/utils/quantization/hash.rb +0 -2
  695. data/lib/datadog/tracing/contrib/utils/quantization/http.rb +92 -14
  696. data/lib/datadog/tracing/contrib.rb +6 -1
  697. data/lib/datadog/tracing/correlation.rb +42 -14
  698. data/lib/datadog/tracing/diagnostics/environment_logger.rb +165 -0
  699. data/lib/datadog/{core → tracing}/diagnostics/ext.rb +21 -26
  700. data/lib/datadog/tracing/diagnostics/health.rb +40 -0
  701. data/lib/datadog/tracing/distributed/b3_multi.rb +72 -0
  702. data/lib/datadog/tracing/distributed/b3_single.rb +68 -0
  703. data/lib/datadog/tracing/distributed/datadog.rb +199 -0
  704. data/lib/datadog/tracing/distributed/datadog_tags_codec.rb +84 -0
  705. data/lib/datadog/tracing/distributed/fetcher.rb +21 -0
  706. data/lib/datadog/tracing/distributed/headers/ext.rb +19 -16
  707. data/lib/datadog/tracing/distributed/helpers.rb +26 -39
  708. data/lib/datadog/tracing/distributed/none.rb +18 -0
  709. data/lib/datadog/tracing/distributed/propagation.rb +127 -0
  710. data/lib/datadog/tracing/distributed/trace_context.rb +415 -0
  711. data/lib/datadog/tracing/event.rb +0 -4
  712. data/lib/datadog/tracing/flush.rb +58 -36
  713. data/lib/datadog/tracing/metadata/analytics.rb +1 -1
  714. data/lib/datadog/tracing/metadata/errors.rb +1 -1
  715. data/lib/datadog/tracing/metadata/ext.rb +29 -14
  716. data/lib/datadog/tracing/metadata/tagging.rb +17 -4
  717. data/lib/datadog/tracing/metadata.rb +1 -1
  718. data/lib/datadog/tracing/pipeline/span_filter.rb +1 -1
  719. data/lib/datadog/tracing/pipeline/span_processor.rb +1 -1
  720. data/lib/datadog/tracing/pipeline.rb +0 -4
  721. data/lib/datadog/tracing/propagation/http.rb +4 -99
  722. data/lib/datadog/tracing/remote.rb +78 -0
  723. data/lib/datadog/tracing/runtime/metrics.rb +1 -3
  724. data/lib/datadog/tracing/sampling/all_sampler.rb +1 -1
  725. data/lib/datadog/tracing/sampling/ext.rb +30 -1
  726. data/lib/datadog/tracing/sampling/matcher.rb +24 -4
  727. data/lib/datadog/tracing/sampling/priority_sampler.rb +58 -5
  728. data/lib/datadog/tracing/sampling/rate_by_key_sampler.rb +8 -11
  729. data/lib/datadog/tracing/sampling/rate_by_service_sampler.rb +29 -8
  730. data/lib/datadog/tracing/sampling/rate_limiter.rb +3 -2
  731. data/lib/datadog/tracing/sampling/rate_sampler.rb +23 -10
  732. data/lib/datadog/tracing/sampling/rule.rb +7 -6
  733. data/lib/datadog/tracing/sampling/rule_sampler.rb +35 -7
  734. data/lib/datadog/tracing/sampling/sampler.rb +0 -2
  735. data/lib/datadog/tracing/sampling/span/ext.rb +25 -0
  736. data/lib/datadog/tracing/sampling/span/matcher.rb +9 -0
  737. data/lib/datadog/tracing/sampling/span/rule.rb +82 -0
  738. data/lib/datadog/tracing/sampling/span/rule_parser.rb +104 -0
  739. data/lib/datadog/tracing/sampling/span/sampler.rb +77 -0
  740. data/lib/datadog/tracing/span.rb +3 -21
  741. data/lib/datadog/tracing/span_operation.rb +8 -24
  742. data/lib/datadog/tracing/sync_writer.rb +4 -6
  743. data/lib/datadog/tracing/trace_digest.rb +120 -3
  744. data/lib/datadog/tracing/trace_operation.rb +62 -15
  745. data/lib/datadog/tracing/trace_segment.rb +20 -7
  746. data/lib/datadog/tracing/tracer.rb +46 -10
  747. data/lib/datadog/tracing/transport/http/api/instance.rb +37 -0
  748. data/lib/datadog/tracing/transport/http/api/spec.rb +19 -0
  749. data/lib/datadog/tracing/transport/http/api.rb +43 -0
  750. data/lib/datadog/tracing/transport/http/builder.rb +162 -0
  751. data/lib/datadog/tracing/transport/http/client.rb +57 -0
  752. data/lib/datadog/tracing/transport/http/statistics.rb +47 -0
  753. data/lib/datadog/tracing/transport/http/traces.rb +152 -0
  754. data/lib/datadog/tracing/transport/http.rb +125 -0
  755. data/lib/datadog/tracing/transport/io/client.rb +89 -0
  756. data/lib/datadog/tracing/transport/io/response.rb +27 -0
  757. data/lib/datadog/tracing/transport/io/traces.rb +101 -0
  758. data/lib/datadog/tracing/transport/io.rb +30 -0
  759. data/lib/datadog/tracing/transport/serializable_trace.rb +126 -0
  760. data/lib/datadog/tracing/transport/statistics.rb +77 -0
  761. data/lib/datadog/tracing/transport/trace_formatter.rb +240 -0
  762. data/lib/datadog/tracing/transport/traces.rb +224 -0
  763. data/lib/datadog/tracing/utils.rb +83 -0
  764. data/lib/datadog/tracing/workers/trace_writer.rb +6 -7
  765. data/lib/datadog/tracing/workers.rb +4 -6
  766. data/lib/datadog/tracing/writer.rb +12 -6
  767. data/lib/datadog/tracing.rb +9 -3
  768. data/lib/ddtrace/auto_instrument.rb +1 -1
  769. data/lib/ddtrace/auto_instrument_base.rb +1 -1
  770. data/lib/ddtrace/profiling/preload.rb +0 -2
  771. data/lib/ddtrace/transport/ext.rb +21 -15
  772. data/lib/ddtrace/version.rb +14 -15
  773. data/lib/ddtrace.rb +3 -5
  774. metadata +278 -148
  775. data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time.c +0 -390
  776. data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time.h +0 -6
  777. data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +0 -391
  778. data/ext/ddtrace_profiling_native_extension/collectors_stack.c +0 -282
  779. data/ext/ddtrace_profiling_native_extension/collectors_stack.h +0 -9
  780. data/ext/ddtrace_profiling_native_extension/helpers.h +0 -12
  781. data/ext/ddtrace_profiling_native_extension/libdatadog_helpers.h +0 -14
  782. data/ext/ddtrace_profiling_native_extension/profiling.c +0 -36
  783. data/ext/ddtrace_profiling_native_extension/ruby_helpers.c +0 -25
  784. data/ext/ddtrace_profiling_native_extension/ruby_helpers.h +0 -65
  785. data/ext/ddtrace_profiling_native_extension/stack_recorder.c +0 -422
  786. data/ext/ddtrace_profiling_native_extension/stack_recorder.h +0 -38
  787. data/lib/datadog/appsec/assets/waf_rules/risky.json +0 -1499
  788. data/lib/datadog/appsec/contrib/configuration/settings.rb +0 -20
  789. data/lib/datadog/appsec/contrib/rack/configuration/settings.rb +0 -22
  790. data/lib/datadog/appsec/contrib/rack/request.rb +0 -58
  791. data/lib/datadog/appsec/contrib/rack/response.rb +0 -24
  792. data/lib/datadog/appsec/contrib/rails/configuration/settings.rb +0 -22
  793. data/lib/datadog/appsec/contrib/sinatra/configuration/settings.rb +0 -22
  794. data/lib/datadog/ci/configuration/components.rb +0 -32
  795. data/lib/datadog/ci/configuration/settings.rb +0 -53
  796. data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +0 -33
  797. data/lib/datadog/ci/contrib/cucumber/ext.rb +0 -22
  798. data/lib/datadog/ci/contrib/cucumber/formatter.rb +0 -94
  799. data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +0 -28
  800. data/lib/datadog/ci/contrib/cucumber/integration.rb +0 -49
  801. data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +0 -33
  802. data/lib/datadog/ci/contrib/rspec/example.rb +0 -70
  803. data/lib/datadog/ci/contrib/rspec/ext.rb +0 -21
  804. data/lib/datadog/ci/contrib/rspec/integration.rb +0 -50
  805. data/lib/datadog/ci/contrib/rspec/patcher.rb +0 -27
  806. data/lib/datadog/ci/ext/app_types.rb +0 -11
  807. data/lib/datadog/ci/ext/environment.rb +0 -505
  808. data/lib/datadog/ci/ext/settings.rb +0 -12
  809. data/lib/datadog/ci/ext/test.rb +0 -37
  810. data/lib/datadog/ci/extensions.rb +0 -19
  811. data/lib/datadog/ci/flush.rb +0 -38
  812. data/lib/datadog/ci/test.rb +0 -83
  813. data/lib/datadog/ci.rb +0 -20
  814. data/lib/datadog/core/configuration/dependency_resolver.rb +0 -28
  815. data/lib/datadog/core/configuration/option_definition_set.rb +0 -22
  816. data/lib/datadog/core/configuration/option_set.rb +0 -10
  817. data/lib/datadog/core/telemetry/client.rb +0 -79
  818. data/lib/datadog/core/telemetry/collector.rb +0 -234
  819. data/lib/datadog/core/telemetry/heartbeat.rb +0 -37
  820. data/lib/datadog/core/telemetry/v1/app_event.rb +0 -52
  821. data/lib/datadog/core/telemetry/v1/application.rb +0 -86
  822. data/lib/datadog/core/telemetry/v1/configuration.rb +0 -25
  823. data/lib/datadog/core/telemetry/v1/dependency.rb +0 -36
  824. data/lib/datadog/core/telemetry/v1/host.rb +0 -51
  825. data/lib/datadog/core/telemetry/v1/integration.rb +0 -58
  826. data/lib/datadog/core/telemetry/v1/product.rb +0 -28
  827. data/lib/datadog/core/telemetry/v1/telemetry_request.rb +0 -100
  828. data/lib/datadog/core/utils/object_set.rb +0 -43
  829. data/lib/datadog/core/utils/string_table.rb +0 -49
  830. data/lib/datadog/profiling/backtrace_location.rb +0 -34
  831. data/lib/datadog/profiling/buffer.rb +0 -43
  832. data/lib/datadog/profiling/collectors/cpu_and_wall_time.rb +0 -27
  833. data/lib/datadog/profiling/collectors/old_stack.rb +0 -298
  834. data/lib/datadog/profiling/encoding/profile.rb +0 -43
  835. data/lib/datadog/profiling/event.rb +0 -15
  836. data/lib/datadog/profiling/events/stack.rb +0 -82
  837. data/lib/datadog/profiling/old_ext.rb +0 -42
  838. data/lib/datadog/profiling/old_recorder.rb +0 -101
  839. data/lib/datadog/profiling/pprof/builder.rb +0 -127
  840. data/lib/datadog/profiling/pprof/converter.rb +0 -104
  841. data/lib/datadog/profiling/pprof/message_set.rb +0 -16
  842. data/lib/datadog/profiling/pprof/payload.rb +0 -20
  843. data/lib/datadog/profiling/pprof/pprof.proto +0 -212
  844. data/lib/datadog/profiling/pprof/pprof_pb.rb +0 -83
  845. data/lib/datadog/profiling/pprof/stack_sample.rb +0 -141
  846. data/lib/datadog/profiling/pprof/string_table.rb +0 -12
  847. data/lib/datadog/profiling/pprof/template.rb +0 -120
  848. data/lib/datadog/profiling/trace_identifiers/ddtrace.rb +0 -45
  849. data/lib/datadog/profiling/trace_identifiers/helper.rb +0 -47
  850. data/lib/datadog/profiling/transport/http/api/endpoint.rb +0 -85
  851. data/lib/datadog/profiling/transport/http/api/instance.rb +0 -38
  852. data/lib/datadog/profiling/transport/http/api/spec.rb +0 -42
  853. data/lib/datadog/profiling/transport/http/api.rb +0 -45
  854. data/lib/datadog/profiling/transport/http/builder.rb +0 -30
  855. data/lib/datadog/profiling/transport/http/client.rb +0 -37
  856. data/lib/datadog/profiling/transport/http/response.rb +0 -21
  857. data/lib/datadog/profiling/transport/http.rb +0 -118
  858. data/lib/datadog/tracing/contrib/sinatra/headers.rb +0 -35
  859. data/lib/datadog/tracing/distributed/headers/b3.rb +0 -55
  860. data/lib/datadog/tracing/distributed/headers/b3_single.rb +0 -67
  861. data/lib/datadog/tracing/distributed/headers/datadog.rb +0 -52
  862. data/lib/datadog/tracing/distributed/headers/parser.rb +0 -37
  863. data/lib/datadog/tracing/distributed/metadata/b3.rb +0 -55
  864. data/lib/datadog/tracing/distributed/metadata/b3_single.rb +0 -66
  865. data/lib/datadog/tracing/distributed/metadata/datadog.rb +0 -73
  866. data/lib/datadog/tracing/distributed/metadata/parser.rb +0 -34
  867. data/lib/datadog/tracing/propagation/grpc.rb +0 -98
  868. data/lib/ddtrace/transport/http/adapters/net.rb +0 -158
  869. data/lib/ddtrace/transport/http/adapters/registry.rb +0 -27
  870. data/lib/ddtrace/transport/http/adapters/test.rb +0 -87
  871. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +0 -79
  872. data/lib/ddtrace/transport/http/api/endpoint.rb +0 -29
  873. data/lib/ddtrace/transport/http/api/fallbacks.rb +0 -24
  874. data/lib/ddtrace/transport/http/api/instance.rb +0 -35
  875. data/lib/ddtrace/transport/http/api/map.rb +0 -16
  876. data/lib/ddtrace/transport/http/api/spec.rb +0 -17
  877. data/lib/ddtrace/transport/http/api.rb +0 -41
  878. data/lib/ddtrace/transport/http/builder.rb +0 -178
  879. data/lib/ddtrace/transport/http/client.rb +0 -54
  880. data/lib/ddtrace/transport/http/env.rb +0 -58
  881. data/lib/ddtrace/transport/http/response.rb +0 -58
  882. data/lib/ddtrace/transport/http/statistics.rb +0 -45
  883. data/lib/ddtrace/transport/http/traces.rb +0 -146
  884. data/lib/ddtrace/transport/http.rb +0 -121
  885. data/lib/ddtrace/transport/io/client.rb +0 -87
  886. data/lib/ddtrace/transport/io/response.rb +0 -25
  887. data/lib/ddtrace/transport/io/traces.rb +0 -101
  888. data/lib/ddtrace/transport/io.rb +0 -28
  889. data/lib/ddtrace/transport/parcel.rb +0 -22
  890. data/lib/ddtrace/transport/request.rb +0 -15
  891. data/lib/ddtrace/transport/response.rb +0 -62
  892. data/lib/ddtrace/transport/serializable_trace.rb +0 -118
  893. data/lib/ddtrace/transport/statistics.rb +0 -75
  894. data/lib/ddtrace/transport/trace_formatter.rb +0 -187
  895. data/lib/ddtrace/transport/traces.rb +0 -216
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Datadog
4
+ module Core
5
+ module Transport
6
+ # Defines abstract response for transport operations
7
+ module Response
8
+ def payload
9
+ nil
10
+ end
11
+
12
+ def ok?
13
+ nil
14
+ end
15
+
16
+ def unsupported?
17
+ nil
18
+ end
19
+
20
+ def not_found?
21
+ nil
22
+ end
23
+
24
+ def client_error?
25
+ nil
26
+ end
27
+
28
+ def server_error?
29
+ nil
30
+ end
31
+
32
+ def internal_error?
33
+ nil
34
+ end
35
+
36
+ def inspect
37
+ "#{self.class} ok?:#{ok?} unsupported?:#{unsupported?}, " \
38
+ "not_found?:#{not_found?}, client_error?:#{client_error?}, " \
39
+ "server_error?:#{server_error?}, internal_error?:#{internal_error?}, " \
40
+ "payload:#{payload}"
41
+ end
42
+ end
43
+
44
+ # A generic error response for internal errors
45
+ class InternalErrorResponse
46
+ include Response
47
+
48
+ attr_reader :error
49
+
50
+ def initialize(error)
51
+ @error = error
52
+ end
53
+
54
+ def internal_error?
55
+ true
56
+ end
57
+
58
+ def inspect
59
+ "#{super}, error_type:#{error.class} error:#{error}"
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -1,4 +1,4 @@
1
- # typed: true
1
+ # frozen_string_literal: true
2
2
 
3
3
  require 'stringio'
4
4
  require 'zlib'
@@ -6,10 +6,13 @@ require 'zlib'
6
6
  module Datadog
7
7
  module Core
8
8
  module Utils
9
- # Common database-related utility functions.
9
+ # Compression/decompression utility functions.
10
+ #
11
+ # @deprecated This is no longer used by ddtrace and will be removed in 2.0.
10
12
  module Compression
11
13
  module_function
12
14
 
15
+ # @deprecated This is no longer used by ddtrace and will be removed in 2.0.
13
16
  def gzip(string, level: nil, strategy: nil)
14
17
  sio = StringIO.new
15
18
  sio.binmode
@@ -19,6 +22,7 @@ module Datadog
19
22
  sio.string
20
23
  end
21
24
 
25
+ # @deprecated This is no longer used by ddtrace and will be removed in 2.0.
22
26
  def gunzip(string, encoding = ::Encoding::ASCII_8BIT)
23
27
  sio = StringIO.new(string)
24
28
  gz = Zlib::GzipReader.new(sio, encoding: encoding)
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Datadog
4
+ module Core
5
+ module Utils
6
+ # Helper methods for parsing string values into Numeric
7
+ module Duration
8
+ def self.call(value, base: :s)
9
+ cast = if value.include?('.')
10
+ method(:Float)
11
+ else
12
+ method(:Integer)
13
+ end
14
+
15
+ scale = case base
16
+ when :s
17
+ 1_000_000_000
18
+ when :ms
19
+ 1_000_000
20
+ when :us
21
+ 1000
22
+ when :ns
23
+ 1
24
+ else
25
+ raise ArgumentError, "invalid base: #{base.inspect}"
26
+ end
27
+
28
+ result = case value
29
+ when /^(\d+(?:\.\d+)?)h$/
30
+ cast.call(Regexp.last_match(1)) * 1_000_000_000 * 60 * 60 / scale
31
+ when /^(\d+(?:\.\d+)?)m$/
32
+ cast.call(Regexp.last_match(1)) * 1_000_000_000 * 60 / scale
33
+ when /^(\d+(?:\.\d+)?)s$/
34
+ cast.call(Regexp.last_match(1)) * 1_000_000_000 / scale
35
+ when /^(\d+(?:\.\d+)?)ms$/
36
+ cast.call(Regexp.last_match(1)) * 1_000_000 / scale
37
+ when /^(\d+(?:\.\d+)?)us$/
38
+ cast.call(Regexp.last_match(1)) * 1_000 / scale
39
+ when /^(\d+(?:\.\d+)?)ns$/
40
+ cast.call(Regexp.last_match(1)) / scale
41
+ when /^(\d+(?:\.\d+)?)$/
42
+ cast.call(Regexp.last_match(1))
43
+ else
44
+ raise ArgumentError, "invalid duration: #{value.inspect}"
45
+ end
46
+ # @type var result: Numeric
47
+ result.round
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -1,5 +1,3 @@
1
- # typed: false
2
-
3
1
  module Datadog
4
2
  module Core
5
3
  module Utils
@@ -0,0 +1,79 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Datadog
4
+ module Core
5
+ module Utils
6
+ # Refinements for {Hash}.
7
+ module Hash
8
+ # This refinement ensures modern rubies are allowed to use newer,
9
+ # simpler, and more performant APIs.
10
+ module Refinement
11
+ # Introduced in Ruby 2.4
12
+ unless ::Hash.method_defined?(:compact)
13
+ refine ::Hash do
14
+ def compact
15
+ reject { |_k, v| v.nil? }
16
+ end
17
+ end
18
+ end
19
+
20
+ # Introduced in Ruby 2.4
21
+ unless ::Hash.method_defined?(:compact!)
22
+ refine ::Hash do
23
+ def compact!
24
+ reject! { |_k, v| v.nil? }
25
+ end
26
+ end
27
+ end
28
+ end
29
+
30
+ # A minimal {Hash} wrapper that provides case-insensitive access
31
+ # to hash keys, without the overhead of copying the original hash.
32
+ #
33
+ # This class should be used when the original hash is short lived *and*
34
+ # each hash key is only accesses a few times.
35
+ # For other cases, create a copy of the original hash with the keys
36
+ # normalized adequate to your use case.
37
+ class CaseInsensitiveWrapper
38
+ def initialize(hash)
39
+ raise ArgumentError, "must be a hash, but was #{hash.class}: #{hash.inspect}" unless hash.is_a?(::Hash)
40
+
41
+ @hash = hash
42
+ end
43
+
44
+ def [](key)
45
+ return nil unless key.is_a?(::String)
46
+
47
+ @hash.each do |k, value|
48
+ return value if key.casecmp(k) == 0
49
+ end
50
+
51
+ nil
52
+ end
53
+
54
+ def key?(key)
55
+ return false unless key.is_a?(::String)
56
+
57
+ @hash.each_key do |k|
58
+ return true if key.casecmp(k) == 0
59
+ end
60
+
61
+ false
62
+ end
63
+
64
+ def empty?
65
+ @hash.empty?
66
+ end
67
+
68
+ def length
69
+ @hash.length
70
+ end
71
+
72
+ def original_hash
73
+ @hash
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,140 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ipaddr'
4
+ require_relative '../vendor/ipaddr'
5
+
6
+ module Datadog
7
+ module Core
8
+ module Utils
9
+ # Common Network utility functions.
10
+ module Network
11
+ DEFAULT_IP_HEADERS_NAMES = %w[
12
+ x-forwarded-for
13
+ x-real-ip
14
+ true-client-ip
15
+ x-client-ip
16
+ x-forwarded
17
+ forwarded-for
18
+ x-cluster-client-ip
19
+ fastly-client-ip
20
+ cf-connecting-ip
21
+ cf-connecting-ipv6
22
+ ].freeze
23
+
24
+ class << self
25
+ # Returns a client IP associated with the request if it was
26
+ # retrieved successfully.
27
+ #
28
+ #
29
+ # @param [Datadog::Core::HeaderCollection, #get, nil] headers The request headers
30
+ # @param [Array<String>] list of headers to check.
31
+ # @return [String] IP value without the port and the zone indentifier.
32
+ # @return [nil] when no valid IP value found.
33
+ def stripped_ip_from_request_headers(headers, ip_headers_to_check: DEFAULT_IP_HEADERS_NAMES)
34
+ ip = ip_header(headers, ip_headers_to_check)
35
+
36
+ ip ? ip.to_s : nil
37
+ end
38
+
39
+ # @param [String] IP value.
40
+ # @return [String] IP value without the port and the zone indentifier.
41
+ # @return [nil] when no valid IP value found.
42
+ def stripped_ip(ip)
43
+ ip = ip_to_ipaddr(ip)
44
+ ip ? ip.to_s : nil
45
+ end
46
+
47
+ private
48
+
49
+ # @param [String] IP value.
50
+ # @return [IPaddr]
51
+ # @return [nil] when no valid IP value found.
52
+ def ip_to_ipaddr(ip)
53
+ return unless ip
54
+
55
+ clean_ip = if likely_ipv4?(ip)
56
+ strip_ipv4_port(ip)
57
+ else
58
+ strip_zone_specifier(strip_ipv6_port(ip))
59
+ end
60
+
61
+ begin
62
+ IPAddr.new(clean_ip)
63
+ rescue IPAddr::Error
64
+ nil
65
+ end
66
+ end
67
+
68
+ def ip_header(headers, ip_headers_to_check)
69
+ return unless headers
70
+
71
+ ip_headers_to_check.each do |name|
72
+ value = headers.get(name)
73
+
74
+ next unless value
75
+
76
+ ips = value.split(',')
77
+ ips.each do |ip|
78
+ parsed_ip = ip_to_ipaddr(ip.strip)
79
+
80
+ return parsed_ip if global_ip?(parsed_ip)
81
+ end
82
+ end
83
+
84
+ nil
85
+ end
86
+
87
+ # Returns whether the given value is more likely to be an IPv4 than an IPv6 address.
88
+ #
89
+ # This is done by checking if a dot (`'.'`) character appears before a colon (`':'`) in the value.
90
+ # The rationale is that in valid IPv6 addresses, colons will always preced dots,
91
+ # and in valid IPv4 addresses dots will always preced colons.
92
+ def likely_ipv4?(value)
93
+ dot_index = value.index('.') || value.size
94
+ colon_index = value.index(':') || value.size
95
+
96
+ dot_index < colon_index
97
+ end
98
+
99
+ def strip_zone_specifier(ipv6)
100
+ ipv6.gsub(/%.*/, '')
101
+ end
102
+
103
+ def strip_ipv6_port(ip)
104
+ if /\[([^\]]*+)\](?::\d+)?/ =~ ip
105
+ Regexp.last_match(1)
106
+ else
107
+ ip
108
+ end
109
+ end
110
+
111
+ def strip_ipv4_port(ip)
112
+ ip.gsub(/:\d+\z/, '')
113
+ end
114
+
115
+ def global_ip?(parsed_ip)
116
+ parsed_ip && !private?(parsed_ip) && !loopback?(parsed_ip) && !link_local?(parsed_ip)
117
+ end
118
+
119
+ # TODO: remove once we drop support for ruby 2.1, 2.2, 2.3, 2.4
120
+ # replace with ip.private?
121
+ def private?(ip)
122
+ Datadog::Core::Vendor::IPAddr.private?(ip)
123
+ end
124
+
125
+ # TODO: remove once we drop support for ruby 2.1, 2.2, 2.3, 2.4
126
+ # replace with ip.link_local?
127
+ def link_local?(ip)
128
+ Datadog::Core::Vendor::IPAddr.link_local?(ip)
129
+ end
130
+
131
+ # TODO: remove once we drop support for ruby 2.1, 2.2, 2.3, 2.4
132
+ # replace with ip.loopback
133
+ def loopback?(ip)
134
+ Datadog::Core::Vendor::IPAddr.loopback?(ip)
135
+ end
136
+ end
137
+ end
138
+ end
139
+ end
140
+ end
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # typed: true
4
-
5
3
  module Datadog
6
4
  module Core
7
5
  module Utils
@@ -0,0 +1,76 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'only_once'
4
+
5
+ module Datadog
6
+ module Core
7
+ module Utils
8
+ # Helper class to execute something with only one success.
9
+ #
10
+ # This is useful for cases where we want to ensure that a block of code is only executed once, and only if it
11
+ # succeeds. One such example is sending app-started telemetry event.
12
+ #
13
+ # Successful execution is determined by the return value of the block: any truthy value is considered success.
14
+ #
15
+ # Thread-safe when used correctly (e.g. be careful of races when lazily initializing instances of this class).
16
+ #
17
+ # Note: In its current state, this class is not Ractor-safe.
18
+ # In https://github.com/DataDog/dd-trace-rb/pull/1398#issuecomment-797378810 we have a discussion of alternatives,
19
+ # including an alternative implementation that is Ractor-safe once spent.
20
+ class OnlyOnceSuccessful < OnlyOnce
21
+ def initialize(limit = 0)
22
+ super()
23
+
24
+ @limit = limit
25
+ @failed = false
26
+ @retries = 0
27
+ end
28
+
29
+ def run
30
+ @mutex.synchronize do
31
+ return if @ran_once
32
+
33
+ result = yield
34
+ @ran_once = !!result
35
+
36
+ if !@ran_once && limited?
37
+ @retries += 1
38
+ check_limit!
39
+ end
40
+
41
+ result
42
+ end
43
+ end
44
+
45
+ def success?
46
+ @mutex.synchronize { @ran_once && !@failed }
47
+ end
48
+
49
+ def failed?
50
+ @mutex.synchronize { @ran_once && @failed }
51
+ end
52
+
53
+ private
54
+
55
+ def check_limit!
56
+ if @retries >= @limit
57
+ @failed = true
58
+ @ran_once = true
59
+ end
60
+ end
61
+
62
+ def limited?
63
+ !@limit.nil? && @limit > 0
64
+ end
65
+
66
+ def reset_ran_once_state_for_tests
67
+ @mutex.synchronize do
68
+ @ran_once = false
69
+ @failed = false
70
+ @retries = 0
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
@@ -1,25 +1,48 @@
1
- # typed: false
1
+ require_relative '../backport'
2
2
 
3
3
  module Datadog
4
4
  module Core
5
5
  module Utils
6
6
  # Helper methods for safer dup
7
7
  module SafeDup
8
- if RUBY_VERSION < '2.2' # nil.dup only fails in Ruby 2.1
9
- # Ensures #initialize can call nil.dup safely
10
- module RefineNil
11
- refine NilClass do
12
- def dup
13
- self
14
- end
8
+ # String#+@ was introduced in Ruby 2.3
9
+ if String.method_defined?(:+@) && String.method_defined?(:-@)
10
+ def self.frozen_or_dup(v)
11
+ # For the case of a String we use the methods +@ and -@.
12
+ # Those methods are only for String objects
13
+ # they are faster and chepaer on the memory side.
14
+ # Check the benchmark on
15
+ # https://github.com/DataDog/dd-trace-rb/pull/2704
16
+ if v.is_a?(String)
17
+ # If the string is not frozen, the +(-v) will:
18
+ # - first create a frozen deduplicated copy with -v
19
+ # - then it will dup it more efficiently with +v
20
+ v.frozen? ? v : +(-v)
21
+ else
22
+ v.frozen? ? v : Core::BackportFrom24.dup(v)
15
23
  end
16
24
  end
17
25
 
18
- using RefineNil
19
- end
26
+ def self.frozen_dup(v)
27
+ # For the case of a String we use the methods -@
28
+ # That method are only for String objects
29
+ # they are faster and chepaer on the memory side.
30
+ # Check the benchmark on
31
+ # https://github.com/DataDog/dd-trace-rb/pull/2704
32
+ if v.is_a?(String)
33
+ -v if v
34
+ else
35
+ v.frozen? ? v : Core::BackportFrom24.dup(v).freeze
36
+ end
37
+ end
38
+ else
39
+ def self.frozen_or_dup(v)
40
+ v.frozen? ? v : Core::BackportFrom24.dup(v)
41
+ end
20
42
 
21
- def self.frozen_or_dup(v)
22
- v.frozen? ? v : v.dup
43
+ def self.frozen_dup(v)
44
+ v.frozen? ? v : Core::BackportFrom24.dup(v).freeze
45
+ end
23
46
  end
24
47
  end
25
48
  end
@@ -1,4 +1,4 @@
1
- # typed: true
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Datadog
4
4
  module Core
@@ -1,12 +1,10 @@
1
- # typed: true
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Datadog
4
4
  module Core
5
5
  module Utils
6
6
  # Common database-related utility functions.
7
7
  module Time
8
- include Kernel # Ensure that kernel methods are always available (https://sorbet.org/docs/error-reference#7003)
9
-
10
8
  module_function
11
9
 
12
10
  # Current monotonic time
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'uri'
4
+
5
+ module Datadog
6
+ module Core
7
+ module Utils
8
+ # Helpers class that provides methods to process URLs
9
+ # such as filtering sensitive information.
10
+ module Url
11
+ def self.filter_basic_auth(url)
12
+ return nil if url.nil?
13
+
14
+ URI(url).tap do |u|
15
+ u.user = nil
16
+ u.password = nil
17
+ end.to_s
18
+ # Git scheme: git@github.com:DataDog/dd-trace-rb.git
19
+ rescue URI::InvalidURIError
20
+ url
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -1,7 +1,4 @@
1
- # typed: true
2
-
3
1
  require_relative 'utils/forking'
4
- require_relative '../tracing/span'
5
2
 
6
3
  module Datadog
7
4
  module Core
@@ -11,26 +8,6 @@ module Datadog
11
8
  extend Forking
12
9
 
13
10
  EMPTY_STRING = ''.encode(::Encoding::UTF_8).freeze
14
- # We use a custom random number generator because we want no interference
15
- # with the default one. Using the default prng, we could break code that
16
- # would rely on srand/rand sequences.
17
-
18
- # Return a randomly generated integer, valid as a Span ID or Trace ID.
19
- # This method is thread-safe and fork-safe.
20
- def self.next_id
21
- after_fork! { reset! }
22
- id_rng.rand(Tracing::Span::RUBY_ID_RANGE)
23
- end
24
-
25
- def self.id_rng
26
- @id_rng ||= Random.new
27
- end
28
-
29
- def self.reset!
30
- @id_rng = Random.new
31
- end
32
-
33
- private_class_method :id_rng, :reset!
34
11
 
35
12
  # Stringifies `value` and ensures the outcome is
36
13
  # string is no longer than `size`.
@@ -90,7 +67,7 @@ module Datadog
90
67
  # @!visibility private
91
68
  def self.without_warnings
92
69
  # This is typically used when monkey patching functions such as
93
- # intialize, which Ruby advices you not to. Use cautiously.
70
+ # initialize, which Ruby advices you not to. Use cautiously.
94
71
  v = $VERBOSE
95
72
  $VERBOSE = nil
96
73
  begin
@@ -0,0 +1,78 @@
1
+ # Copyright (c) 2002 Hajimu UMEMOTO <ume@mahoroba.org>
2
+ # Copyright (c) 2007-2017 Akinori MUSHA <knu@iDaemons.org>
3
+
4
+ # Redistribution and use in source and binary forms, with or without
5
+ # modification, are permitted provided that the following conditions
6
+ # are met:
7
+ # 1. Redistributions of source code must retain the above copyright
8
+ # notice, this list of conditions and the following disclaimer.
9
+ # 2. Redistributions in binary form must reproduce the above copyright
10
+ # notice, this list of conditions and the following disclaimer in the
11
+ # documentation and/or other materials provided with the distribution.
12
+
13
+ # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14
+ # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15
+ # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16
+ # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17
+ # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18
+ # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19
+ # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20
+ # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21
+ # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22
+ # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23
+ # SUCH DAMAGE.
24
+
25
+ module Datadog
26
+ module Core
27
+ module Vendor
28
+ # vendor code from https://github.com/ruby/ipaddr/blob/master/lib/ipaddr.rb
29
+ # Ruby version below 2.5 does not have the IpAddr#private? method
30
+ # We have to vendor the code because ruby versions below 2.5 did not extract ipaddr as a gem
31
+ # So we can not specify a specific version for ipaddr for ruby versions: 2.1, 2.2, 2.3, 2.4
32
+ module IPAddr
33
+ class << self
34
+ def private?(ip)
35
+ addr = ip.instance_variable_get(:@addr)
36
+
37
+ case ip.family
38
+ when Socket::AF_INET
39
+ addr & 0xff000000 == 0x0a000000 || # 10.0.0.0/8
40
+ addr & 0xfff00000 == 0xac100000 || # 172.16.0.0/12
41
+ addr & 0xffff0000 == 0xc0a80000 # 192.168.0.0/16
42
+ when Socket::AF_INET6
43
+ addr & 0xfe00_0000_0000_0000_0000_0000_0000_0000 == 0xfc00_0000_0000_0000_0000_0000_0000_0000
44
+ else
45
+ raise ::IPAddr::AddressFamilyError, 'unsupported address family'
46
+ end
47
+ end
48
+
49
+ def link_local?(ip)
50
+ addr = ip.instance_variable_get(:@addr)
51
+
52
+ case ip.family
53
+ when Socket::AF_INET
54
+ addr & 0xffff0000 == 0xa9fe0000 # 169.254.0.0/16
55
+ when Socket::AF_INET6
56
+ addr & 0xffc0_0000_0000_0000_0000_0000_0000_0000 == 0xfe80_0000_0000_0000_0000_0000_0000_0000
57
+ else
58
+ raise ::IPAddr::AddressFamilyError, 'unsupported address family'
59
+ end
60
+ end
61
+
62
+ def loopback?(ip)
63
+ addr = ip.instance_variable_get(:@addr)
64
+
65
+ case ip.family
66
+ when Socket::AF_INET
67
+ addr & 0xff000000 == 0x7f000000
68
+ when Socket::AF_INET6
69
+ addr == 1
70
+ else
71
+ raise ::IPAddr::AddressFamilyError, 'unsupported address family'
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
@@ -1,5 +1,3 @@
1
- # typed: false
2
-
3
1
  #--
4
2
  # Copyright (c) 2007-2012 Nick Sieger.
5
3
  # See the file README.txt included with the distribution for