ddtrace 1.4.2 → 1.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (870) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +986 -2
  3. data/LICENSE-3rdparty.csv +2 -0
  4. data/README.md +10 -12
  5. data/ext/ddtrace_profiling_loader/ddtrace_profiling_loader.c +9 -2
  6. data/ext/ddtrace_profiling_loader/extconf.rb +21 -3
  7. data/ext/ddtrace_profiling_native_extension/NativeExtensionDesign.md +48 -12
  8. data/ext/ddtrace_profiling_native_extension/clock_id.h +1 -3
  9. data/ext/ddtrace_profiling_native_extension/clock_id_from_pthread.c +6 -23
  10. data/ext/ddtrace_profiling_native_extension/clock_id_noop.c +0 -1
  11. data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +719 -129
  12. data/ext/ddtrace_profiling_native_extension/collectors_dynamic_sampling_rate.c +150 -0
  13. data/ext/ddtrace_profiling_native_extension/collectors_dynamic_sampling_rate.h +18 -0
  14. data/ext/ddtrace_profiling_native_extension/collectors_gc_profiling_helper.c +156 -0
  15. data/ext/ddtrace_profiling_native_extension/collectors_gc_profiling_helper.h +5 -0
  16. data/ext/ddtrace_profiling_native_extension/collectors_idle_sampling_helper.c +244 -0
  17. data/ext/ddtrace_profiling_native_extension/collectors_idle_sampling_helper.h +3 -0
  18. data/ext/ddtrace_profiling_native_extension/collectors_stack.c +184 -94
  19. data/ext/ddtrace_profiling_native_extension/collectors_stack.h +20 -2
  20. data/ext/ddtrace_profiling_native_extension/collectors_thread_context.c +1301 -0
  21. data/ext/ddtrace_profiling_native_extension/collectors_thread_context.h +15 -0
  22. data/ext/ddtrace_profiling_native_extension/extconf.rb +103 -28
  23. data/ext/ddtrace_profiling_native_extension/heap_recorder.c +970 -0
  24. data/ext/ddtrace_profiling_native_extension/heap_recorder.h +155 -0
  25. data/ext/ddtrace_profiling_native_extension/helpers.h +7 -0
  26. data/ext/ddtrace_profiling_native_extension/http_transport.c +133 -88
  27. data/ext/ddtrace_profiling_native_extension/libdatadog_helpers.c +62 -0
  28. data/ext/ddtrace_profiling_native_extension/libdatadog_helpers.h +32 -4
  29. data/ext/ddtrace_profiling_native_extension/native_extension_helpers.rb +55 -26
  30. data/ext/ddtrace_profiling_native_extension/pid_controller.c +57 -0
  31. data/ext/ddtrace_profiling_native_extension/pid_controller.h +45 -0
  32. data/ext/ddtrace_profiling_native_extension/private_vm_api_access.c +317 -131
  33. data/ext/ddtrace_profiling_native_extension/private_vm_api_access.h +25 -1
  34. data/ext/ddtrace_profiling_native_extension/profiling.c +219 -4
  35. data/ext/ddtrace_profiling_native_extension/ruby_helpers.c +233 -1
  36. data/ext/ddtrace_profiling_native_extension/ruby_helpers.h +60 -8
  37. data/ext/ddtrace_profiling_native_extension/setup_signal_handler.c +115 -0
  38. data/ext/ddtrace_profiling_native_extension/setup_signal_handler.h +11 -0
  39. data/ext/ddtrace_profiling_native_extension/stack_recorder.c +585 -66
  40. data/ext/ddtrace_profiling_native_extension/stack_recorder.h +19 -30
  41. data/ext/ddtrace_profiling_native_extension/time_helpers.c +53 -0
  42. data/ext/ddtrace_profiling_native_extension/time_helpers.h +24 -0
  43. data/lib/datadog/appsec/assets/blocked.html +98 -3
  44. data/lib/datadog/appsec/assets/blocked.json +1 -0
  45. data/lib/datadog/appsec/assets/blocked.text +5 -0
  46. data/lib/datadog/appsec/assets/waf_rules/processors.json +92 -0
  47. data/lib/datadog/appsec/assets/waf_rules/recommended.json +2861 -796
  48. data/lib/datadog/appsec/assets/waf_rules/scanners.json +114 -0
  49. data/lib/datadog/appsec/assets/waf_rules/strict.json +459 -122
  50. data/lib/datadog/appsec/assets.rb +10 -4
  51. data/lib/datadog/appsec/autoload.rb +4 -11
  52. data/lib/datadog/appsec/component.rb +94 -0
  53. data/lib/datadog/appsec/configuration/settings.rb +170 -162
  54. data/lib/datadog/appsec/configuration.rb +1 -70
  55. data/lib/datadog/appsec/contrib/auto_instrument.rb +3 -5
  56. data/lib/datadog/appsec/contrib/devise/event.rb +57 -0
  57. data/lib/datadog/appsec/contrib/devise/ext.rb +13 -0
  58. data/lib/datadog/appsec/contrib/devise/integration.rb +42 -0
  59. data/lib/datadog/appsec/contrib/devise/patcher/authenticatable_patch.rb +76 -0
  60. data/lib/datadog/appsec/contrib/devise/patcher/registration_controller_patch.rb +54 -0
  61. data/lib/datadog/appsec/contrib/devise/patcher.rb +45 -0
  62. data/lib/datadog/appsec/contrib/devise/resource.rb +35 -0
  63. data/lib/datadog/appsec/contrib/devise/tracking.rb +49 -0
  64. data/lib/datadog/appsec/contrib/integration.rb +1 -1
  65. data/lib/datadog/appsec/contrib/patcher.rb +1 -1
  66. data/lib/datadog/appsec/contrib/rack/ext.rb +1 -3
  67. data/lib/datadog/appsec/contrib/rack/gateway/request.rb +104 -0
  68. data/lib/datadog/appsec/contrib/rack/gateway/response.rb +30 -0
  69. data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +112 -121
  70. data/lib/datadog/appsec/contrib/rack/integration.rb +0 -7
  71. data/lib/datadog/appsec/contrib/rack/patcher.rb +3 -1
  72. data/lib/datadog/appsec/contrib/rack/reactive/request.rb +33 -39
  73. data/lib/datadog/appsec/contrib/rack/reactive/request_body.rb +19 -23
  74. data/lib/datadog/appsec/contrib/rack/reactive/response.rb +25 -23
  75. data/lib/datadog/appsec/contrib/rack/request_body_middleware.rb +11 -8
  76. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +122 -41
  77. data/lib/datadog/appsec/contrib/rails/ext.rb +2 -4
  78. data/lib/datadog/appsec/contrib/rails/framework.rb +2 -16
  79. data/lib/datadog/appsec/contrib/rails/gateway/request.rb +67 -0
  80. data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +40 -52
  81. data/lib/datadog/appsec/contrib/rails/integration.rb +1 -8
  82. data/lib/datadog/appsec/contrib/rails/patcher.rb +23 -20
  83. data/lib/datadog/appsec/contrib/rails/reactive/action.rb +21 -23
  84. data/lib/datadog/appsec/contrib/rails/request.rb +4 -1
  85. data/lib/datadog/appsec/contrib/rails/request_middleware.rb +1 -1
  86. data/lib/datadog/appsec/contrib/sinatra/ext.rb +2 -3
  87. data/lib/datadog/appsec/contrib/sinatra/framework.rb +2 -16
  88. data/lib/datadog/appsec/contrib/sinatra/gateway/request.rb +17 -0
  89. data/lib/datadog/appsec/contrib/sinatra/gateway/route_params.rb +23 -0
  90. data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +78 -87
  91. data/lib/datadog/appsec/contrib/sinatra/integration.rb +0 -7
  92. data/lib/datadog/appsec/contrib/sinatra/patcher.rb +33 -15
  93. data/lib/datadog/appsec/contrib/sinatra/reactive/routed.rb +19 -21
  94. data/lib/datadog/appsec/contrib/sinatra/request_middleware.rb +1 -1
  95. data/lib/datadog/appsec/event.rb +98 -50
  96. data/lib/datadog/appsec/ext.rb +10 -0
  97. data/lib/datadog/appsec/extensions.rb +2 -105
  98. data/lib/datadog/appsec/instrumentation/gateway/argument.rb +22 -0
  99. data/lib/datadog/appsec/instrumentation/gateway.rb +26 -6
  100. data/lib/datadog/appsec/instrumentation.rb +9 -0
  101. data/lib/datadog/appsec/monitor/gateway/watcher.rb +67 -0
  102. data/lib/datadog/appsec/monitor/reactive/set_user.rb +58 -0
  103. data/lib/datadog/appsec/monitor.rb +11 -0
  104. data/lib/datadog/appsec/processor/actions.rb +49 -0
  105. data/lib/datadog/appsec/processor/rule_loader.rb +123 -0
  106. data/lib/datadog/appsec/processor/rule_merger.rb +152 -0
  107. data/lib/datadog/appsec/processor.rb +68 -61
  108. data/lib/datadog/appsec/rate_limiter.rb +1 -3
  109. data/lib/datadog/appsec/reactive/address_hash.rb +6 -2
  110. data/lib/datadog/appsec/reactive/engine.rb +10 -7
  111. data/lib/datadog/appsec/reactive/operation.rb +19 -2
  112. data/lib/datadog/appsec/reactive/subscriber.rb +2 -1
  113. data/lib/datadog/appsec/remote.rb +129 -0
  114. data/lib/datadog/appsec/response.rb +151 -0
  115. data/lib/datadog/appsec/sample_rate.rb +21 -0
  116. data/lib/datadog/appsec/scope.rb +61 -0
  117. data/lib/datadog/appsec/utils/http/media_range.rb +199 -0
  118. data/lib/datadog/appsec/utils/http/media_type.rb +85 -0
  119. data/lib/datadog/appsec/utils/http.rb +11 -0
  120. data/lib/datadog/appsec/utils.rb +9 -0
  121. data/lib/datadog/appsec.rb +41 -4
  122. data/lib/datadog/core/backport.rb +51 -0
  123. data/lib/datadog/core/buffer/cruby.rb +1 -1
  124. data/lib/datadog/core/buffer/random.rb +1 -1
  125. data/lib/datadog/core/buffer/thread_safe.rb +1 -1
  126. data/lib/datadog/core/chunker.rb +1 -1
  127. data/lib/datadog/core/configuration/agent_settings_resolver.rb +96 -56
  128. data/lib/datadog/core/configuration/base.rb +7 -16
  129. data/lib/datadog/core/configuration/components.rb +40 -296
  130. data/lib/datadog/core/configuration/ext.rb +47 -0
  131. data/lib/datadog/core/configuration/option.rb +270 -22
  132. data/lib/datadog/core/configuration/option_definition.rb +81 -31
  133. data/lib/datadog/core/configuration/options.rb +26 -16
  134. data/lib/datadog/core/configuration/settings.rb +419 -305
  135. data/lib/datadog/core/configuration.rb +10 -6
  136. data/lib/datadog/core/diagnostics/environment_logger.rb +129 -230
  137. data/lib/datadog/core/diagnostics/health.rb +4 -22
  138. data/lib/datadog/core/encoding.rb +0 -4
  139. data/lib/datadog/core/environment/cgroup.rb +0 -4
  140. data/lib/datadog/core/environment/class_count.rb +1 -1
  141. data/lib/datadog/core/environment/container.rb +0 -4
  142. data/lib/datadog/core/environment/execution.rb +103 -0
  143. data/lib/datadog/core/environment/ext.rb +12 -12
  144. data/lib/datadog/core/environment/gc.rb +1 -1
  145. data/lib/datadog/core/environment/identity.rb +57 -1
  146. data/lib/datadog/core/environment/platform.rb +0 -2
  147. data/lib/datadog/core/environment/socket.rb +1 -1
  148. data/lib/datadog/core/environment/thread_count.rb +1 -1
  149. data/lib/datadog/core/environment/variable_helpers.rb +29 -44
  150. data/lib/datadog/core/environment/vm_cache.rb +18 -1
  151. data/lib/datadog/core/environment/yjit.rb +58 -0
  152. data/lib/datadog/core/error.rb +1 -2
  153. data/lib/datadog/core/extensions.rb +1 -1
  154. data/lib/datadog/core/git/ext.rb +25 -23
  155. data/lib/datadog/core/header_collection.rb +43 -0
  156. data/lib/datadog/core/logger.rb +0 -2
  157. data/lib/datadog/core/logging/ext.rb +3 -1
  158. data/lib/datadog/core/metrics/client.rb +3 -4
  159. data/lib/datadog/core/metrics/ext.rb +6 -8
  160. data/lib/datadog/core/metrics/helpers.rb +1 -1
  161. data/lib/datadog/core/metrics/logging.rb +0 -2
  162. data/lib/datadog/core/metrics/metric.rb +1 -1
  163. data/lib/datadog/core/metrics/options.rb +0 -2
  164. data/lib/datadog/core/pin.rb +0 -2
  165. data/lib/datadog/core/remote/client/capabilities.rb +62 -0
  166. data/lib/datadog/core/remote/client.rb +232 -0
  167. data/lib/datadog/core/remote/component.rb +149 -0
  168. data/lib/datadog/core/remote/configuration/content.rb +111 -0
  169. data/lib/datadog/core/remote/configuration/digest.rb +62 -0
  170. data/lib/datadog/core/remote/configuration/path.rb +90 -0
  171. data/lib/datadog/core/remote/configuration/repository.rb +294 -0
  172. data/lib/datadog/core/remote/configuration/target.rb +74 -0
  173. data/lib/datadog/core/remote/configuration.rb +18 -0
  174. data/lib/datadog/core/remote/dispatcher.rb +59 -0
  175. data/lib/datadog/core/remote/ext.rb +12 -0
  176. data/lib/datadog/core/remote/negotiation.rb +70 -0
  177. data/lib/datadog/core/remote/transport/config.rb +60 -0
  178. data/lib/datadog/core/remote/transport/http/api/instance.rb +39 -0
  179. data/lib/datadog/core/remote/transport/http/api/spec.rb +21 -0
  180. data/lib/datadog/core/remote/transport/http/api.rb +58 -0
  181. data/lib/datadog/core/remote/transport/http/builder.rb +219 -0
  182. data/lib/datadog/core/remote/transport/http/client.rb +48 -0
  183. data/lib/datadog/core/remote/transport/http/config.rb +280 -0
  184. data/lib/datadog/core/remote/transport/http/negotiation.rb +146 -0
  185. data/lib/datadog/core/remote/transport/http.rb +179 -0
  186. data/lib/datadog/core/remote/transport/negotiation.rb +62 -0
  187. data/lib/datadog/core/remote/worker.rb +99 -0
  188. data/lib/datadog/core/remote.rb +24 -0
  189. data/lib/datadog/core/runtime/ext.rb +21 -11
  190. data/lib/datadog/core/runtime/metrics.rb +64 -7
  191. data/lib/datadog/core/telemetry/client.rb +12 -4
  192. data/lib/datadog/core/telemetry/collector.rb +34 -18
  193. data/lib/datadog/core/telemetry/emitter.rb +4 -4
  194. data/lib/datadog/core/telemetry/event.rb +20 -8
  195. data/lib/datadog/core/telemetry/ext.rb +6 -2
  196. data/lib/datadog/core/telemetry/heartbeat.rb +3 -5
  197. data/lib/datadog/core/telemetry/http/adapters/net.rb +0 -2
  198. data/lib/datadog/core/telemetry/http/env.rb +1 -1
  199. data/lib/datadog/core/telemetry/http/ext.rb +10 -8
  200. data/lib/datadog/core/telemetry/http/response.rb +0 -4
  201. data/lib/datadog/core/telemetry/http/transport.rb +4 -1
  202. data/lib/datadog/core/telemetry/v1/app_event.rb +10 -3
  203. data/lib/datadog/core/telemetry/v1/application.rb +7 -1
  204. data/lib/datadog/core/telemetry/v1/dependency.rb +9 -2
  205. data/lib/datadog/core/telemetry/v1/host.rb +9 -1
  206. data/lib/datadog/core/telemetry/v1/install_signature.rb +38 -0
  207. data/lib/datadog/core/telemetry/v1/integration.rb +7 -1
  208. data/lib/datadog/core/telemetry/v1/product.rb +9 -1
  209. data/lib/datadog/core/telemetry/v1/telemetry_request.rb +7 -1
  210. data/lib/datadog/core/telemetry/v2/app_client_configuration_change.rb +41 -0
  211. data/lib/datadog/core/telemetry/v2/request.rb +29 -0
  212. data/lib/datadog/core/transport/ext.rb +47 -0
  213. data/lib/datadog/core/transport/http/adapters/net.rb +168 -0
  214. data/lib/datadog/core/transport/http/adapters/registry.rb +29 -0
  215. data/lib/datadog/core/transport/http/adapters/test.rb +89 -0
  216. data/lib/datadog/core/transport/http/adapters/unix_socket.rb +83 -0
  217. data/lib/datadog/core/transport/http/api/endpoint.rb +31 -0
  218. data/lib/datadog/core/transport/http/api/fallbacks.rb +26 -0
  219. data/lib/datadog/core/transport/http/api/map.rb +18 -0
  220. data/lib/datadog/core/transport/http/env.rb +62 -0
  221. data/lib/datadog/core/transport/http/response.rb +60 -0
  222. data/lib/datadog/core/transport/parcel.rb +22 -0
  223. data/lib/datadog/core/transport/request.rb +17 -0
  224. data/lib/datadog/core/transport/response.rb +64 -0
  225. data/lib/datadog/core/utils/compression.rb +6 -2
  226. data/lib/datadog/core/utils/duration.rb +52 -0
  227. data/lib/datadog/core/utils/forking.rb +0 -2
  228. data/lib/datadog/core/utils/hash.rb +79 -0
  229. data/lib/datadog/core/utils/network.rb +140 -0
  230. data/lib/datadog/core/utils/only_once.rb +0 -2
  231. data/lib/datadog/core/utils/safe_dup.rb +35 -12
  232. data/lib/datadog/core/utils/sequence.rb +1 -1
  233. data/lib/datadog/core/utils/time.rb +1 -3
  234. data/lib/datadog/core/utils.rb +1 -24
  235. data/lib/datadog/core/vendor/ipaddr.rb +78 -0
  236. data/lib/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rb +0 -2
  237. data/lib/datadog/core/vendor/multipart-post/multipart/post/multipartable.rb +0 -2
  238. data/lib/datadog/core/vendor/multipart-post/multipart/post/parts.rb +0 -2
  239. data/lib/datadog/core/vendor/multipart-post/multipart/post/version.rb +0 -2
  240. data/lib/datadog/core/vendor/multipart-post/multipart/post.rb +0 -2
  241. data/lib/datadog/core/vendor/multipart-post/multipart.rb +0 -2
  242. data/lib/datadog/core/vendor/multipart-post/net/http/post/multipart.rb +0 -2
  243. data/lib/datadog/core/worker.rb +1 -1
  244. data/lib/datadog/core/workers/async.rb +7 -6
  245. data/lib/datadog/core/workers/interval_loop.rb +6 -2
  246. data/lib/datadog/core/workers/polling.rb +2 -4
  247. data/lib/datadog/core/workers/queue.rb +1 -1
  248. data/lib/datadog/core/workers/runtime_metrics.rb +1 -1
  249. data/lib/datadog/core.rb +20 -55
  250. data/lib/datadog/kit/appsec/events.rb +169 -0
  251. data/lib/datadog/kit/enable_core_dumps.rb +8 -9
  252. data/lib/datadog/kit/identity.rb +90 -49
  253. data/lib/datadog/kit.rb +1 -1
  254. data/lib/datadog/opentelemetry/api/context.rb +193 -0
  255. data/lib/datadog/opentelemetry/api/trace/span.rb +14 -0
  256. data/lib/datadog/opentelemetry/sdk/configurator.rb +37 -0
  257. data/lib/datadog/opentelemetry/sdk/id_generator.rb +26 -0
  258. data/lib/datadog/opentelemetry/sdk/propagator.rb +91 -0
  259. data/lib/datadog/opentelemetry/sdk/span_processor.rb +134 -0
  260. data/lib/datadog/opentelemetry/sdk/trace/span.rb +167 -0
  261. data/lib/datadog/opentelemetry/trace.rb +58 -0
  262. data/lib/datadog/opentelemetry.rb +48 -0
  263. data/lib/datadog/opentracer/binary_propagator.rb +1 -1
  264. data/lib/datadog/opentracer/carrier.rb +1 -1
  265. data/lib/datadog/opentracer/distributed_headers.rb +7 -11
  266. data/lib/datadog/opentracer/global_tracer.rb +1 -1
  267. data/lib/datadog/opentracer/propagator.rb +1 -1
  268. data/lib/datadog/opentracer/rack_propagator.rb +0 -5
  269. data/lib/datadog/opentracer/scope.rb +1 -1
  270. data/lib/datadog/opentracer/scope_manager.rb +1 -1
  271. data/lib/datadog/opentracer/span.rb +0 -2
  272. data/lib/datadog/opentracer/span_context.rb +1 -1
  273. data/lib/datadog/opentracer/span_context_factory.rb +1 -1
  274. data/lib/datadog/opentracer/text_map_propagator.rb +6 -9
  275. data/lib/datadog/opentracer/thread_local_scope.rb +1 -1
  276. data/lib/datadog/opentracer/thread_local_scope_manager.rb +0 -2
  277. data/lib/datadog/opentracer/tracer.rb +0 -2
  278. data/lib/datadog/opentracer.rb +10 -1
  279. data/lib/datadog/profiling/collectors/code_provenance.rb +0 -2
  280. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +53 -19
  281. data/lib/datadog/profiling/collectors/dynamic_sampling_rate.rb +14 -0
  282. data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +68 -0
  283. data/lib/datadog/profiling/collectors/stack.rb +1 -1
  284. data/lib/datadog/profiling/collectors/thread_context.rb +61 -0
  285. data/lib/datadog/profiling/component.rb +434 -0
  286. data/lib/datadog/profiling/diagnostics/environment_logger.rb +39 -0
  287. data/lib/datadog/profiling/exporter.rb +12 -7
  288. data/lib/datadog/profiling/ext/forking.rb +0 -2
  289. data/lib/datadog/profiling/ext.rb +20 -32
  290. data/lib/datadog/profiling/flush.rb +8 -6
  291. data/lib/datadog/profiling/http_transport.rb +19 -8
  292. data/lib/datadog/profiling/load_native_extension.rb +7 -3
  293. data/lib/datadog/profiling/native_extension.rb +1 -22
  294. data/lib/datadog/profiling/preload.rb +1 -1
  295. data/lib/datadog/profiling/profiler.rb +42 -14
  296. data/lib/datadog/profiling/scheduler.rb +27 -25
  297. data/lib/datadog/profiling/stack_recorder.rb +30 -6
  298. data/lib/datadog/profiling/tag_builder.rb +1 -1
  299. data/lib/datadog/profiling/tasks/exec.rb +0 -2
  300. data/lib/datadog/profiling/tasks/help.rb +0 -2
  301. data/lib/datadog/profiling/tasks/setup.rb +0 -35
  302. data/lib/datadog/profiling.rb +53 -74
  303. data/lib/datadog/tracing/analytics.rb +1 -1
  304. data/lib/datadog/tracing/buffer.rb +0 -5
  305. data/lib/datadog/tracing/client_ip.rb +61 -0
  306. data/lib/datadog/tracing/component.rb +235 -0
  307. data/lib/datadog/tracing/configuration/agent_settings_resolver.rb +13 -0
  308. data/lib/datadog/tracing/configuration/dynamic/option.rb +71 -0
  309. data/lib/datadog/tracing/configuration/dynamic.rb +64 -0
  310. data/lib/datadog/tracing/configuration/ext.rb +73 -15
  311. data/lib/datadog/tracing/configuration/http.rb +74 -0
  312. data/lib/datadog/tracing/configuration/settings.rb +501 -0
  313. data/lib/datadog/tracing/context.rb +1 -1
  314. data/lib/datadog/tracing/context_provider.rb +0 -2
  315. data/lib/datadog/tracing/contrib/action_cable/configuration/settings.rb +10 -7
  316. data/lib/datadog/tracing/contrib/action_cable/event.rb +1 -1
  317. data/lib/datadog/tracing/contrib/action_cable/events/broadcast.rb +0 -2
  318. data/lib/datadog/tracing/contrib/action_cable/events/perform_action.rb +0 -2
  319. data/lib/datadog/tracing/contrib/action_cable/events/transmit.rb +0 -2
  320. data/lib/datadog/tracing/contrib/action_cable/events.rb +1 -1
  321. data/lib/datadog/tracing/contrib/action_cable/ext.rb +19 -19
  322. data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +0 -2
  323. data/lib/datadog/tracing/contrib/action_cable/integration.rb +0 -2
  324. data/lib/datadog/tracing/contrib/action_cable/patcher.rb +1 -1
  325. data/lib/datadog/tracing/contrib/action_mailer/configuration/settings.rb +10 -7
  326. data/lib/datadog/tracing/contrib/action_mailer/event.rb +1 -1
  327. data/lib/datadog/tracing/contrib/action_mailer/events/deliver.rb +0 -2
  328. data/lib/datadog/tracing/contrib/action_mailer/events/process.rb +0 -2
  329. data/lib/datadog/tracing/contrib/action_mailer/events.rb +1 -1
  330. data/lib/datadog/tracing/contrib/action_mailer/ext.rb +19 -19
  331. data/lib/datadog/tracing/contrib/action_mailer/integration.rb +0 -2
  332. data/lib/datadog/tracing/contrib/action_mailer/patcher.rb +1 -1
  333. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +2 -26
  334. data/lib/datadog/tracing/contrib/action_pack/action_controller/patcher.rb +1 -1
  335. data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +22 -9
  336. data/lib/datadog/tracing/contrib/action_pack/ext.rb +9 -9
  337. data/lib/datadog/tracing/contrib/action_pack/integration.rb +0 -2
  338. data/lib/datadog/tracing/contrib/action_pack/patcher.rb +1 -1
  339. data/lib/datadog/tracing/contrib/action_pack/utils.rb +0 -2
  340. data/lib/datadog/tracing/contrib/action_view/configuration/settings.rb +9 -8
  341. data/lib/datadog/tracing/contrib/action_view/event.rb +1 -1
  342. data/lib/datadog/tracing/contrib/action_view/events/render_partial.rb +0 -2
  343. data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +0 -2
  344. data/lib/datadog/tracing/contrib/action_view/events.rb +1 -1
  345. data/lib/datadog/tracing/contrib/action_view/ext.rb +11 -11
  346. data/lib/datadog/tracing/contrib/action_view/instrumentation/partial_renderer.rb +0 -2
  347. data/lib/datadog/tracing/contrib/action_view/instrumentation/template_renderer.rb +0 -2
  348. data/lib/datadog/tracing/contrib/action_view/integration.rb +0 -2
  349. data/lib/datadog/tracing/contrib/action_view/patcher.rb +0 -2
  350. data/lib/datadog/tracing/contrib/action_view/utils.rb +0 -2
  351. data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +14 -8
  352. data/lib/datadog/tracing/contrib/active_job/event.rb +1 -1
  353. data/lib/datadog/tracing/contrib/active_job/events/discard.rb +0 -2
  354. data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +0 -2
  355. data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +0 -2
  356. data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +0 -2
  357. data/lib/datadog/tracing/contrib/active_job/events/perform.rb +0 -2
  358. data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +0 -2
  359. data/lib/datadog/tracing/contrib/active_job/events.rb +1 -1
  360. data/lib/datadog/tracing/contrib/active_job/ext.rb +24 -24
  361. data/lib/datadog/tracing/contrib/active_job/integration.rb +0 -2
  362. data/lib/datadog/tracing/contrib/active_job/log_injection.rb +2 -2
  363. data/lib/datadog/tracing/contrib/active_job/patcher.rb +2 -2
  364. data/lib/datadog/tracing/contrib/active_model_serializers/configuration/settings.rb +10 -7
  365. data/lib/datadog/tracing/contrib/active_model_serializers/event.rb +1 -1
  366. data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +0 -2
  367. data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +0 -2
  368. data/lib/datadog/tracing/contrib/active_model_serializers/events.rb +1 -1
  369. data/lib/datadog/tracing/contrib/active_model_serializers/ext.rb +11 -11
  370. data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +0 -2
  371. data/lib/datadog/tracing/contrib/active_model_serializers/patcher.rb +1 -1
  372. data/lib/datadog/tracing/contrib/active_record/configuration/makara_resolver.rb +0 -2
  373. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +18 -13
  374. data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +16 -9
  375. data/lib/datadog/tracing/contrib/active_record/event.rb +1 -1
  376. data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +0 -2
  377. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +3 -6
  378. data/lib/datadog/tracing/contrib/active_record/events.rb +1 -1
  379. data/lib/datadog/tracing/contrib/active_record/ext.rb +16 -16
  380. data/lib/datadog/tracing/contrib/active_record/integration.rb +0 -2
  381. data/lib/datadog/tracing/contrib/active_record/patcher.rb +1 -1
  382. data/lib/datadog/tracing/contrib/active_record/utils.rb +1 -3
  383. data/lib/datadog/tracing/contrib/active_record/vendor/connection_specification.rb +0 -2
  384. data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +107 -201
  385. data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +4 -1
  386. data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +1 -1
  387. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +18 -8
  388. data/lib/datadog/tracing/contrib/active_support/ext.rb +17 -17
  389. data/lib/datadog/tracing/contrib/active_support/integration.rb +0 -2
  390. data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +1 -1
  391. data/lib/datadog/tracing/contrib/active_support/notifications/subscriber.rb +1 -1
  392. data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +0 -2
  393. data/lib/datadog/tracing/contrib/active_support/patcher.rb +1 -1
  394. data/lib/datadog/tracing/contrib/analytics.rb +1 -1
  395. data/lib/datadog/tracing/contrib/auto_instrument.rb +1 -1
  396. data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +24 -8
  397. data/lib/datadog/tracing/contrib/aws/ext.rb +36 -14
  398. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +28 -3
  399. data/lib/datadog/tracing/contrib/aws/integration.rb +0 -2
  400. data/lib/datadog/tracing/contrib/aws/parsed_context.rb +4 -2
  401. data/lib/datadog/tracing/contrib/aws/patcher.rb +1 -1
  402. data/lib/datadog/tracing/contrib/aws/service/base.rb +16 -0
  403. data/lib/datadog/tracing/contrib/aws/service/dynamodb.rb +22 -0
  404. data/lib/datadog/tracing/contrib/aws/service/eventbridge.rb +22 -0
  405. data/lib/datadog/tracing/contrib/aws/service/kinesis.rb +32 -0
  406. data/lib/datadog/tracing/contrib/aws/service/s3.rb +22 -0
  407. data/lib/datadog/tracing/contrib/aws/service/sns.rb +30 -0
  408. data/lib/datadog/tracing/contrib/aws/service/sqs.rb +27 -0
  409. data/lib/datadog/tracing/contrib/aws/service/states.rb +40 -0
  410. data/lib/datadog/tracing/contrib/aws/services.rb +17 -3
  411. data/lib/datadog/tracing/contrib/concurrent_ruby/configuration/settings.rb +4 -3
  412. data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +15 -15
  413. data/lib/datadog/tracing/contrib/concurrent_ruby/ext.rb +3 -3
  414. data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +4 -11
  415. data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +2 -3
  416. data/lib/datadog/tracing/contrib/concurrent_ruby/patcher.rb +9 -3
  417. data/lib/datadog/tracing/contrib/concurrent_ruby/promises_future_patch.rb +22 -0
  418. data/lib/datadog/tracing/contrib/configurable.rb +1 -1
  419. data/lib/datadog/tracing/contrib/configuration/resolver.rb +1 -1
  420. data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +1 -1
  421. data/lib/datadog/tracing/contrib/configuration/settings.rb +1 -5
  422. data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +29 -8
  423. data/lib/datadog/tracing/contrib/dalli/ext.rb +25 -10
  424. data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +23 -7
  425. data/lib/datadog/tracing/contrib/dalli/integration.rb +0 -2
  426. data/lib/datadog/tracing/contrib/dalli/patcher.rb +1 -1
  427. data/lib/datadog/tracing/contrib/dalli/quantize.rb +0 -2
  428. data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +14 -8
  429. data/lib/datadog/tracing/contrib/delayed_job/ext.rb +15 -15
  430. data/lib/datadog/tracing/contrib/delayed_job/integration.rb +0 -2
  431. data/lib/datadog/tracing/contrib/delayed_job/patcher.rb +1 -1
  432. data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +9 -1
  433. data/lib/datadog/tracing/contrib/delayed_job/server_internal_tracer/worker.rb +3 -1
  434. data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +24 -8
  435. data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +20 -13
  436. data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +0 -2
  437. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +105 -95
  438. data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +0 -4
  439. data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +27 -10
  440. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +52 -7
  441. data/lib/datadog/tracing/contrib/ethon/ext.rb +18 -11
  442. data/lib/datadog/tracing/contrib/ethon/integration.rb +0 -2
  443. data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +10 -3
  444. data/lib/datadog/tracing/contrib/ethon/patcher.rb +1 -2
  445. data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +29 -11
  446. data/lib/datadog/tracing/contrib/excon/ext.rb +15 -8
  447. data/lib/datadog/tracing/contrib/excon/integration.rb +0 -2
  448. data/lib/datadog/tracing/contrib/excon/middleware.rb +27 -4
  449. data/lib/datadog/tracing/contrib/excon/patcher.rb +1 -1
  450. data/lib/datadog/tracing/contrib/ext.rb +55 -0
  451. data/lib/datadog/tracing/contrib/extensions.rb +32 -2
  452. data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +30 -11
  453. data/lib/datadog/tracing/contrib/faraday/connection.rb +1 -1
  454. data/lib/datadog/tracing/contrib/faraday/ext.rb +15 -8
  455. data/lib/datadog/tracing/contrib/faraday/integration.rb +0 -2
  456. data/lib/datadog/tracing/contrib/faraday/middleware.rb +24 -6
  457. data/lib/datadog/tracing/contrib/faraday/patcher.rb +0 -2
  458. data/lib/datadog/tracing/contrib/faraday/rack_builder.rb +1 -1
  459. data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +9 -7
  460. data/lib/datadog/tracing/contrib/grape/endpoint.rb +0 -4
  461. data/lib/datadog/tracing/contrib/grape/ext.rb +15 -15
  462. data/lib/datadog/tracing/contrib/grape/instrumentation.rb +0 -2
  463. data/lib/datadog/tracing/contrib/grape/integration.rb +0 -2
  464. data/lib/datadog/tracing/contrib/grape/patcher.rb +1 -1
  465. data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +10 -8
  466. data/lib/datadog/tracing/contrib/graphql/ext.rb +6 -6
  467. data/lib/datadog/tracing/contrib/graphql/integration.rb +0 -2
  468. data/lib/datadog/tracing/contrib/graphql/patcher.rb +0 -2
  469. data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +50 -10
  470. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +45 -19
  471. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +43 -26
  472. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb +0 -6
  473. data/lib/datadog/tracing/contrib/grpc/distributed/fetcher.rb +26 -0
  474. data/lib/datadog/tracing/contrib/grpc/distributed/propagation.rb +42 -0
  475. data/lib/datadog/tracing/contrib/grpc/ext.rb +15 -11
  476. data/lib/datadog/tracing/contrib/grpc/formatting.rb +127 -0
  477. data/lib/datadog/tracing/contrib/grpc/integration.rb +8 -3
  478. data/lib/datadog/tracing/contrib/grpc/intercept_with_datadog.rb +1 -1
  479. data/lib/datadog/tracing/contrib/grpc/patcher.rb +1 -4
  480. data/lib/datadog/tracing/contrib/hanami/action_tracer.rb +47 -0
  481. data/lib/datadog/tracing/contrib/hanami/configuration/settings.rb +23 -0
  482. data/lib/datadog/tracing/contrib/hanami/ext.rb +24 -0
  483. data/lib/datadog/tracing/contrib/hanami/integration.rb +42 -0
  484. data/lib/datadog/tracing/contrib/hanami/patcher.rb +33 -0
  485. data/lib/datadog/tracing/contrib/hanami/plugin.rb +23 -0
  486. data/lib/datadog/tracing/contrib/hanami/renderer_policy_tracing.rb +41 -0
  487. data/lib/datadog/tracing/contrib/hanami/router_tracing.rb +44 -0
  488. data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +6 -9
  489. data/lib/datadog/tracing/contrib/http/configuration/settings.rb +47 -10
  490. data/lib/datadog/tracing/contrib/http/distributed/fetcher.rb +38 -0
  491. data/lib/datadog/tracing/contrib/http/distributed/propagation.rb +37 -0
  492. data/lib/datadog/tracing/contrib/http/ext.rb +15 -8
  493. data/lib/datadog/tracing/contrib/http/instrumentation.rb +32 -12
  494. data/lib/datadog/tracing/contrib/http/integration.rb +1 -1
  495. data/lib/datadog/tracing/contrib/http/patcher.rb +1 -1
  496. data/lib/datadog/tracing/contrib/http_annotation_helper.rb +1 -1
  497. data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +47 -10
  498. data/lib/datadog/tracing/contrib/httpclient/ext.rb +16 -8
  499. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +27 -8
  500. data/lib/datadog/tracing/contrib/httpclient/integration.rb +0 -2
  501. data/lib/datadog/tracing/contrib/httpclient/patcher.rb +0 -2
  502. data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +47 -10
  503. data/lib/datadog/tracing/contrib/httprb/ext.rb +15 -8
  504. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +27 -9
  505. data/lib/datadog/tracing/contrib/httprb/integration.rb +0 -2
  506. data/lib/datadog/tracing/contrib/httprb/patcher.rb +0 -2
  507. data/lib/datadog/tracing/contrib/integration.rb +1 -1
  508. data/lib/datadog/tracing/contrib/kafka/configuration/settings.rb +10 -7
  509. data/lib/datadog/tracing/contrib/kafka/consumer_event.rb +2 -1
  510. data/lib/datadog/tracing/contrib/kafka/consumer_group_event.rb +1 -1
  511. data/lib/datadog/tracing/contrib/kafka/event.rb +2 -1
  512. data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +0 -2
  513. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +0 -2
  514. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +0 -2
  515. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +0 -2
  516. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +0 -2
  517. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +0 -2
  518. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +0 -2
  519. data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +1 -2
  520. data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +1 -2
  521. data/lib/datadog/tracing/contrib/kafka/events.rb +1 -1
  522. data/lib/datadog/tracing/contrib/kafka/ext.rb +41 -39
  523. data/lib/datadog/tracing/contrib/kafka/integration.rb +0 -2
  524. data/lib/datadog/tracing/contrib/kafka/patcher.rb +1 -1
  525. data/lib/datadog/tracing/contrib/lograge/configuration/settings.rb +4 -3
  526. data/lib/datadog/tracing/contrib/lograge/ext.rb +2 -2
  527. data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +3 -18
  528. data/lib/datadog/tracing/contrib/lograge/integration.rb +0 -2
  529. data/lib/datadog/tracing/contrib/lograge/patcher.rb +1 -1
  530. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +24 -8
  531. data/lib/datadog/tracing/contrib/mongodb/ext.rb +24 -14
  532. data/lib/datadog/tracing/contrib/mongodb/instrumentation.rb +1 -1
  533. data/lib/datadog/tracing/contrib/mongodb/integration.rb +0 -2
  534. data/lib/datadog/tracing/contrib/mongodb/parsers.rb +0 -2
  535. data/lib/datadog/tracing/contrib/mongodb/patcher.rb +1 -1
  536. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +22 -4
  537. data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +35 -8
  538. data/lib/datadog/tracing/contrib/mysql2/ext.rb +14 -9
  539. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +38 -4
  540. data/lib/datadog/tracing/contrib/mysql2/integration.rb +0 -2
  541. data/lib/datadog/tracing/contrib/mysql2/patcher.rb +1 -1
  542. data/lib/datadog/tracing/contrib/opensearch/configuration/settings.rb +52 -0
  543. data/lib/datadog/tracing/contrib/opensearch/ext.rb +37 -0
  544. data/lib/datadog/tracing/contrib/opensearch/integration.rb +44 -0
  545. data/lib/datadog/tracing/contrib/opensearch/patcher.rb +135 -0
  546. data/lib/datadog/tracing/contrib/opensearch/quantize.rb +81 -0
  547. data/lib/datadog/tracing/contrib/patchable.rb +1 -1
  548. data/lib/datadog/tracing/contrib/patcher.rb +3 -5
  549. data/lib/datadog/tracing/contrib/pg/configuration/settings.rb +36 -8
  550. data/lib/datadog/tracing/contrib/pg/ext.rb +21 -18
  551. data/lib/datadog/tracing/contrib/pg/instrumentation.rb +115 -39
  552. data/lib/datadog/tracing/contrib/pg/integration.rb +0 -2
  553. data/lib/datadog/tracing/contrib/pg/patcher.rb +1 -1
  554. data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +23 -8
  555. data/lib/datadog/tracing/contrib/presto/ext.rb +24 -19
  556. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +17 -5
  557. data/lib/datadog/tracing/contrib/presto/integration.rb +0 -2
  558. data/lib/datadog/tracing/contrib/presto/patcher.rb +0 -2
  559. data/lib/datadog/tracing/contrib/propagation/sql_comment/comment.rb +41 -0
  560. data/lib/datadog/tracing/contrib/propagation/sql_comment/ext.rb +33 -0
  561. data/lib/datadog/tracing/contrib/propagation/sql_comment/mode.rb +28 -0
  562. data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +53 -0
  563. data/lib/datadog/tracing/contrib/qless/configuration/settings.rb +13 -9
  564. data/lib/datadog/tracing/contrib/qless/ext.rb +13 -13
  565. data/lib/datadog/tracing/contrib/qless/integration.rb +0 -2
  566. data/lib/datadog/tracing/contrib/qless/patcher.rb +1 -2
  567. data/lib/datadog/tracing/contrib/qless/qless_job.rb +3 -2
  568. data/lib/datadog/tracing/contrib/qless/tracer_cleaner.rb +1 -1
  569. data/lib/datadog/tracing/contrib/que/configuration/settings.rb +21 -14
  570. data/lib/datadog/tracing/contrib/que/ext.rb +0 -2
  571. data/lib/datadog/tracing/contrib/que/integration.rb +0 -2
  572. data/lib/datadog/tracing/contrib/que/patcher.rb +0 -2
  573. data/lib/datadog/tracing/contrib/que/tracer.rb +4 -2
  574. data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +18 -8
  575. data/lib/datadog/tracing/contrib/racecar/event.rb +7 -4
  576. data/lib/datadog/tracing/contrib/racecar/events/batch.rb +4 -3
  577. data/lib/datadog/tracing/contrib/racecar/events/consume.rb +0 -2
  578. data/lib/datadog/tracing/contrib/racecar/events/message.rb +4 -3
  579. data/lib/datadog/tracing/contrib/racecar/events.rb +1 -1
  580. data/lib/datadog/tracing/contrib/racecar/ext.rb +19 -18
  581. data/lib/datadog/tracing/contrib/racecar/integration.rb +0 -2
  582. data/lib/datadog/tracing/contrib/racecar/patcher.rb +1 -1
  583. data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +16 -14
  584. data/lib/datadog/tracing/contrib/rack/ext.rb +17 -12
  585. data/lib/datadog/tracing/contrib/rack/header_collection.rb +38 -0
  586. data/lib/datadog/tracing/contrib/rack/header_tagging.rb +63 -0
  587. data/lib/datadog/tracing/contrib/rack/integration.rb +0 -2
  588. data/lib/datadog/tracing/contrib/rack/middlewares.rb +130 -81
  589. data/lib/datadog/tracing/contrib/rack/patcher.rb +0 -2
  590. data/lib/datadog/tracing/contrib/rack/request_queue.rb +0 -2
  591. data/lib/datadog/tracing/contrib/rails/auto_instrument_railtie.rb +0 -4
  592. data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +28 -19
  593. data/lib/datadog/tracing/contrib/rails/ext.rb +6 -6
  594. data/lib/datadog/tracing/contrib/rails/framework.rb +1 -1
  595. data/lib/datadog/tracing/contrib/rails/integration.rb +0 -2
  596. data/lib/datadog/tracing/contrib/rails/log_injection.rb +7 -12
  597. data/lib/datadog/tracing/contrib/rails/middlewares.rb +1 -1
  598. data/lib/datadog/tracing/contrib/rails/patcher.rb +10 -43
  599. data/lib/datadog/tracing/contrib/rails/railtie.rb +3 -5
  600. data/lib/datadog/tracing/contrib/rails/utils.rb +2 -2
  601. data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +14 -11
  602. data/lib/datadog/tracing/contrib/rake/ext.rb +13 -13
  603. data/lib/datadog/tracing/contrib/rake/instrumentation.rb +0 -2
  604. data/lib/datadog/tracing/contrib/rake/integration.rb +0 -2
  605. data/lib/datadog/tracing/contrib/rake/patcher.rb +1 -1
  606. data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +0 -2
  607. data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +26 -10
  608. data/lib/datadog/tracing/contrib/redis/ext.rb +21 -13
  609. data/lib/datadog/tracing/contrib/redis/instrumentation.rb +13 -39
  610. data/lib/datadog/tracing/contrib/redis/integration.rb +34 -3
  611. data/lib/datadog/tracing/contrib/redis/patcher.rb +53 -11
  612. data/lib/datadog/tracing/contrib/redis/quantize.rb +11 -10
  613. data/lib/datadog/tracing/contrib/redis/tags.rb +24 -9
  614. data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +83 -0
  615. data/lib/datadog/tracing/contrib/redis/vendor/resolver.rb +0 -2
  616. data/lib/datadog/tracing/contrib/registerable.rb +1 -1
  617. data/lib/datadog/tracing/contrib/registry.rb +1 -1
  618. data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +14 -8
  619. data/lib/datadog/tracing/contrib/resque/ext.rb +8 -8
  620. data/lib/datadog/tracing/contrib/resque/integration.rb +0 -2
  621. data/lib/datadog/tracing/contrib/resque/patcher.rb +1 -1
  622. data/lib/datadog/tracing/contrib/resque/resque_job.rb +5 -1
  623. data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +27 -10
  624. data/lib/datadog/tracing/contrib/rest_client/ext.rb +14 -8
  625. data/lib/datadog/tracing/contrib/rest_client/integration.rb +0 -2
  626. data/lib/datadog/tracing/contrib/rest_client/patcher.rb +1 -2
  627. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +28 -3
  628. data/lib/datadog/tracing/contrib/roda/configuration/settings.rb +37 -0
  629. data/lib/datadog/tracing/contrib/roda/ext.rb +18 -0
  630. data/lib/datadog/tracing/contrib/roda/instrumentation.rb +76 -0
  631. data/lib/datadog/tracing/contrib/roda/integration.rb +45 -0
  632. data/lib/datadog/{ci/contrib/cucumber → tracing/contrib/roda}/patcher.rb +10 -7
  633. data/lib/datadog/tracing/contrib/semantic_logger/configuration/settings.rb +4 -3
  634. data/lib/datadog/tracing/contrib/semantic_logger/ext.rb +2 -2
  635. data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +6 -21
  636. data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +0 -2
  637. data/lib/datadog/tracing/contrib/semantic_logger/patcher.rb +1 -1
  638. data/lib/datadog/tracing/contrib/sequel/configuration/settings.rb +10 -7
  639. data/lib/datadog/tracing/contrib/sequel/database.rb +4 -3
  640. data/lib/datadog/tracing/contrib/sequel/dataset.rb +5 -2
  641. data/lib/datadog/tracing/contrib/sequel/ext.rb +9 -9
  642. data/lib/datadog/tracing/contrib/sequel/integration.rb +0 -2
  643. data/lib/datadog/tracing/contrib/sequel/patcher.rb +1 -1
  644. data/lib/datadog/tracing/contrib/sequel/utils.rb +7 -6
  645. data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +15 -9
  646. data/lib/datadog/tracing/contrib/shoryuken/ext.rb +13 -12
  647. data/lib/datadog/tracing/contrib/shoryuken/integration.rb +0 -2
  648. data/lib/datadog/tracing/contrib/shoryuken/patcher.rb +1 -1
  649. data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +5 -1
  650. data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +18 -4
  651. data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +19 -11
  652. data/lib/datadog/tracing/contrib/sidekiq/distributed/propagation.rb +38 -0
  653. data/lib/datadog/tracing/contrib/sidekiq/ext.rb +31 -31
  654. data/lib/datadog/tracing/contrib/sidekiq/integration.rb +8 -2
  655. data/lib/datadog/tracing/contrib/sidekiq/patcher.rb +15 -3
  656. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/heartbeat.rb +14 -5
  657. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/job_fetch.rb +3 -1
  658. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/redis_info.rb +3 -1
  659. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/scheduled_poller.rb +5 -1
  660. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/stop.rb +34 -0
  661. data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +24 -3
  662. data/lib/datadog/tracing/contrib/sidekiq/{tracing.rb → utils.rb} +2 -2
  663. data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +11 -11
  664. data/lib/datadog/tracing/contrib/sinatra/env.rb +11 -41
  665. data/lib/datadog/tracing/contrib/sinatra/ext.rb +23 -19
  666. data/lib/datadog/tracing/contrib/sinatra/framework.rb +0 -2
  667. data/lib/datadog/tracing/contrib/sinatra/integration.rb +0 -2
  668. data/lib/datadog/tracing/contrib/sinatra/patcher.rb +2 -3
  669. data/lib/datadog/tracing/contrib/sinatra/tracer.rb +8 -82
  670. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +14 -20
  671. data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +14 -10
  672. data/lib/datadog/tracing/contrib/sneakers/ext.rb +2 -2
  673. data/lib/datadog/tracing/contrib/sneakers/integration.rb +0 -2
  674. data/lib/datadog/tracing/contrib/sneakers/patcher.rb +0 -2
  675. data/lib/datadog/tracing/contrib/sneakers/tracer.rb +5 -2
  676. data/lib/datadog/tracing/contrib/span_attribute_schema.rb +92 -0
  677. data/lib/datadog/tracing/contrib/status_code_matcher.rb +0 -3
  678. data/lib/datadog/tracing/contrib/stripe/configuration/settings.rb +36 -0
  679. data/lib/datadog/tracing/contrib/stripe/ext.rb +26 -0
  680. data/lib/datadog/tracing/contrib/stripe/integration.rb +43 -0
  681. data/lib/datadog/tracing/contrib/stripe/patcher.rb +28 -0
  682. data/lib/datadog/tracing/contrib/stripe/request.rb +67 -0
  683. data/lib/datadog/tracing/contrib/sucker_punch/configuration/settings.rb +10 -7
  684. data/lib/datadog/tracing/contrib/sucker_punch/exception_handler.rb +1 -1
  685. data/lib/datadog/tracing/contrib/sucker_punch/ext.rb +14 -14
  686. data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +0 -2
  687. data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +0 -2
  688. data/lib/datadog/tracing/contrib/sucker_punch/patcher.rb +1 -2
  689. data/lib/datadog/tracing/contrib/utils/database.rb +4 -4
  690. data/lib/datadog/tracing/contrib/utils/quantization/hash.rb +0 -2
  691. data/lib/datadog/tracing/contrib/utils/quantization/http.rb +92 -14
  692. data/lib/datadog/tracing/contrib.rb +5 -1
  693. data/lib/datadog/tracing/correlation.rb +42 -14
  694. data/lib/datadog/tracing/diagnostics/environment_logger.rb +165 -0
  695. data/lib/datadog/{core → tracing}/diagnostics/ext.rb +21 -26
  696. data/lib/datadog/tracing/diagnostics/health.rb +40 -0
  697. data/lib/datadog/tracing/distributed/b3_multi.rb +72 -0
  698. data/lib/datadog/tracing/distributed/b3_single.rb +68 -0
  699. data/lib/datadog/tracing/distributed/datadog.rb +199 -0
  700. data/lib/datadog/tracing/distributed/datadog_tags_codec.rb +84 -0
  701. data/lib/datadog/tracing/distributed/fetcher.rb +21 -0
  702. data/lib/datadog/tracing/distributed/headers/ext.rb +19 -16
  703. data/lib/datadog/tracing/distributed/helpers.rb +26 -39
  704. data/lib/datadog/tracing/distributed/none.rb +18 -0
  705. data/lib/datadog/tracing/distributed/propagation.rb +127 -0
  706. data/lib/datadog/tracing/distributed/trace_context.rb +415 -0
  707. data/lib/datadog/tracing/event.rb +0 -4
  708. data/lib/datadog/tracing/flush.rb +58 -36
  709. data/lib/datadog/tracing/metadata/analytics.rb +1 -1
  710. data/lib/datadog/tracing/metadata/errors.rb +1 -1
  711. data/lib/datadog/tracing/metadata/ext.rb +29 -14
  712. data/lib/datadog/tracing/metadata/tagging.rb +17 -4
  713. data/lib/datadog/tracing/metadata.rb +1 -1
  714. data/lib/datadog/tracing/pipeline/span_filter.rb +1 -1
  715. data/lib/datadog/tracing/pipeline/span_processor.rb +1 -1
  716. data/lib/datadog/tracing/pipeline.rb +0 -4
  717. data/lib/datadog/tracing/propagation/http.rb +4 -99
  718. data/lib/datadog/tracing/remote.rb +78 -0
  719. data/lib/datadog/tracing/runtime/metrics.rb +1 -3
  720. data/lib/datadog/tracing/sampling/all_sampler.rb +1 -1
  721. data/lib/datadog/tracing/sampling/ext.rb +30 -1
  722. data/lib/datadog/tracing/sampling/matcher.rb +1 -1
  723. data/lib/datadog/tracing/sampling/priority_sampler.rb +58 -5
  724. data/lib/datadog/tracing/sampling/rate_by_key_sampler.rb +8 -11
  725. data/lib/datadog/tracing/sampling/rate_by_service_sampler.rb +29 -8
  726. data/lib/datadog/tracing/sampling/rate_limiter.rb +3 -2
  727. data/lib/datadog/tracing/sampling/rate_sampler.rb +23 -10
  728. data/lib/datadog/tracing/sampling/rule.rb +0 -4
  729. data/lib/datadog/tracing/sampling/rule_sampler.rb +33 -7
  730. data/lib/datadog/tracing/sampling/sampler.rb +0 -2
  731. data/lib/datadog/tracing/sampling/span/ext.rb +25 -0
  732. data/lib/datadog/tracing/sampling/span/matcher.rb +9 -0
  733. data/lib/datadog/tracing/sampling/span/rule.rb +82 -0
  734. data/lib/datadog/tracing/sampling/span/rule_parser.rb +104 -0
  735. data/lib/datadog/tracing/sampling/span/sampler.rb +77 -0
  736. data/lib/datadog/tracing/span.rb +3 -21
  737. data/lib/datadog/tracing/span_operation.rb +8 -24
  738. data/lib/datadog/tracing/sync_writer.rb +4 -6
  739. data/lib/datadog/tracing/trace_digest.rb +120 -3
  740. data/lib/datadog/tracing/trace_operation.rb +61 -13
  741. data/lib/datadog/tracing/trace_segment.rb +20 -7
  742. data/lib/datadog/tracing/tracer.rb +46 -10
  743. data/lib/datadog/tracing/transport/http/api/instance.rb +37 -0
  744. data/lib/datadog/tracing/transport/http/api/spec.rb +19 -0
  745. data/lib/datadog/tracing/transport/http/api.rb +43 -0
  746. data/lib/datadog/tracing/transport/http/builder.rb +162 -0
  747. data/lib/datadog/tracing/transport/http/client.rb +57 -0
  748. data/lib/datadog/tracing/transport/http/statistics.rb +47 -0
  749. data/lib/datadog/tracing/transport/http/traces.rb +152 -0
  750. data/lib/datadog/tracing/transport/http.rb +124 -0
  751. data/lib/datadog/tracing/transport/io/client.rb +89 -0
  752. data/lib/datadog/tracing/transport/io/response.rb +27 -0
  753. data/lib/datadog/tracing/transport/io/traces.rb +101 -0
  754. data/lib/datadog/tracing/transport/io.rb +30 -0
  755. data/lib/datadog/tracing/transport/serializable_trace.rb +126 -0
  756. data/lib/datadog/tracing/transport/statistics.rb +77 -0
  757. data/lib/datadog/tracing/transport/trace_formatter.rb +209 -0
  758. data/lib/datadog/tracing/transport/traces.rb +224 -0
  759. data/lib/datadog/tracing/utils.rb +83 -0
  760. data/lib/datadog/tracing/workers/trace_writer.rb +6 -7
  761. data/lib/datadog/tracing/workers.rb +4 -6
  762. data/lib/datadog/tracing/writer.rb +12 -6
  763. data/lib/datadog/tracing.rb +1 -1
  764. data/lib/ddtrace/auto_instrument.rb +1 -1
  765. data/lib/ddtrace/auto_instrument_base.rb +1 -1
  766. data/lib/ddtrace/profiling/preload.rb +0 -2
  767. data/lib/ddtrace/transport/ext.rb +21 -15
  768. data/lib/ddtrace/version.rb +14 -15
  769. data/lib/ddtrace.rb +3 -5
  770. metadata +230 -113
  771. data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time.c +0 -390
  772. data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time.h +0 -6
  773. data/lib/datadog/appsec/assets/waf_rules/risky.json +0 -1499
  774. data/lib/datadog/appsec/contrib/configuration/settings.rb +0 -20
  775. data/lib/datadog/appsec/contrib/rack/configuration/settings.rb +0 -22
  776. data/lib/datadog/appsec/contrib/rack/request.rb +0 -58
  777. data/lib/datadog/appsec/contrib/rack/response.rb +0 -24
  778. data/lib/datadog/appsec/contrib/rails/configuration/settings.rb +0 -22
  779. data/lib/datadog/appsec/contrib/sinatra/configuration/settings.rb +0 -22
  780. data/lib/datadog/ci/configuration/components.rb +0 -32
  781. data/lib/datadog/ci/configuration/settings.rb +0 -53
  782. data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +0 -33
  783. data/lib/datadog/ci/contrib/cucumber/ext.rb +0 -22
  784. data/lib/datadog/ci/contrib/cucumber/formatter.rb +0 -94
  785. data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +0 -28
  786. data/lib/datadog/ci/contrib/cucumber/integration.rb +0 -49
  787. data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +0 -33
  788. data/lib/datadog/ci/contrib/rspec/example.rb +0 -70
  789. data/lib/datadog/ci/contrib/rspec/ext.rb +0 -21
  790. data/lib/datadog/ci/contrib/rspec/integration.rb +0 -50
  791. data/lib/datadog/ci/contrib/rspec/patcher.rb +0 -27
  792. data/lib/datadog/ci/ext/app_types.rb +0 -11
  793. data/lib/datadog/ci/ext/environment.rb +0 -505
  794. data/lib/datadog/ci/ext/settings.rb +0 -12
  795. data/lib/datadog/ci/ext/test.rb +0 -37
  796. data/lib/datadog/ci/extensions.rb +0 -19
  797. data/lib/datadog/ci/flush.rb +0 -38
  798. data/lib/datadog/ci/test.rb +0 -83
  799. data/lib/datadog/ci.rb +0 -20
  800. data/lib/datadog/core/configuration/dependency_resolver.rb +0 -28
  801. data/lib/datadog/core/configuration/option_definition_set.rb +0 -22
  802. data/lib/datadog/core/configuration/option_set.rb +0 -10
  803. data/lib/datadog/core/utils/object_set.rb +0 -43
  804. data/lib/datadog/core/utils/string_table.rb +0 -49
  805. data/lib/datadog/profiling/backtrace_location.rb +0 -34
  806. data/lib/datadog/profiling/buffer.rb +0 -43
  807. data/lib/datadog/profiling/collectors/cpu_and_wall_time.rb +0 -27
  808. data/lib/datadog/profiling/collectors/old_stack.rb +0 -298
  809. data/lib/datadog/profiling/encoding/profile.rb +0 -43
  810. data/lib/datadog/profiling/event.rb +0 -15
  811. data/lib/datadog/profiling/events/stack.rb +0 -82
  812. data/lib/datadog/profiling/old_ext.rb +0 -42
  813. data/lib/datadog/profiling/old_recorder.rb +0 -101
  814. data/lib/datadog/profiling/pprof/builder.rb +0 -127
  815. data/lib/datadog/profiling/pprof/converter.rb +0 -104
  816. data/lib/datadog/profiling/pprof/message_set.rb +0 -16
  817. data/lib/datadog/profiling/pprof/payload.rb +0 -20
  818. data/lib/datadog/profiling/pprof/pprof.proto +0 -212
  819. data/lib/datadog/profiling/pprof/pprof_pb.rb +0 -83
  820. data/lib/datadog/profiling/pprof/stack_sample.rb +0 -141
  821. data/lib/datadog/profiling/pprof/string_table.rb +0 -12
  822. data/lib/datadog/profiling/pprof/template.rb +0 -120
  823. data/lib/datadog/profiling/trace_identifiers/ddtrace.rb +0 -45
  824. data/lib/datadog/profiling/trace_identifiers/helper.rb +0 -47
  825. data/lib/datadog/profiling/transport/http/api/endpoint.rb +0 -85
  826. data/lib/datadog/profiling/transport/http/api/instance.rb +0 -38
  827. data/lib/datadog/profiling/transport/http/api/spec.rb +0 -42
  828. data/lib/datadog/profiling/transport/http/api.rb +0 -45
  829. data/lib/datadog/profiling/transport/http/builder.rb +0 -30
  830. data/lib/datadog/profiling/transport/http/client.rb +0 -37
  831. data/lib/datadog/profiling/transport/http/response.rb +0 -21
  832. data/lib/datadog/profiling/transport/http.rb +0 -118
  833. data/lib/datadog/tracing/contrib/sinatra/headers.rb +0 -35
  834. data/lib/datadog/tracing/distributed/headers/b3.rb +0 -55
  835. data/lib/datadog/tracing/distributed/headers/b3_single.rb +0 -67
  836. data/lib/datadog/tracing/distributed/headers/datadog.rb +0 -52
  837. data/lib/datadog/tracing/distributed/headers/parser.rb +0 -37
  838. data/lib/datadog/tracing/distributed/metadata/b3.rb +0 -55
  839. data/lib/datadog/tracing/distributed/metadata/b3_single.rb +0 -66
  840. data/lib/datadog/tracing/distributed/metadata/datadog.rb +0 -73
  841. data/lib/datadog/tracing/distributed/metadata/parser.rb +0 -34
  842. data/lib/datadog/tracing/propagation/grpc.rb +0 -98
  843. data/lib/ddtrace/transport/http/adapters/net.rb +0 -158
  844. data/lib/ddtrace/transport/http/adapters/registry.rb +0 -27
  845. data/lib/ddtrace/transport/http/adapters/test.rb +0 -87
  846. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +0 -79
  847. data/lib/ddtrace/transport/http/api/endpoint.rb +0 -29
  848. data/lib/ddtrace/transport/http/api/fallbacks.rb +0 -24
  849. data/lib/ddtrace/transport/http/api/instance.rb +0 -35
  850. data/lib/ddtrace/transport/http/api/map.rb +0 -16
  851. data/lib/ddtrace/transport/http/api/spec.rb +0 -17
  852. data/lib/ddtrace/transport/http/api.rb +0 -41
  853. data/lib/ddtrace/transport/http/builder.rb +0 -178
  854. data/lib/ddtrace/transport/http/client.rb +0 -54
  855. data/lib/ddtrace/transport/http/env.rb +0 -58
  856. data/lib/ddtrace/transport/http/response.rb +0 -58
  857. data/lib/ddtrace/transport/http/statistics.rb +0 -45
  858. data/lib/ddtrace/transport/http/traces.rb +0 -146
  859. data/lib/ddtrace/transport/http.rb +0 -121
  860. data/lib/ddtrace/transport/io/client.rb +0 -87
  861. data/lib/ddtrace/transport/io/response.rb +0 -25
  862. data/lib/ddtrace/transport/io/traces.rb +0 -101
  863. data/lib/ddtrace/transport/io.rb +0 -28
  864. data/lib/ddtrace/transport/parcel.rb +0 -22
  865. data/lib/ddtrace/transport/request.rb +0 -15
  866. data/lib/ddtrace/transport/response.rb +0 -62
  867. data/lib/ddtrace/transport/serializable_trace.rb +0 -118
  868. data/lib/ddtrace/transport/statistics.rb +0 -75
  869. data/lib/ddtrace/transport/trace_formatter.rb +0 -187
  870. 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
@@ -204,16 +207,27 @@ module Datadog
204
207
 
205
208
  # @public_api
206
209
  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
210
+ # @deprecated No longer does anything, and will be removed on dd-trace-rb 2.0.
211
+ #
212
+ # This was used prior to the GA of the new CPU Profiling 2.0 profiler. The CPU Profiling 2.0 profiler does not
213
+ # use or need this setting and thus it doesn't do anything.
214
+ option :max_events do |o|
215
+ o.after_set do
216
+ Datadog.logger.warn(
217
+ 'The profiling.advanced.max_events setting has been deprecated for removal and no ' \
218
+ 'longer does anything. Please remove it from your Datadog.configure block.'
219
+ )
220
+ end
221
+ end
211
222
 
212
223
  # Controls the maximum number of frames for each thread sampled. Can be tuned to avoid omitted frames in the
213
224
  # produced profiles. Increasing this may increase the overhead of profiling.
225
+ #
226
+ # @default `DD_PROFILING_MAX_FRAMES` environment variable, otherwise 400
214
227
  option :max_frames do |o|
215
- o.default { env_to_int(Profiling::Ext::ENV_MAX_FRAMES, 400) }
216
- o.lazy
228
+ o.type :int
229
+ o.env Profiling::Ext::ENV_MAX_FRAMES
230
+ o.default 400
217
231
  end
218
232
 
219
233
  # @public_api
@@ -225,40 +239,250 @@ module Datadog
225
239
  # @default `DD_PROFILING_ENDPOINT_COLLECTION_ENABLED` environment variable, otherwise `true`
226
240
  # @return [Boolean]
227
241
  option :enabled do |o|
228
- o.default { env_to_bool(Profiling::Ext::ENV_ENDPOINT_COLLECTION_ENABLED, true) }
229
- o.lazy
242
+ o.env Profiling::Ext::ENV_ENDPOINT_COLLECTION_ENABLED
243
+ o.default true
244
+ o.type :bool
230
245
  end
231
246
  end
232
247
  end
233
248
 
234
- # Disable gathering of names and versions of gems in use by the service, used to power grouping and
235
- # categorization of stack traces.
249
+ # Can be used to disable the gathering of names and versions of gems in use by the service, used to power
250
+ # grouping and categorization of stack traces.
236
251
  option :code_provenance_enabled, default: true
237
252
 
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.
253
+ # @deprecated No longer does anything, and will be removed on dd-trace-rb 2.0.
254
+ #
255
+ # This was added as a temporary support option in case of issues with the new `Profiling::HttpTransport` class
256
+ # but we're now confident it's working nicely so we've removed the old code path.
240
257
  option :legacy_transport_enabled do |o|
241
- o.default { env_to_bool('DD_PROFILING_LEGACY_TRANSPORT_ENABLED', false) }
242
- o.lazy
258
+ o.after_set do
259
+ Datadog.logger.warn(
260
+ 'The profiling.advanced.legacy_transport_enabled setting has been deprecated for removal and no ' \
261
+ 'longer does anything. Please remove it from your Datadog.configure block.'
262
+ )
263
+ end
243
264
  end
244
265
 
245
- # Forces enabling the new profiler. We do not yet recommend turning on this option.
266
+ # @deprecated No longer does anything, and will be removed on dd-trace-rb 2.0.
246
267
  #
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.
268
+ # This was used prior to the GA of the new CPU Profiling 2.0 profiler. Using CPU Profiling 2.0 is now the
269
+ # default and this doesn't do anything.
250
270
  option :force_enable_new_profiler do |o|
251
- o.default { env_to_bool('DD_PROFILING_FORCE_ENABLE_NEW', false) }
252
- o.lazy
271
+ o.after_set do
272
+ Datadog.logger.warn(
273
+ 'The profiling.advanced.force_enable_new_profiler setting has been deprecated for removal and no ' \
274
+ 'longer does anything. Please remove it from your Datadog.configure block.'
275
+ )
276
+ end
277
+ end
278
+
279
+ # @deprecated No longer does anything, and will be removed on dd-trace-rb 2.0.
280
+ #
281
+ # This was used prior to the GA of the new CPU Profiling 2.0 profiler. Using CPU Profiling 2.0 is now the
282
+ # default and this doesn't do anything.
283
+ option :force_enable_legacy_profiler do |o|
284
+ o.after_set do
285
+ Datadog.logger.warn(
286
+ 'The profiling.advanced.force_enable_legacy_profiler setting has been deprecated for removal and no ' \
287
+ 'longer does anything. Please remove it from your Datadog.configure block.'
288
+ )
289
+ end
290
+ end
291
+
292
+ # Forces enabling of profiling of time/resources spent in Garbage Collection.
293
+ #
294
+ # Note that setting this to "false" (or not setting it) will not prevent the feature from being
295
+ # being automatically enabled in the future.
296
+ #
297
+ # This feature defaults to off for two reasons:
298
+ # 1. Currently this feature can add a lot of overhead for GC-heavy workloads.
299
+ # 2. Although this feature is safe on Ruby 2.x, on Ruby 3.x it can break in applications that make use of
300
+ # Ractors due to two Ruby VM bugs:
301
+ # https://bugs.ruby-lang.org/issues/19112 AND https://bugs.ruby-lang.org/issues/18464.
302
+ # If you use Ruby 3.x and your application does not use Ractors (or if your Ruby has been patched), the
303
+ # feature is fully safe to enable and this toggle can be used to do so.
304
+ #
305
+ # We expect the once the above issues are overcome, we'll automatically enable the feature on fixed Ruby
306
+ # versions.
307
+ #
308
+ # @default `DD_PROFILING_FORCE_ENABLE_GC` environment variable, otherwise `false`
309
+ option :force_enable_gc_profiling do |o|
310
+ o.env 'DD_PROFILING_FORCE_ENABLE_GC'
311
+ o.type :bool
312
+ o.default false
313
+ end
314
+
315
+ # Can be used to enable/disable the Datadog::Profiling.allocation_count feature.
316
+ #
317
+ # This feature is now controlled via {:experimental_allocation_enabled}
318
+ option :allocation_counting_enabled do |o|
319
+ o.after_set do
320
+ Datadog.logger.warn(
321
+ 'The profiling.advanced.allocation_counting_enabled setting has been deprecated for removal and no ' \
322
+ 'longer does anything. Please remove it from your Datadog.configure block. ' \
323
+ 'Allocation counting is now controlled by the `experimental_allocation_enabled` setting instead.'
324
+ )
325
+ end
326
+ end
327
+
328
+ # Can be used to enable/disable collection of allocation profiles.
329
+ #
330
+ # This feature is alpha and disabled by default
331
+ #
332
+ # @warn This feature is not supported/safe in all Rubies. Details in {Datadog::Profiling::Component} but
333
+ # in summary, this should be supported on Ruby 2.x, 3.1.4+, 3.2.3+ and 3.3.0+. Enabling it on
334
+ # unsupported Rubies may result in unexpected behaviour, including crashes.
335
+ #
336
+ # @default `DD_PROFILING_EXPERIMENTAL_ALLOCATION_ENABLED` environment variable as a boolean, otherwise `false`
337
+ option :experimental_allocation_enabled do |o|
338
+ o.type :bool
339
+ o.env 'DD_PROFILING_EXPERIMENTAL_ALLOCATION_ENABLED'
340
+ o.default false
341
+ end
342
+
343
+ # Can be used to enable/disable the collection of heap profiles.
344
+ #
345
+ # This feature is alpha and disabled by default
346
+ #
347
+ # @warn To enable heap profiling you are required to also enable allocation profiling.
348
+ #
349
+ # @default `DD_PROFILING_EXPERIMENTAL_HEAP_ENABLED` environment variable as a boolean, otherwise `false`
350
+ option :experimental_heap_enabled do |o|
351
+ o.type :bool
352
+ o.env 'DD_PROFILING_EXPERIMENTAL_HEAP_ENABLED'
353
+ o.default false
354
+ end
355
+
356
+ # Can be used to enable/disable the collection of heap size profiles.
357
+ #
358
+ # This feature is alpha and enabled by default when heap profiling is enabled.
359
+ #
360
+ # @warn To enable heap size profiling you are required to also enable allocation and heap profiling.
361
+ #
362
+ # @default `DD_PROFILING_EXPERIMENTAL_HEAP_SIZE_ENABLED` environment variable as a boolean, otherwise
363
+ # whatever the value of DD_PROFILING_EXPERIMENTAL_HEAP_ENABLED is.
364
+ option :experimental_heap_size_enabled do |o|
365
+ o.type :bool
366
+ o.env 'DD_PROFILING_EXPERIMENTAL_HEAP_SIZE_ENABLED'
367
+ o.default true # This gets ANDed with experimental_heap_enabled in the profiler component.
368
+ end
369
+
370
+ # Can be used to configure the allocation sampling rate: a sample will be collected every x allocations.
371
+ #
372
+ # The lower the value, the more accuracy in allocation and heap tracking but the bigger the overhead. In
373
+ # particular, a value of 1 will sample ALL allocations.
374
+ #
375
+ # @default `DD_PROFILING_EXPERIMENTAL_ALLOCATION_SAMPLE_RATE` environment variable, otherwise `50`.
376
+ option :experimental_allocation_sample_rate do |o|
377
+ o.type :int
378
+ o.env 'DD_PROFILING_EXPERIMENTAL_ALLOCATION_SAMPLE_RATE'
379
+ o.default 50
380
+ end
381
+
382
+ # Can be used to configure the heap sampling rate: a heap sample will be collected for every x allocation
383
+ # samples.
384
+ #
385
+ # The lower the value, the more accuracy in heap tracking but the bigger the overhead. In particular, a
386
+ # value of 1 will track ALL allocations samples for heap profiles.
387
+ #
388
+ # The effective heap sampling rate in terms of allocations (not allocation samples) can be calculated via
389
+ # effective_heap_sample_rate = allocation_sample_rate * heap_sample_rate.
390
+ #
391
+ # @default `DD_PROFILING_EXPERIMENTAL_HEAP_SAMPLE_RATE` environment variable, otherwise `10`.
392
+ option :experimental_heap_sample_rate do |o|
393
+ o.type :int
394
+ o.env 'DD_PROFILING_EXPERIMENTAL_HEAP_SAMPLE_RATE'
395
+ o.default 10
396
+ end
397
+
398
+ # Can be used to disable checking which version of `libmysqlclient` is being used by the `mysql2` gem.
399
+ #
400
+ # This setting is only used when the `mysql2` gem is installed.
401
+ #
402
+ # @default `DD_PROFILING_SKIP_MYSQL2_CHECK` environment variable, otherwise `false`
403
+ option :skip_mysql2_check do |o|
404
+ o.type :bool
405
+ o.env 'DD_PROFILING_SKIP_MYSQL2_CHECK'
406
+ o.default false
407
+ end
408
+
409
+ # Enables data collection for the timeline feature. This is still experimental and not recommended yet.
410
+ #
411
+ # @default `DD_PROFILING_EXPERIMENTAL_TIMELINE_ENABLED` environment variable as a boolean, otherwise `false`
412
+ option :experimental_timeline_enabled do |o|
413
+ o.type :bool
414
+ o.env 'DD_PROFILING_EXPERIMENTAL_TIMELINE_ENABLED'
415
+ o.default false
416
+ end
417
+
418
+ # The profiler gathers data by sending `SIGPROF` unix signals to Ruby application threads.
419
+ #
420
+ # Sending `SIGPROF` is a common profiling approach, and may cause system calls from native
421
+ # extensions/libraries to be interrupted with a system
422
+ # [EINTR error code.](https://man7.org/linux/man-pages/man7/signal.7.html#:~:text=Interruption%20of%20system%20calls%20and%20library%20functions%20by%20signal%20handlers)
423
+ # Rarely, native extensions or libraries called by them may have missing or incorrect error handling for the
424
+ # `EINTR` error code.
425
+ #
426
+ # The "no signals" workaround, when enabled, enables an alternative mode for the profiler where it does not
427
+ # send `SIGPROF` unix signals. The downside of this approach is that the profiler data will have lower
428
+ # quality.
429
+ #
430
+ # This workaround is automatically enabled when gems that are known to have issues handling
431
+ # `EINTR` error codes are detected. If you suspect you may be seeing an issue due to the profiler's use of
432
+ # signals, you can try manually enabling this mode as a fallback.
433
+ # Please also report these issues to us on <https://github.com/DataDog/dd-trace-rb/issues/new>, so we can
434
+ # work with the gem authors to fix them!
435
+ #
436
+ # @default `DD_PROFILING_NO_SIGNALS_WORKAROUND_ENABLED` environment variable as a boolean, otherwise `:auto`
437
+ option :no_signals_workaround_enabled do |o|
438
+ o.env 'DD_PROFILING_NO_SIGNALS_WORKAROUND_ENABLED'
439
+ o.default :auto
440
+ o.env_parser do |value|
441
+ if value
442
+ value = value.strip.downcase
443
+ ['true', '1'].include?(value)
444
+ end
445
+ end
446
+ end
447
+
448
+ # Configures how much wall-time overhead the profiler targets. The profiler will dynamically adjust the
449
+ # interval between samples it takes so as to try and maintain the property that it spends no longer than
450
+ # this amount of wall-clock time profiling. For example, with the default value of 2%, the profiler will
451
+ # try and cause no more than 1.2 seconds per minute of overhead. Decreasing this value will reduce the
452
+ # accuracy of the data collected. Increasing will impact the application.
453
+ #
454
+ # We do not recommend tweaking this value.
455
+ #
456
+ # This value should be a percentage i.e. a number between 0 and 100, not 0 and 1.
457
+ #
458
+ # @default `DD_PROFILING_OVERHEAD_TARGET_PERCENTAGE` as a float, otherwise 2.0
459
+ option :overhead_target_percentage do |o|
460
+ o.type :float
461
+ o.env 'DD_PROFILING_OVERHEAD_TARGET_PERCENTAGE'
462
+ o.default 2.0
463
+ end
464
+
465
+ # Controls how often the profiler reports data, in seconds. Cannot be lower than 60 seconds.
466
+ #
467
+ # We do not recommend tweaking this value.
468
+ #
469
+ # @default `DD_PROFILING_UPLOAD_PERIOD` environment variable, otherwise 60
470
+ option :upload_period_seconds do |o|
471
+ o.type :int
472
+ o.env 'DD_PROFILING_UPLOAD_PERIOD'
473
+ o.default 60
253
474
  end
254
475
  end
255
476
 
256
477
  # @public_api
257
478
  settings :upload do
479
+ # Network timeout for reporting profiling data to Datadog.
480
+ #
481
+ # @default `DD_PROFILING_UPLOAD_TIMEOUT` environment variable, otherwise `30.0`
258
482
  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
483
+ o.type :float
484
+ o.env Profiling::Ext::ENV_UPLOAD_TIMEOUT
485
+ o.default 30.0
262
486
  end
263
487
  end
264
488
  end
@@ -271,11 +495,12 @@ module Datadog
271
495
  # @default `DD_RUNTIME_METRICS_ENABLED` environment variable, otherwise `false`
272
496
  # @return [Boolean]
273
497
  option :enabled do |o|
274
- o.default { env_to_bool(Core::Runtime::Ext::Metrics::ENV_ENABLED, false) }
275
- o.lazy
498
+ o.env Core::Runtime::Ext::Metrics::ENV_ENABLED
499
+ o.default false
500
+ o.type :bool
276
501
  end
277
502
 
278
- option :opts, default: ->(_i) { {} }, lazy: true
503
+ option :opts, default: {}, type: :hash
279
504
  option :statsd
280
505
  end
281
506
 
@@ -284,9 +509,12 @@ module Datadog
284
509
  # @default `DD_SERVICE` environment variable, otherwise the program name (e.g. `'ruby'`, `'rails'`, `'pry'`)
285
510
  # @return [String]
286
511
  option :service do |o|
512
+ # DEV-2.0: Remove this conversion for symbol.
513
+ o.setter { |v| v.to_s if v }
514
+
287
515
  # 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
516
+ o.env Core::Environment::Ext::ENV_SERVICE
517
+ o.default Core::Environment::Ext::FALLBACK_SERVICE_NAME
290
518
 
291
519
  # 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
520
  # nil instead so that one can do
@@ -308,8 +536,8 @@ module Datadog
308
536
  # @default `DD_SITE` environment variable, otherwise `nil` which sends data to `app.datadoghq.com`
309
537
  # @return [String,nil]
310
538
  option :site do |o|
311
- o.default { ENV.fetch(Core::Environment::Ext::ENV_SITE, nil) }
312
- o.lazy
539
+ o.type :string, nilable: true
540
+ o.env Core::Environment::Ext::ENV_SITE
313
541
  end
314
542
 
315
543
  # Default tags
@@ -319,44 +547,57 @@ module Datadog
319
547
  # @default `DD_TAGS` environment variable (in the format `'tag1:value1,tag2:value2'`), otherwise `{}`
320
548
  # @return [Hash<String,String>]
321
549
  option :tags do |o|
322
- o.default do
323
- tags = {}
550
+ o.type :hash, nilable: true
551
+ o.env Core::Environment::Ext::ENV_TAGS
552
+ o.env_parser do |env_value|
553
+ values = if env_value.include?(',')
554
+ env_value.split(',')
555
+ else
556
+ env_value.split(' ') # rubocop:disable Style/RedundantArgument
557
+ end
558
+
559
+ values.map! do |v|
560
+ v.gsub!(/\A[\s,]*|[\s,]*\Z/, '')
561
+
562
+ v.empty? ? nil : v
563
+ end
324
564
 
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
565
+ values.compact!
566
+ values.each_with_object({}) do |tag, tags|
567
+ key, value = tag.split(':', 2)
568
+ tags[key] = value if value && !value.empty?
329
569
  end
570
+ end
571
+ o.setter do |new_value, old_value|
572
+ raw_tags = new_value || {}
330
573
 
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?
574
+ env_value = env
575
+ version_value = version
576
+ service_name = service_without_fallback
334
577
 
335
- tags
336
- end
578
+ # Override tags if defined
579
+ raw_tags[Core::Environment::Ext::TAG_ENV] = env_value unless env_value.nil?
580
+ raw_tags[Core::Environment::Ext::TAG_VERSION] = version_value unless version_value.nil?
337
581
 
338
- o.setter do |new_value, old_value|
339
582
  # Coerce keys to strings
340
- string_tags = new_value.collect { |k, v| [k.to_s, v] }.to_h
583
+ string_tags = raw_tags.collect { |k, v| [k.to_s, v] }.to_h
341
584
 
342
585
  # Cross-populate tag values with other settings
343
- if env.nil? && string_tags.key?(Core::Environment::Ext::TAG_ENV)
586
+ if env_value.nil? && string_tags.key?(Core::Environment::Ext::TAG_ENV)
344
587
  self.env = string_tags[Core::Environment::Ext::TAG_ENV]
345
588
  end
346
589
 
347
- if version.nil? && string_tags.key?(Core::Environment::Ext::TAG_VERSION)
590
+ if version_value.nil? && string_tags.key?(Core::Environment::Ext::TAG_VERSION)
348
591
  self.version = string_tags[Core::Environment::Ext::TAG_VERSION]
349
592
  end
350
593
 
351
- if service_without_fallback.nil? && string_tags.key?(Core::Environment::Ext::TAG_SERVICE)
594
+ if service_name.nil? && string_tags.key?(Core::Environment::Ext::TAG_SERVICE)
352
595
  self.service = string_tags[Core::Environment::Ext::TAG_SERVICE]
353
596
  end
354
597
 
355
598
  # Merge with previous tags
356
599
  (old_value || {}).merge(string_tags)
357
600
  end
358
-
359
- o.lazy
360
601
  end
361
602
 
362
603
  # 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 +610,10 @@ module Datadog
369
610
  # @default `->{ Time.now }`
370
611
  # @return [Proc<Time>]
371
612
  option :time_now_provider do |o|
372
- o.default { ::Time.now }
613
+ o.default_proc { ::Time.now }
614
+ o.type :proc
373
615
 
374
- o.on_set do |time_provider|
616
+ o.after_set do |time_provider|
375
617
  Core::Utils::Time.now_provider = time_provider
376
618
  end
377
619
 
@@ -384,269 +626,141 @@ module Datadog
384
626
  end
385
627
  end
386
628
 
387
- # Tracer specific configurations.
629
+ # The `version` tag in Datadog. Use it to enable [Deployment Tracking](https://docs.datadoghq.com/tracing/deployment_tracking/).
630
+ # @see https://docs.datadoghq.com/getting_started/tagging/unified_service_tagging
631
+ # @default `DD_VERSION` environment variable, otherwise `nils`
632
+ # @return [String,nil]
633
+ option :version do |o|
634
+ # NOTE: version also gets set as a side effect of tags. See the WORKAROUND note in #initialize for details.
635
+ o.type :string, nilable: true
636
+ o.env Core::Environment::Ext::ENV_VERSION
637
+ end
638
+
639
+ # Client-side telemetry configuration
388
640
  # @public_api
389
- settings :tracing do
390
- # Legacy [App Analytics](https://docs.datadoghq.com/tracing/legacy_app_analytics/) configuration.
641
+ settings :telemetry do
642
+ # Enable telemetry collection. This allows telemetry events to be emitted to the telemetry API.
391
643
  #
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
644
+ # @default `DD_INSTRUMENTATION_TELEMETRY_ENABLED` environment variable, otherwise `true`.
645
+ # Can be disabled as documented [here](https://docs.datadoghq.com/tracing/configure_data_security/#telemetry-collection).
646
+ # By default, telemetry is disabled in development environments.
647
+ # @return [Boolean]
648
+ option :enabled do |o|
649
+ o.env Core::Telemetry::Ext::ENV_ENABLED
650
+ o.default do
651
+ if Datadog::Core::Environment::Execution.development?
652
+ Datadog.logger.debug do
653
+ 'Development environment detected, disabling Telemetry. ' \
654
+ 'You can enable it with DD_INSTRUMENTATION_TELEMETRY_ENABLED=true.'
655
+ end
656
+ false
657
+ else
658
+ true
659
+ end
402
660
  end
661
+ o.type :bool
403
662
  end
404
663
 
405
- # [Distributed Tracing](https://docs.datadoghq.com/tracing/setup_overview/setup/ruby/#distributed-tracing) propagation
406
- # style configuration.
664
+ # The interval in seconds when telemetry must be sent.
407
665
  #
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).
666
+ # This method is used internally, for testing purposes only.
412
667
  #
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
- )
455
- end
456
-
457
- o.lazy
458
- end
668
+ # @default `DD_TELEMETRY_HEARTBEAT_INTERVAL` environment variable, otherwise `60`.
669
+ # @return [Float]
670
+ # @!visibility private
671
+ option :heartbeat_interval_seconds do |o|
672
+ o.type :float
673
+ o.env Core::Telemetry::Ext::ENV_HEARTBEAT_INTERVAL
674
+ o.default 60.0
459
675
  end
460
676
 
461
- # Enable trace collection and span generation.
677
+ # The install id of the application.
462
678
  #
463
- # You can use this option to disable tracing without having to
464
- # remove the library as a whole.
679
+ # This method is used internally, by library injection.
465
680
  #
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
681
+ # @default `DD_INSTRUMENTATION_INSTALL_ID` environment variable, otherwise `nil`.
682
+ # @return [String,nil]
683
+ # @!visibility private
684
+ option :install_id do |o|
685
+ o.type :string, nilable: true
686
+ o.env Core::Telemetry::Ext::ENV_INSTALL_ID
471
687
  end
472
688
 
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.
689
+ # The install type of the application.
478
690
  #
479
- # This option will not return the live tracer instance: it only holds a custom tracing instance, if any.
691
+ # This method is used internally, by library injection.
480
692
  #
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
693
+ # @default `DD_INSTRUMENTATION_INSTALL_TYPE` environment variable, otherwise `nil`.
694
+ # @return [String,nil]
695
+ # @!visibility private
696
+ option :install_type do |o|
697
+ o.type :string, nilable: true
698
+ o.env Core::Telemetry::Ext::ENV_INSTALL_TYPE
493
699
  end
494
700
 
495
- # Configures an alternative trace transport behavior, where
496
- # traces can be sent to the agent and backend before all spans
497
- # have finished.
701
+ # The install time of the application.
498
702
  #
499
- # This is useful for long-running jobs or very large traces.
703
+ # This method is used internally, by library injection.
500
704
  #
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
523
- end
524
-
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
534
- end
535
-
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
568
- end
705
+ # @default `DD_INSTRUMENTATION_INSTALL_TIME` environment variable, otherwise `nil`.
706
+ # @return [String,nil]
707
+ # @!visibility private
708
+ option :install_time do |o|
709
+ o.type :string, nilable: true
710
+ o.env Core::Telemetry::Ext::ENV_INSTALL_TIME
569
711
  end
712
+ end
570
713
 
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
714
+ # Remote configuration
715
+ # @public_api
716
+ settings :remote do
717
+ # Enable remote configuration. This allows fetching of remote configuration for live updates.
718
+ #
719
+ # @default `DD_REMOTE_CONFIGURATION_ENABLED` environment variable, otherwise `true`.
720
+ # By default, remote configuration is disabled in development environments.
721
+ # @return [Boolean]
722
+ option :enabled do |o|
723
+ o.env Core::Remote::Ext::ENV_ENABLED
724
+ o.default do
725
+ if Datadog::Core::Environment::Execution.development?
726
+ Datadog.logger.debug do
727
+ 'Development environment detected, disabling Remote Configuration. ' \
728
+ 'You can enable it with DD_REMOTE_CONFIGURATION_ENABLED=true.'
729
+ end
730
+ false
731
+ else
732
+ true
733
+ end
593
734
  end
735
+ o.type :bool
594
736
  end
595
737
 
596
- # @see file:docs/GettingStarted.md#configuring-the-transport-layer Configuring the transport layer
738
+ # Tune remote configuration polling interval.
739
+ # This is a private setting. Do not use outside of Datadog. It might change at any point in time.
597
740
  #
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.
607
- #
608
- # This option is recommended for internal use only.
609
- #
610
- # @default `nil`
611
- # @return [Object,nil]
612
- option :writer
741
+ # @default `DD_REMOTE_CONFIG_POLL_INTERVAL_SECONDS` environment variable, otherwise `5.0` seconds.
742
+ # @return [Float]
743
+ # @!visibility private
744
+ option :poll_interval_seconds do |o|
745
+ o.env Core::Remote::Ext::ENV_POLL_INTERVAL_SECONDS
746
+ o.type :float
747
+ o.default 5.0
748
+ end
613
749
 
614
- # A custom {Hash} with keyword options to be passed to {Datadog::Tracing::Writer#initialize}.
750
+ # Declare service name to bind to remote configuration. Use when
751
+ # DD_SERVICE does not match the correct integration for which remote
752
+ # configuration applies.
615
753
  #
616
- # This option is recommended for internal use only.
617
- #
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
754
+ # @default `nil`.
755
+ # @return [String,nil]
756
+ option :service
631
757
  end
632
758
 
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
759
+ # TODO: Tracing should manage its own settings.
760
+ # Keep this extension here for now to keep things working.
761
+ extend Datadog::Tracing::Configuration::Settings
646
762
  end
647
763
  # rubocop:enable Metrics/BlockLength
648
- # rubocop:enable Metrics/ClassLength
649
- # rubocop:enable Layout/LineLength
650
764
  end
651
765
  end
652
766
  end