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
@@ -1,22 +1,22 @@
1
- # typed: false
2
-
3
1
  require 'logger'
4
2
 
5
3
  require_relative 'base'
4
+ require_relative 'ext'
5
+ require_relative '../environment/execution'
6
6
  require_relative '../environment/ext'
7
7
  require_relative '../runtime/ext'
8
8
  require_relative '../telemetry/ext'
9
+ require_relative '../remote/ext'
9
10
  require_relative '../../profiling/ext'
10
- require_relative '../../tracing/configuration/ext'
11
+
12
+ require_relative '../../tracing/configuration/settings'
11
13
 
12
14
  module Datadog
13
15
  module Core
14
16
  module Configuration
15
- # Global configuration settings for the trace library.
17
+ # Global configuration settings for the Datadog library.
16
18
  # @public_api
17
19
  # rubocop:disable Metrics/BlockLength
18
- # rubocop:disable Metrics/ClassLength
19
- # rubocop:disable Layout/LineLength
20
20
  class Settings
21
21
  include Base
22
22
 
@@ -80,8 +80,8 @@ module Datadog
80
80
  # @default `DD_API_KEY` environment variable, otherwise `nil`
81
81
  # @return [String,nil]
82
82
  option :api_key do |o|
83
- o.default { ENV.fetch(Core::Environment::Ext::ENV_API_KEY, nil) }
84
- o.lazy
83
+ o.type :string, nilable: true
84
+ o.env Core::Environment::Ext::ENV_API_KEY
85
85
  end
86
86
 
87
87
  # Datadog diagnostic settings.
@@ -100,18 +100,17 @@ module Datadog
100
100
  # @default `DD_TRACE_DEBUG` environment variable, otherwise `false`
101
101
  # @return [Boolean]
102
102
  option :debug do |o|
103
- o.default { env_to_bool(Datadog::Core::Diagnostics::Ext::DD_TRACE_DEBUG, false) }
104
- o.lazy
105
- o.on_set do |enabled|
103
+ o.env Datadog::Core::Configuration::Ext::Diagnostics::ENV_DEBUG_ENABLED
104
+ o.default false
105
+ o.type :bool
106
+ o.after_set do |enabled|
106
107
  # Enable rich debug print statements.
107
108
  # We do not need to unnecessarily load 'pp' unless in debugging mode.
108
109
  require 'pp' if enabled
109
110
  end
110
111
  end
111
-
112
112
  # Internal {Datadog::Statsd} metrics collection.
113
113
  #
114
- # The list of metrics collected can be found in {Datadog::Core::Diagnostics::Ext::Health::Metrics}.
115
114
  # @public_api
116
115
  settings :health_metrics do
117
116
  # Enable health metrics collection.
@@ -119,8 +118,9 @@ module Datadog
119
118
  # @default `DD_HEALTH_METRICS_ENABLED` environment variable, otherwise `false`
120
119
  # @return [Boolean]
121
120
  option :enabled do |o|
122
- o.default { env_to_bool(Datadog::Core::Diagnostics::Ext::Health::Metrics::ENV_ENABLED, false) }
123
- o.lazy
121
+ o.env Datadog::Core::Configuration::Ext::Diagnostics::ENV_HEALTH_METRICS_ENABLED
122
+ o.default false
123
+ o.type :bool
124
124
  end
125
125
 
126
126
  # {Datadog::Statsd} instance to collect health metrics.
@@ -142,11 +142,11 @@ module Datadog
142
142
  # is *not* running in a development environment.
143
143
  #
144
144
  # @default `DD_TRACE_STARTUP_LOGS` environment variable, otherwise `nil`
145
- # @return [Boolean,nil]
145
+ # @return [Boolean, nil]
146
146
  option :enabled do |o|
147
+ o.env Datadog::Core::Configuration::Ext::Diagnostics::ENV_STARTUP_LOGS_ENABLED
147
148
  # Defaults to nil as we want to know when the default value is being used
148
- o.default { env_to_bool(Datadog::Core::Diagnostics::Ext::DD_TRACE_STARTUP_LOGS, nil) }
149
- o.lazy
149
+ o.type :bool, nilable: true
150
150
  end
151
151
  end
152
152
  end
@@ -156,9 +156,11 @@ module Datadog
156
156
  # @default `DD_ENV` environment variable, otherwise `nil`
157
157
  # @return [String,nil]
158
158
  option :env do |o|
159
+ # DEV-2.0: Remove this conversion for symbol.
160
+ o.setter { |v| v.to_s if v }
161
+
159
162
  # NOTE: env also gets set as a side effect of tags. See the WORKAROUND note in #initialize for details.
160
- o.default { ENV.fetch(Core::Environment::Ext::ENV_ENVIRONMENT, nil) }
161
- o.lazy
163
+ o.env Core::Environment::Ext::ENV_ENVIRONMENT
162
164
  end
163
165
 
164
166
  # Internal `Datadog.logger` configuration.
@@ -174,7 +176,7 @@ module Datadog
174
176
  #
175
177
  # @return Logger::Severity
176
178
  option :instance do |o|
177
- o.on_set { |value| set_option(:level, value.level) unless value.nil? }
179
+ o.after_set { |value| set_option(:level, value.level) unless value.nil? }
178
180
  end
179
181
 
180
182
  # Log level for `Datadog.logger`.
@@ -193,8 +195,9 @@ module Datadog
193
195
  # @default `DD_PROFILING_ENABLED` environment variable, otherwise `false`
194
196
  # @return [Boolean]
195
197
  option :enabled do |o|
196
- o.default { env_to_bool(Profiling::Ext::ENV_ENABLED, false) }
197
- o.lazy
198
+ o.env Profiling::Ext::ENV_ENABLED
199
+ o.default false
200
+ o.type :bool
198
201
  end
199
202
 
200
203
  # @public_api
@@ -202,18 +205,47 @@ module Datadog
202
205
  option :transport
203
206
  end
204
207
 
208
+ # Can be used to enable/disable collection of allocation profiles.
209
+ #
210
+ # This feature is disabled by default
211
+ #
212
+ # @warn Due to bugs in Ruby we only recommend enabling this feature in
213
+ # Ruby versions 2.x, 3.1.4+, 3.2.3+ and 3.3.0+
214
+ # (more details in {Datadog::Profiling::Component.enable_allocation_profiling?})
215
+ #
216
+ # @default `DD_PROFILING_ALLOCATION_ENABLED` environment variable as a boolean, otherwise `false`
217
+ option :allocation_enabled do |o|
218
+ o.type :bool
219
+ o.deprecated_env 'DD_PROFILING_EXPERIMENTAL_ALLOCATION_ENABLED' # TODO: Remove this for dd-trace-rb 2.0
220
+ o.env 'DD_PROFILING_ALLOCATION_ENABLED'
221
+ o.default false
222
+ end
223
+
205
224
  # @public_api
206
225
  settings :advanced do
207
- # This should never be reduced, as it can cause the resulting profiles to become biased.
208
- # The current default should be enough for most services, allowing 16 threads to be sampled around 30 times
209
- # per second for a 60 second period.
210
- option :max_events, default: 32768
226
+ # @deprecated No longer does anything, and will be removed on dd-trace-rb 2.0.
227
+ #
228
+ # This was used prior to the GA of the new CPU Profiling 2.0 profiler. The CPU Profiling 2.0 profiler does not
229
+ # use or need this setting and thus it doesn't do anything.
230
+ option :max_events do |o|
231
+ o.after_set do |_, _, precedence|
232
+ unless precedence == Datadog::Core::Configuration::Option::Precedence::DEFAULT
233
+ Datadog.logger.warn(
234
+ 'The profiling.advanced.max_events setting has been deprecated for removal and no ' \
235
+ 'longer does anything. Please remove it from your Datadog.configure block.'
236
+ )
237
+ end
238
+ end
239
+ end
211
240
 
212
241
  # Controls the maximum number of frames for each thread sampled. Can be tuned to avoid omitted frames in the
213
242
  # produced profiles. Increasing this may increase the overhead of profiling.
243
+ #
244
+ # @default `DD_PROFILING_MAX_FRAMES` environment variable, otherwise 400
214
245
  option :max_frames do |o|
215
- o.default { env_to_int(Profiling::Ext::ENV_MAX_FRAMES, 400) }
216
- o.lazy
246
+ o.type :int
247
+ o.env Profiling::Ext::ENV_MAX_FRAMES
248
+ o.default 400
217
249
  end
218
250
 
219
251
  # @public_api
@@ -225,40 +257,291 @@ module Datadog
225
257
  # @default `DD_PROFILING_ENDPOINT_COLLECTION_ENABLED` environment variable, otherwise `true`
226
258
  # @return [Boolean]
227
259
  option :enabled do |o|
228
- o.default { env_to_bool(Profiling::Ext::ENV_ENDPOINT_COLLECTION_ENABLED, true) }
229
- o.lazy
260
+ o.env Profiling::Ext::ENV_ENDPOINT_COLLECTION_ENABLED
261
+ o.default true
262
+ o.type :bool
230
263
  end
231
264
  end
232
265
  end
233
266
 
234
- # Disable gathering of names and versions of gems in use by the service, used to power grouping and
235
- # categorization of stack traces.
236
- option :code_provenance_enabled, default: true
267
+ # Can be used to disable the gathering of names and versions of gems in use by the service, used to power
268
+ # grouping and categorization of stack traces.
269
+ option :code_provenance_enabled do |o|
270
+ o.type :bool
271
+ o.default true
272
+ end
237
273
 
238
- # Use legacy transport code instead of HttpTransport. Temporarily added for migration to HttpTransport,
239
- # and will be removed soon. Do not use unless instructed to by support.
274
+ # @deprecated No longer does anything, and will be removed on dd-trace-rb 2.0.
275
+ #
276
+ # This was added as a temporary support option in case of issues with the new `Profiling::HttpTransport` class
277
+ # but we're now confident it's working nicely so we've removed the old code path.
240
278
  option :legacy_transport_enabled do |o|
241
- o.default { env_to_bool('DD_PROFILING_LEGACY_TRANSPORT_ENABLED', false) }
242
- o.lazy
279
+ o.after_set do |_, _, precedence|
280
+ unless precedence == Datadog::Core::Configuration::Option::Precedence::DEFAULT
281
+ Datadog.logger.warn(
282
+ 'The profiling.advanced.legacy_transport_enabled setting has been deprecated for removal and no ' \
283
+ 'longer does anything. Please remove it from your Datadog.configure block.'
284
+ )
285
+ end
286
+ end
243
287
  end
244
288
 
245
- # Forces enabling the new profiler. We do not yet recommend turning on this option.
289
+ # @deprecated No longer does anything, and will be removed on dd-trace-rb 2.0.
246
290
  #
247
- # Note that setting this to "false" (or not setting it) will not prevent the new profiler from
248
- # being automatically used in the future.
249
- # This option will be deprecated for removal once the new profiler gets enabled by default for all customers.
291
+ # This was used prior to the GA of the new CPU Profiling 2.0 profiler. Using CPU Profiling 2.0 is now the
292
+ # default and this doesn't do anything.
250
293
  option :force_enable_new_profiler do |o|
251
- o.default { env_to_bool('DD_PROFILING_FORCE_ENABLE_NEW', false) }
252
- o.lazy
294
+ o.after_set do |_, _, precedence|
295
+ unless precedence == Datadog::Core::Configuration::Option::Precedence::DEFAULT
296
+ Datadog.logger.warn(
297
+ 'The profiling.advanced.force_enable_new_profiler setting has been deprecated for removal and no ' \
298
+ 'longer does anything. Please remove it from your Datadog.configure block.'
299
+ )
300
+ end
301
+ end
302
+ end
303
+
304
+ # @deprecated No longer does anything, and will be removed on dd-trace-rb 2.0.
305
+ #
306
+ # This was used prior to the GA of the new CPU Profiling 2.0 profiler. Using CPU Profiling 2.0 is now the
307
+ # default and this doesn't do anything.
308
+ option :force_enable_legacy_profiler do |o|
309
+ o.after_set do |_, _, precedence|
310
+ unless precedence == Datadog::Core::Configuration::Option::Precedence::DEFAULT
311
+ Datadog.logger.warn(
312
+ 'The profiling.advanced.force_enable_legacy_profiler setting has been deprecated for removal and no ' \
313
+ 'longer does anything. Please remove it from your Datadog.configure block.'
314
+ )
315
+ end
316
+ end
317
+ end
318
+
319
+ # @deprecated No longer does anything, and will be removed on dd-trace-rb 2.0.
320
+ #
321
+ # GC profiling is now on by default and controlled by {:gc_enabled}.
322
+ option :force_enable_gc_profiling do |o|
323
+ o.after_set do |_, _, precedence|
324
+ unless precedence == Datadog::Core::Configuration::Option::Precedence::DEFAULT
325
+ Datadog.logger.warn(
326
+ 'The profiling.advanced.force_enable_gc_profiling setting has been deprecated for removal and no ' \
327
+ 'longer does anything (the feature is now on by default). ' \
328
+ 'Please remove this setting from your Datadog.configure block.'
329
+ )
330
+ end
331
+ end
332
+ end
333
+
334
+ # Can be used to enable/disable garbage collection profiling.
335
+ #
336
+ # @warn To avoid https://bugs.ruby-lang.org/issues/18464 even when enabled, GC profiling is only started
337
+ # for Ruby versions 2.x, 3.1.4+, 3.2.3+ and 3.3.0+
338
+ # (more details in {Datadog::Profiling::Component.enable_gc_profiling?})
339
+ #
340
+ # @warn Due to a VM bug in the Ractor implementation (https://bugs.ruby-lang.org/issues/19112) this feature
341
+ # stops working when Ractors get garbage collected.
342
+ #
343
+ # @default `DD_PROFILING_GC_ENABLED` environment variable, otherwise `true`
344
+ option :gc_enabled do |o|
345
+ o.type :bool
346
+ o.env 'DD_PROFILING_GC_ENABLED'
347
+ o.default true
348
+ end
349
+
350
+ # Can be used to enable/disable the Datadog::Profiling.allocation_count feature.
351
+ #
352
+ # @deprecated Use {:allocation_enabled} (outside of advanced section) instead.
353
+ option :allocation_counting_enabled do |o|
354
+ o.after_set do |_, _, precedence|
355
+ unless precedence == Datadog::Core::Configuration::Option::Precedence::DEFAULT
356
+ Datadog.logger.warn(
357
+ 'The profiling.advanced.allocation_counting_enabled setting has been deprecated for removal and no ' \
358
+ 'longer does anything. Please remove it from your Datadog.configure block. ' \
359
+ 'Allocation counting is now controlled by the profiling.allocation_enabled setting instead.'
360
+ )
361
+ end
362
+ end
363
+ end
364
+
365
+ # @deprecated Use {:allocation_enabled} (outside of advanced section) instead.
366
+ option :experimental_allocation_enabled do |o|
367
+ o.type :bool
368
+ o.default false
369
+ o.after_set do |_, _, precedence|
370
+ unless precedence == Datadog::Core::Configuration::Option::Precedence::DEFAULT
371
+ Datadog.logger.warn(
372
+ 'The profiling.advanced.experimental_allocation_enabled setting has been deprecated for removal and ' \
373
+ 'no longer does anything. Please remove it from your Datadog.configure block. ' \
374
+ 'Allocation profiling is now controlled by the profiling.allocation_enabled setting instead.'
375
+ )
376
+ end
377
+ end
378
+ end
379
+
380
+ # Can be used to enable/disable the collection of heap profiles.
381
+ #
382
+ # This feature is alpha and disabled by default
383
+ #
384
+ # @warn To enable heap profiling you are required to also enable allocation profiling.
385
+ #
386
+ # @default `DD_PROFILING_EXPERIMENTAL_HEAP_ENABLED` environment variable as a boolean, otherwise `false`
387
+ option :experimental_heap_enabled do |o|
388
+ o.type :bool
389
+ o.env 'DD_PROFILING_EXPERIMENTAL_HEAP_ENABLED'
390
+ o.default false
391
+ end
392
+
393
+ # Can be used to enable/disable the collection of heap size profiles.
394
+ #
395
+ # This feature is alpha and enabled by default when heap profiling is enabled.
396
+ #
397
+ # @warn To enable heap size profiling you are required to also enable allocation and heap profiling.
398
+ #
399
+ # @default `DD_PROFILING_EXPERIMENTAL_HEAP_SIZE_ENABLED` environment variable as a boolean, otherwise
400
+ # whatever the value of DD_PROFILING_EXPERIMENTAL_HEAP_ENABLED is.
401
+ option :experimental_heap_size_enabled do |o|
402
+ o.type :bool
403
+ o.env 'DD_PROFILING_EXPERIMENTAL_HEAP_SIZE_ENABLED'
404
+ o.default true # This gets ANDed with experimental_heap_enabled in the profiler component.
405
+ end
406
+
407
+ # Can be used to configure the allocation sampling rate: a sample will be collected every x allocations.
408
+ #
409
+ # This feature is now controlled via {:overhead_target_percentage}
410
+ option :experimental_allocation_sample_rate do |o|
411
+ o.after_set do |_, _, precedence|
412
+ unless precedence == Datadog::Core::Configuration::Option::Precedence::DEFAULT
413
+ Datadog.logger.warn(
414
+ 'The profiling.advanced.experimental_allocation_sample_rate setting has been deprecated for removal ' \
415
+ 'and no longer does anything. Please remove it from your Datadog.configure block. ' \
416
+ 'Allocation sample rate is now handled by a dynamic sampler which will adjust the sampling rate to ' \
417
+ 'keep to the configured `profiling.advanced.overhead_target_percentage`.'
418
+ )
419
+ end
420
+ end
421
+ end
422
+
423
+ # Can be used to configure the heap sampling rate: a heap sample will be collected for every x allocation
424
+ # samples.
425
+ #
426
+ # The lower the value, the more accuracy in heap tracking but the bigger the overhead. In particular, a
427
+ # value of 1 will track ALL allocations samples for heap profiles.
428
+ #
429
+ # The effective heap sampling rate in terms of allocations (not allocation samples) can be calculated via
430
+ # effective_heap_sample_rate = allocation_sample_rate * heap_sample_rate.
431
+ #
432
+ # @default `DD_PROFILING_EXPERIMENTAL_HEAP_SAMPLE_RATE` environment variable, otherwise `10`.
433
+ option :experimental_heap_sample_rate do |o|
434
+ o.type :int
435
+ o.env 'DD_PROFILING_EXPERIMENTAL_HEAP_SAMPLE_RATE'
436
+ o.default 10
437
+ end
438
+
439
+ # Can be used to disable checking which version of `libmysqlclient` is being used by the `mysql2` gem.
440
+ #
441
+ # This setting is only used when the `mysql2` gem is installed.
442
+ #
443
+ # @default `DD_PROFILING_SKIP_MYSQL2_CHECK` environment variable, otherwise `false`
444
+ option :skip_mysql2_check do |o|
445
+ o.type :bool
446
+ o.env 'DD_PROFILING_SKIP_MYSQL2_CHECK'
447
+ o.default false
448
+ end
449
+
450
+ # Enables data collection for the timeline feature. This is still experimental and not recommended yet.
451
+ #
452
+ # @default `DD_PROFILING_EXPERIMENTAL_TIMELINE_ENABLED` environment variable as a boolean, otherwise `false`
453
+ option :experimental_timeline_enabled do |o|
454
+ o.after_set do |_, _, precedence|
455
+ unless precedence == Datadog::Core::Configuration::Option::Precedence::DEFAULT
456
+ Datadog.logger.warn(
457
+ 'The profiling.advanced.experimental_timeline_enabled setting has been deprecated for removal ' \
458
+ 'and no longer does anything. Please remove it from your Datadog.configure block. ' \
459
+ 'The timeline feature counting is now controlled by the `timeline_enabled` setting instead.'
460
+ )
461
+ end
462
+ end
463
+ end
464
+
465
+ # Controls data collection for the timeline feature.
466
+ #
467
+ # If you needed to disable this, please tell us why on <https://github.com/DataDog/dd-trace-rb/issues/new>,
468
+ # so we can fix it!
469
+ #
470
+ # @default `DD_PROFILING_TIMELINE_ENABLED` environment variable as a boolean, otherwise `true`
471
+ option :timeline_enabled do |o|
472
+ o.type :bool
473
+ o.env 'DD_PROFILING_TIMELINE_ENABLED'
474
+ o.default true
475
+ end
476
+
477
+ # The profiler gathers data by sending `SIGPROF` unix signals to Ruby application threads.
478
+ #
479
+ # Sending `SIGPROF` is a common profiling approach, and may cause system calls from native
480
+ # extensions/libraries to be interrupted with a system
481
+ # [EINTR error code.](https://man7.org/linux/man-pages/man7/signal.7.html#:~:text=Interruption%20of%20system%20calls%20and%20library%20functions%20by%20signal%20handlers)
482
+ # Rarely, native extensions or libraries called by them may have missing or incorrect error handling for the
483
+ # `EINTR` error code.
484
+ #
485
+ # The "no signals" workaround, when enabled, enables an alternative mode for the profiler where it does not
486
+ # send `SIGPROF` unix signals. The downside of this approach is that the profiler data will have lower
487
+ # quality.
488
+ #
489
+ # This workaround is automatically enabled when gems that are known to have issues handling
490
+ # `EINTR` error codes are detected. If you suspect you may be seeing an issue due to the profiler's use of
491
+ # signals, you can try manually enabling this mode as a fallback.
492
+ # Please also report these issues to us on <https://github.com/DataDog/dd-trace-rb/issues/new>, so we can
493
+ # work with the gem authors to fix them!
494
+ #
495
+ # @default `DD_PROFILING_NO_SIGNALS_WORKAROUND_ENABLED` environment variable as a boolean, otherwise `:auto`
496
+ option :no_signals_workaround_enabled do |o|
497
+ o.env 'DD_PROFILING_NO_SIGNALS_WORKAROUND_ENABLED'
498
+ o.default :auto
499
+ o.env_parser do |value|
500
+ if value
501
+ value = value.strip.downcase
502
+ ['true', '1'].include?(value)
503
+ end
504
+ end
505
+ end
506
+
507
+ # Configures how much wall-time overhead the profiler targets. The profiler will dynamically adjust the
508
+ # interval between samples it takes so as to try and maintain the property that it spends no longer than
509
+ # this amount of wall-clock time profiling. For example, with the default value of 2%, the profiler will
510
+ # try and cause no more than 1.2 seconds per minute of overhead. Decreasing this value will reduce the
511
+ # accuracy of the data collected. Increasing will impact the application.
512
+ #
513
+ # We do not recommend tweaking this value.
514
+ #
515
+ # This value should be a percentage i.e. a number between 0 and 100, not 0 and 1.
516
+ #
517
+ # @default `DD_PROFILING_OVERHEAD_TARGET_PERCENTAGE` as a float, otherwise 2.0
518
+ option :overhead_target_percentage do |o|
519
+ o.type :float
520
+ o.env 'DD_PROFILING_OVERHEAD_TARGET_PERCENTAGE'
521
+ o.default 2.0
522
+ end
523
+
524
+ # Controls how often the profiler reports data, in seconds. Cannot be lower than 60 seconds.
525
+ #
526
+ # We do not recommend tweaking this value.
527
+ #
528
+ # @default `DD_PROFILING_UPLOAD_PERIOD` environment variable, otherwise 60
529
+ option :upload_period_seconds do |o|
530
+ o.type :int
531
+ o.env 'DD_PROFILING_UPLOAD_PERIOD'
532
+ o.default 60
253
533
  end
254
534
  end
255
535
 
256
536
  # @public_api
257
537
  settings :upload do
538
+ # Network timeout for reporting profiling data to Datadog.
539
+ #
540
+ # @default `DD_PROFILING_UPLOAD_TIMEOUT` environment variable, otherwise `30.0`
258
541
  option :timeout_seconds do |o|
259
- o.setter { |value| value.nil? ? 30.0 : value.to_f }
260
- o.default { env_to_float(Profiling::Ext::ENV_UPLOAD_TIMEOUT, 30.0) }
261
- o.lazy
542
+ o.type :float
543
+ o.env Profiling::Ext::ENV_UPLOAD_TIMEOUT
544
+ o.default 30.0
262
545
  end
263
546
  end
264
547
  end
@@ -271,11 +554,12 @@ module Datadog
271
554
  # @default `DD_RUNTIME_METRICS_ENABLED` environment variable, otherwise `false`
272
555
  # @return [Boolean]
273
556
  option :enabled do |o|
274
- o.default { env_to_bool(Core::Runtime::Ext::Metrics::ENV_ENABLED, false) }
275
- o.lazy
557
+ o.env Core::Runtime::Ext::Metrics::ENV_ENABLED
558
+ o.default false
559
+ o.type :bool
276
560
  end
277
561
 
278
- option :opts, default: ->(_i) { {} }, lazy: true
562
+ option :opts, default: {}, type: :hash
279
563
  option :statsd
280
564
  end
281
565
 
@@ -284,9 +568,12 @@ module Datadog
284
568
  # @default `DD_SERVICE` environment variable, otherwise the program name (e.g. `'ruby'`, `'rails'`, `'pry'`)
285
569
  # @return [String]
286
570
  option :service do |o|
571
+ # DEV-2.0: Remove this conversion for symbol.
572
+ o.setter { |v| v.to_s if v }
573
+
287
574
  # NOTE: service also gets set as a side effect of tags. See the WORKAROUND note in #initialize for details.
288
- o.default { ENV.fetch(Core::Environment::Ext::ENV_SERVICE, Core::Environment::Ext::FALLBACK_SERVICE_NAME) }
289
- o.lazy
575
+ o.env Core::Environment::Ext::ENV_SERVICE
576
+ o.default Core::Environment::Ext::FALLBACK_SERVICE_NAME
290
577
 
291
578
  # There's a few cases where we don't want to use the fallback service name, so this helper allows us to get a
292
579
  # nil instead so that one can do
@@ -308,8 +595,8 @@ module Datadog
308
595
  # @default `DD_SITE` environment variable, otherwise `nil` which sends data to `app.datadoghq.com`
309
596
  # @return [String,nil]
310
597
  option :site do |o|
311
- o.default { ENV.fetch(Core::Environment::Ext::ENV_SITE, nil) }
312
- o.lazy
598
+ o.type :string, nilable: true
599
+ o.env Core::Environment::Ext::ENV_SITE
313
600
  end
314
601
 
315
602
  # Default tags
@@ -319,44 +606,57 @@ module Datadog
319
606
  # @default `DD_TAGS` environment variable (in the format `'tag1:value1,tag2:value2'`), otherwise `{}`
320
607
  # @return [Hash<String,String>]
321
608
  option :tags do |o|
322
- o.default do
323
- tags = {}
609
+ o.type :hash, nilable: true
610
+ o.env Core::Environment::Ext::ENV_TAGS
611
+ o.env_parser do |env_value|
612
+ values = if env_value.include?(',')
613
+ env_value.split(',')
614
+ else
615
+ env_value.split(' ') # rubocop:disable Style/RedundantArgument
616
+ end
617
+
618
+ values.map! do |v|
619
+ v.gsub!(/\A[\s,]*|[\s,]*\Z/, '')
620
+
621
+ v.empty? ? nil : v
622
+ end
324
623
 
325
- # Parse tags from environment
326
- env_to_list(Core::Environment::Ext::ENV_TAGS, comma_separated_only: false).each do |tag|
327
- pair = tag.split(':')
328
- tags[pair.first] = pair.last if pair.length == 2
624
+ values.compact!
625
+ values.each_with_object({}) do |tag, tags|
626
+ key, value = tag.split(':', 2)
627
+ tags[key] = value if value && !value.empty?
329
628
  end
629
+ end
630
+ o.setter do |new_value, old_value|
631
+ raw_tags = new_value || {}
330
632
 
331
- # Override tags if defined
332
- tags[Core::Environment::Ext::TAG_ENV] = env unless env.nil?
333
- tags[Core::Environment::Ext::TAG_VERSION] = version unless version.nil?
633
+ env_value = env
634
+ version_value = version
635
+ service_name = service_without_fallback
334
636
 
335
- tags
336
- end
637
+ # Override tags if defined
638
+ raw_tags[Core::Environment::Ext::TAG_ENV] = env_value unless env_value.nil?
639
+ raw_tags[Core::Environment::Ext::TAG_VERSION] = version_value unless version_value.nil?
337
640
 
338
- o.setter do |new_value, old_value|
339
641
  # Coerce keys to strings
340
- string_tags = new_value.collect { |k, v| [k.to_s, v] }.to_h
642
+ string_tags = raw_tags.collect { |k, v| [k.to_s, v] }.to_h
341
643
 
342
644
  # Cross-populate tag values with other settings
343
- if env.nil? && string_tags.key?(Core::Environment::Ext::TAG_ENV)
645
+ if env_value.nil? && string_tags.key?(Core::Environment::Ext::TAG_ENV)
344
646
  self.env = string_tags[Core::Environment::Ext::TAG_ENV]
345
647
  end
346
648
 
347
- if version.nil? && string_tags.key?(Core::Environment::Ext::TAG_VERSION)
649
+ if version_value.nil? && string_tags.key?(Core::Environment::Ext::TAG_VERSION)
348
650
  self.version = string_tags[Core::Environment::Ext::TAG_VERSION]
349
651
  end
350
652
 
351
- if service_without_fallback.nil? && string_tags.key?(Core::Environment::Ext::TAG_SERVICE)
653
+ if service_name.nil? && string_tags.key?(Core::Environment::Ext::TAG_SERVICE)
352
654
  self.service = string_tags[Core::Environment::Ext::TAG_SERVICE]
353
655
  end
354
656
 
355
657
  # Merge with previous tags
356
658
  (old_value || {}).merge(string_tags)
357
659
  end
358
-
359
- o.lazy
360
660
  end
361
661
 
362
662
  # The time provider used by Datadog. It must respect the interface of [Time](https://ruby-doc.org/core-3.0.1/Time.html).
@@ -369,9 +669,10 @@ module Datadog
369
669
  # @default `->{ Time.now }`
370
670
  # @return [Proc<Time>]
371
671
  option :time_now_provider do |o|
372
- o.default { ::Time.now }
672
+ o.default_proc { ::Time.now }
673
+ o.type :proc
373
674
 
374
- o.on_set do |time_provider|
675
+ o.after_set do |time_provider|
375
676
  Core::Utils::Time.now_provider = time_provider
376
677
  end
377
678
 
@@ -384,269 +685,164 @@ module Datadog
384
685
  end
385
686
  end
386
687
 
387
- # Tracer specific configurations.
688
+ # The `version` tag in Datadog. Use it to enable [Deployment Tracking](https://docs.datadoghq.com/tracing/deployment_tracking/).
689
+ # @see https://docs.datadoghq.com/getting_started/tagging/unified_service_tagging
690
+ # @default `DD_VERSION` environment variable, otherwise `nils`
691
+ # @return [String,nil]
692
+ option :version do |o|
693
+ # NOTE: version also gets set as a side effect of tags. See the WORKAROUND note in #initialize for details.
694
+ o.type :string, nilable: true
695
+ o.env Core::Environment::Ext::ENV_VERSION
696
+ end
697
+
698
+ # Client-side telemetry configuration
388
699
  # @public_api
389
- settings :tracing do
390
- # Legacy [App Analytics](https://docs.datadoghq.com/tracing/legacy_app_analytics/) configuration.
700
+ settings :telemetry do
701
+ # Whether the bundled Ruby gems as reported through telemetry.
391
702
  #
392
- # @configure_with {Datadog::Tracing}
393
- # @deprecated Use [Trace Retention and Ingestion](https://docs.datadoghq.com/tracing/trace_retention_and_ingestion/)
394
- # controls.
395
- # @public_api
396
- settings :analytics do
397
- # @default `DD_TRACE_ANALYTICS_ENABLED` environment variable, otherwise `nil`
398
- # @return [Boolean,nil]
399
- option :enabled do |o|
400
- o.default { env_to_bool(Tracing::Configuration::Ext::Analytics::ENV_TRACE_ANALYTICS_ENABLED, nil) }
401
- o.lazy
402
- end
703
+ # @default `DD_TELEMETRY_DEPENDENCY_COLLECTION_ENABLED` environment variable, otherwise `true`.
704
+ # @return [Boolean]
705
+ option :dependency_collection do |o|
706
+ o.type :bool
707
+ o.env Core::Telemetry::Ext::ENV_DEPENDENCY_COLLECTION
708
+ o.default true
403
709
  end
404
710
 
405
- # [Distributed Tracing](https://docs.datadoghq.com/tracing/setup_overview/setup/ruby/#distributed-tracing) propagation
406
- # style configuration.
407
- #
408
- # The supported formats are:
409
- # * `Datadog`: Datadog propagation format, described by [Distributed Tracing](https://docs.datadoghq.com/tracing/setup_overview/setup/ruby/#distributed-tracing).
410
- # * `B3`: B3 Propagation using multiple headers, described by [openzipkin/b3-propagation](https://github.com/openzipkin/b3-propagation#multiple-headers).
411
- # * `B3 single header`: B3 Propagation using a single header, described by [openzipkin/b3-propagation](https://github.com/openzipkin/b3-propagation#single-header).
711
+ # Enable telemetry collection. This allows telemetry events to be emitted to the telemetry API.
412
712
  #
413
- # @public_api
414
- settings :distributed_tracing do
415
- # An ordered list of what data propagation styles the tracer will use to extract distributed tracing propagation
416
- # data from incoming requests and messages.
417
- #
418
- # The tracer will try to find distributed headers in the order they are present in the list provided to this option.
419
- # The first format to have valid data present will be used.
420
- #
421
- # @default `DD_PROPAGATION_STYLE_EXTRACT` environment variable (comma-separated list),
422
- # otherwise `['Datadog','B3','B3 single header']`.
423
- # @return [Array<String>]
424
- option :propagation_extract_style do |o|
425
- o.default do
426
- # Look for all headers by default
427
- env_to_list(
428
- Tracing::Configuration::Ext::Distributed::ENV_PROPAGATION_STYLE_EXTRACT,
429
- [
430
- Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_DATADOG,
431
- Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3,
432
- Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3_SINGLE_HEADER
433
- ],
434
- comma_separated_only: true
435
- )
436
- end
437
-
438
- o.lazy
439
- end
440
-
441
- # The data propagation styles the tracer will use to inject distributed tracing propagation
442
- # data into outgoing requests and messages.
443
- #
444
- # The tracer will inject data from all styles specified in this option.
445
- #
446
- # @default `DD_PROPAGATION_STYLE_INJECT` environment variable (comma-separated list), otherwise `['Datadog']`.
447
- # @return [Array<String>]
448
- option :propagation_inject_style do |o|
449
- o.default do
450
- env_to_list(
451
- Tracing::Configuration::Ext::Distributed::ENV_PROPAGATION_STYLE_INJECT,
452
- [Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_DATADOG],
453
- comma_separated_only: true # Only inject Datadog headers by default
454
- )
713
+ # @default `DD_INSTRUMENTATION_TELEMETRY_ENABLED` environment variable, otherwise `true`.
714
+ # Can be disabled as documented [here](https://docs.datadoghq.com/tracing/configure_data_security/#telemetry-collection).
715
+ # By default, telemetry is disabled in development environments.
716
+ # @return [Boolean]
717
+ option :enabled do |o|
718
+ o.env Core::Telemetry::Ext::ENV_ENABLED
719
+ o.default do
720
+ if Datadog::Core::Environment::Execution.development?
721
+ Datadog.logger.debug do
722
+ 'Development environment detected, disabling Telemetry. ' \
723
+ 'You can enable it with DD_INSTRUMENTATION_TELEMETRY_ENABLED=true.'
724
+ end
725
+ false
726
+ else
727
+ true
455
728
  end
456
-
457
- o.lazy
458
729
  end
730
+ o.type :bool
459
731
  end
460
732
 
461
- # Enable trace collection and span generation.
733
+ # The interval in seconds when telemetry must be sent.
462
734
  #
463
- # You can use this option to disable tracing without having to
464
- # remove the library as a whole.
735
+ # This method is used internally, for testing purposes only.
465
736
  #
466
- # @default `DD_TRACE_ENABLED` environment variable, otherwise `true`
467
- # @return [Boolean]
468
- option :enabled do |o|
469
- o.default { env_to_bool(Datadog::Core::Diagnostics::Ext::DD_TRACE_ENABLED, true) }
470
- o.lazy
737
+ # @default `DD_TELEMETRY_HEARTBEAT_INTERVAL` environment variable, otherwise `60`.
738
+ # @return [Float]
739
+ # @!visibility private
740
+ option :heartbeat_interval_seconds do |o|
741
+ o.type :float
742
+ o.env Core::Telemetry::Ext::ENV_HEARTBEAT_INTERVAL
743
+ o.default 60.0
471
744
  end
472
745
 
473
- # A custom tracer instance.
474
- #
475
- # It must respect the contract of {Datadog::Tracing::Tracer}.
476
- # It's recommended to delegate methods to {Datadog::Tracing::Tracer} to ease the implementation
477
- # of a custom tracer.
746
+ # The install id of the application.
478
747
  #
479
- # This option will not return the live tracer instance: it only holds a custom tracing instance, if any.
748
+ # This method is used internally, by library injection.
480
749
  #
481
- # For internal use only.
482
- #
483
- # @default `nil`
484
- # @return [Object,nil]
485
- option :instance
486
-
487
- # Automatic correlation between tracing and logging.
488
- # @see https://docs.datadoghq.com/tracing/setup_overview/setup/ruby/#trace-correlation
489
- # @return [Boolean]
490
- option :log_injection do |o|
491
- o.default { env_to_bool(Tracing::Configuration::Ext::Correlation::ENV_LOGS_INJECTION_ENABLED, true) }
492
- o.lazy
750
+ # @default `DD_INSTRUMENTATION_INSTALL_ID` environment variable, otherwise `nil`.
751
+ # @return [String,nil]
752
+ # @!visibility private
753
+ option :install_id do |o|
754
+ o.type :string, nilable: true
755
+ o.env Core::Telemetry::Ext::ENV_INSTALL_ID
493
756
  end
494
757
 
495
- # Configures an alternative trace transport behavior, where
496
- # traces can be sent to the agent and backend before all spans
497
- # have finished.
758
+ # The install type of the application.
498
759
  #
499
- # This is useful for long-running jobs or very large traces.
760
+ # This method is used internally, by library injection.
500
761
  #
501
- # The trace flame graph will display the partial trace as it is received and constantly
502
- # update with new spans as they are flushed.
503
- # @public_api
504
- settings :partial_flush do
505
- # Enable partial trace flushing.
506
- #
507
- # @default `false`
508
- # @return [Boolean]
509
- option :enabled, default: false
510
-
511
- # Minimum number of finished spans required in a single unfinished trace before
512
- # the tracer will consider that trace for partial flushing.
513
- #
514
- # This option helps preserve a minimum amount of batching in the
515
- # flushing process, reducing network overhead.
516
- #
517
- # This threshold only applies to unfinished traces. Traces that have finished
518
- # are always flushed immediately.
519
- #
520
- # @default 500
521
- # @return [Integer]
522
- option :min_spans_threshold, default: 500
762
+ # @default `DD_INSTRUMENTATION_INSTALL_TYPE` environment variable, otherwise `nil`.
763
+ # @return [String,nil]
764
+ # @!visibility private
765
+ option :install_type do |o|
766
+ o.type :string, nilable: true
767
+ o.env Core::Telemetry::Ext::ENV_INSTALL_TYPE
523
768
  end
524
769
 
525
- # Enables {https://docs.datadoghq.com/tracing/trace_retention_and_ingestion/#datadog-intelligent-retention-filter
526
- # Datadog intelligent retention filter}.
527
- # @default `true`
528
- # @return [Boolean,nil]
529
- option :priority_sampling
530
-
531
- option :report_hostname do |o|
532
- o.default { env_to_bool(Tracing::Configuration::Ext::NET::ENV_REPORT_HOSTNAME, false) }
533
- o.lazy
770
+ # The install time of the application.
771
+ #
772
+ # This method is used internally, by library injection.
773
+ #
774
+ # @default `DD_INSTRUMENTATION_INSTALL_TIME` environment variable, otherwise `nil`.
775
+ # @return [String,nil]
776
+ # @!visibility private
777
+ option :install_time do |o|
778
+ o.type :string, nilable: true
779
+ o.env Core::Telemetry::Ext::ENV_INSTALL_TIME
534
780
  end
781
+ end
535
782
 
536
- # A custom sampler instance.
537
- # The object must respect the {Datadog::Tracing::Sampling::Sampler} interface.
538
- # @default `nil`
539
- # @return [Object,nil]
540
- option :sampler
541
-
542
- # Client-side sampling configuration.
543
- # @public_api
544
- settings :sampling do
545
- # Default sampling rate for the tracer.
546
- #
547
- # If `nil`, the trace uses an automatic sampling strategy that tries to ensure
548
- # the collection of traces that are considered important (e.g. traces with an error, traces
549
- # for resources not seen recently).
550
- #
551
- # @default `DD_TRACE_SAMPLE_RATE` environment variable, otherwise `nil`.
552
- # @return [Float,nil]
553
- option :default_rate do |o|
554
- o.default { env_to_float(Tracing::Configuration::Ext::Sampling::ENV_SAMPLE_RATE, nil) }
555
- o.lazy
556
- end
557
-
558
- # Rate limit for number of spans per second.
559
- #
560
- # Spans created above the limit will contribute to service metrics, but won't
561
- # have their payload stored.
562
- #
563
- # @default `DD_TRACE_RATE_LIMIT` environment variable, otherwise 100.
564
- # @return [Numeric,nil]
565
- option :rate_limit do |o|
566
- o.default { env_to_float(Tracing::Configuration::Ext::Sampling::ENV_RATE_LIMIT, 100) }
567
- o.lazy
783
+ # Remote configuration
784
+ # @public_api
785
+ settings :remote do
786
+ # Enable remote configuration. This allows fetching of remote configuration for live updates.
787
+ #
788
+ # @default `DD_REMOTE_CONFIGURATION_ENABLED` environment variable, otherwise `true`.
789
+ # By default, remote configuration is disabled in development environments.
790
+ # @return [Boolean]
791
+ option :enabled do |o|
792
+ o.env Core::Remote::Ext::ENV_ENABLED
793
+ o.default do
794
+ if Datadog::Core::Environment::Execution.development?
795
+ Datadog.logger.debug do
796
+ 'Development environment detected, disabling Remote Configuration. ' \
797
+ 'You can enable it with DD_REMOTE_CONFIGURATION_ENABLED=true.'
798
+ end
799
+ false
800
+ else
801
+ true
802
+ end
568
803
  end
804
+ o.type :bool
569
805
  end
570
806
 
571
- # [Continuous Integration Visibility](https://docs.datadoghq.com/continuous_integration/) configuration.
572
- # @public_api
573
- settings :test_mode do
574
- # Enable test mode. This allows the tracer to collect spans from test runs.
575
- #
576
- # It also prevents the tracer from collecting spans in a production environment. Only use in a test environment.
577
- #
578
- # @default `DD_TRACE_TEST_MODE_ENABLED` environment variable, otherwise `false`
579
- # @return [Boolean]
580
- option :enabled do |o|
581
- o.default { env_to_bool(Tracing::Configuration::Ext::Test::ENV_MODE_ENABLED, false) }
582
- o.lazy
583
- end
584
-
585
- option :trace_flush do |o|
586
- o.default { nil }
587
- o.lazy
588
- end
589
-
590
- option :writer_options do |o|
591
- o.default { {} }
592
- o.lazy
593
- end
807
+ # Tune remote configuration polling interval.
808
+ # This is a private setting. Do not use outside of Datadog. It might change at any point in time.
809
+ #
810
+ # @default `DD_REMOTE_CONFIG_POLL_INTERVAL_SECONDS` environment variable, otherwise `5.0` seconds.
811
+ # @return [Float]
812
+ # @!visibility private
813
+ option :poll_interval_seconds do |o|
814
+ o.env Core::Remote::Ext::ENV_POLL_INTERVAL_SECONDS
815
+ o.type :float
816
+ o.default 5.0
594
817
  end
595
818
 
596
- # @see file:docs/GettingStarted.md#configuring-the-transport-layer Configuring the transport layer
597
- #
598
- # A {Proc} that configures a custom tracer transport.
599
- # @yield Receives a {Datadog::Transport::HTTP} that can be modified with custom adapters and settings.
600
- # @yieldparam [Datadog::Transport::HTTP] t transport to be configured.
601
- # @default `nil`
602
- # @return [Proc,nil]
603
- option :transport_options, default: nil
604
-
605
- # A custom writer instance.
606
- # The object must respect the {Datadog::Tracing::Writer} interface.
819
+ # Tune remote configuration boot timeout.
820
+ # Early operations such as requests are blocked until RC is ready. In
821
+ # order to not block the application indefinitely a timeout is
822
+ # enforced allowing requests to proceed with the local configuration.
607
823
  #
608
- # This option is recommended for internal use only.
609
- #
610
- # @default `nil`
611
- # @return [Object,nil]
612
- option :writer
824
+ # @default `DD_REMOTE_CONFIG_BOOT_TIMEOUT` environment variable, otherwise `1.0` seconds.
825
+ # @return [Float]
826
+ option :boot_timeout_seconds do |o|
827
+ o.env Core::Remote::Ext::ENV_BOOT_TIMEOUT_SECONDS
828
+ o.type :float
829
+ o.default 1.0
830
+ end
613
831
 
614
- # A custom {Hash} with keyword options to be passed to {Datadog::Tracing::Writer#initialize}.
615
- #
616
- # This option is recommended for internal use only.
832
+ # Declare service name to bind to remote configuration. Use when
833
+ # DD_SERVICE does not match the correct integration for which remote
834
+ # configuration applies.
617
835
  #
618
- # @default `{}`
619
- # @return [Hash,nil]
620
- option :writer_options, default: ->(_i) { {} }, lazy: true
621
- end
622
-
623
- # The `version` tag in Datadog. Use it to enable [Deployment Tracking](https://docs.datadoghq.com/tracing/deployment_tracking/).
624
- # @see https://docs.datadoghq.com/getting_started/tagging/unified_service_tagging
625
- # @default `DD_VERSION` environment variable, otherwise `nils`
626
- # @return [String,nil]
627
- option :version do |o|
628
- # NOTE: version also gets set as a side effect of tags. See the WORKAROUND note in #initialize for details.
629
- o.default { ENV.fetch(Core::Environment::Ext::ENV_VERSION, nil) }
630
- o.lazy
836
+ # @default `nil`.
837
+ # @return [String,nil]
838
+ option :service
631
839
  end
632
840
 
633
- # Client-side telemetry configuration
634
- # @public_api
635
- settings :telemetry do
636
- # Enable telemetry collection. This allows telemetry events to be emitted to the telemetry API.
637
- #
638
- # @default `DD_INSTRUMENTATION_TELEMETRY_ENABLED` environment variable, otherwise `false`. In a future release,
639
- # this value will be changed to `true` by default as documented [here](https://docs.datadoghq.com/tracing/configure_data_security/#telemetry-collection).
640
- # @return [Boolean]
641
- option :enabled do |o|
642
- o.default { env_to_bool(Core::Telemetry::Ext::ENV_ENABLED, false) }
643
- o.lazy
644
- end
645
- end
841
+ # TODO: Tracing should manage its own settings.
842
+ # Keep this extension here for now to keep things working.
843
+ extend Datadog::Tracing::Configuration::Settings
646
844
  end
647
845
  # rubocop:enable Metrics/BlockLength
648
- # rubocop:enable Metrics/ClassLength
649
- # rubocop:enable Layout/LineLength
650
846
  end
651
847
  end
652
848
  end