datadog 2.36.0 → 2.40.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 (854) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +119 -1
  3. data/bin/ddprofrb +4 -4
  4. data/ext/datadog_profiling_native_extension/clock_id_from_mach.c +5 -12
  5. data/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +105 -18
  6. data/ext/datadog_profiling_native_extension/collectors_idle_sampling_helper.c +17 -3
  7. data/ext/datadog_profiling_native_extension/collectors_stack.c +228 -162
  8. data/ext/datadog_profiling_native_extension/collectors_stack.h +16 -3
  9. data/ext/datadog_profiling_native_extension/collectors_thread_context.c +357 -217
  10. data/ext/datadog_profiling_native_extension/collectors_thread_context.h +3 -0
  11. data/ext/datadog_profiling_native_extension/crashtracking_runtime_stacks.c +5 -4
  12. data/ext/datadog_profiling_native_extension/datadog_ruby_common.c +19 -11
  13. data/ext/datadog_profiling_native_extension/datadog_ruby_common.h +7 -0
  14. data/ext/datadog_profiling_native_extension/extconf.rb +24 -11
  15. data/ext/datadog_profiling_native_extension/private_vm_api_access.c +261 -62
  16. data/ext/datadog_profiling_native_extension/private_vm_api_access.h +17 -9
  17. data/ext/datadog_profiling_native_extension/ruby_helpers.c +7 -0
  18. data/ext/datadog_profiling_native_extension/setup_signal_handler.c +2 -0
  19. data/ext/datadog_profiling_native_extension/time_helpers.h +12 -7
  20. data/ext/libdatadog_api/datadog_ruby_common.c +19 -11
  21. data/ext/libdatadog_api/datadog_ruby_common.h +7 -0
  22. data/ext/libdatadog_api/di.c +76 -0
  23. data/ext/libdatadog_api/extconf.rb +29 -23
  24. data/ext/libdatadog_api/feature_flags.c +26 -0
  25. data/ext/libdatadog_api/init.c +4 -0
  26. data/ext/libdatadog_api/trace_exporter.c +974 -0
  27. data/ext/libdatadog_api/trace_exporter.h +5 -0
  28. data/ext/libdatadog_extconf_helpers.rb +9 -9
  29. data/lib/datadog/ai_guard/api_client.rb +8 -6
  30. data/lib/datadog/ai_guard/component.rb +10 -10
  31. data/lib/datadog/ai_guard/evaluation.rb +1 -0
  32. data/lib/datadog/ai_guard/ext.rb +2 -0
  33. data/lib/datadog/appsec/actions_handler/serializable_backtrace.rb +16 -16
  34. data/lib/datadog/appsec/actions_handler.rb +6 -6
  35. data/lib/datadog/appsec/anonymizer.rb +1 -1
  36. data/lib/datadog/appsec/api_security/endpoint_collection/grape_route_serializer.rb +1 -1
  37. data/lib/datadog/appsec/api_security/endpoint_collection/rails_collector.rb +6 -6
  38. data/lib/datadog/appsec/api_security/endpoint_collection/sinatra_route_serializer.rb +1 -1
  39. data/lib/datadog/appsec/api_security/route_extractor.rb +18 -15
  40. data/lib/datadog/appsec/api_security/sampler.rb +5 -5
  41. data/lib/datadog/appsec/api_security.rb +1 -1
  42. data/lib/datadog/appsec/assets.rb +7 -7
  43. data/lib/datadog/appsec/autoload.rb +3 -3
  44. data/lib/datadog/appsec/component.rb +15 -15
  45. data/lib/datadog/appsec/compressed_json.rb +6 -6
  46. data/lib/datadog/appsec/configuration.rb +73 -58
  47. data/lib/datadog/appsec/context.rb +9 -7
  48. data/lib/datadog/appsec/contrib/active_record/instrumentation.rb +6 -6
  49. data/lib/datadog/appsec/contrib/active_record/integration.rb +4 -4
  50. data/lib/datadog/appsec/contrib/active_record/patcher.rb +4 -4
  51. data/lib/datadog/appsec/contrib/aws_lambda/gateway/watcher.rb +7 -7
  52. data/lib/datadog/appsec/contrib/aws_lambda/integration.rb +2 -2
  53. data/lib/datadog/appsec/contrib/aws_lambda/patcher.rb +2 -2
  54. data/lib/datadog/appsec/contrib/aws_lambda/waf_addresses.rb +36 -34
  55. data/lib/datadog/appsec/contrib/devise/data_extractor.rb +3 -3
  56. data/lib/datadog/appsec/contrib/devise/ext.rb +20 -20
  57. data/lib/datadog/appsec/contrib/devise/integration.rb +4 -4
  58. data/lib/datadog/appsec/contrib/devise/patcher.rb +8 -8
  59. data/lib/datadog/appsec/contrib/devise/patches/signin_tracking_patch.rb +12 -12
  60. data/lib/datadog/appsec/contrib/devise/patches/signup_tracking_patch.rb +8 -8
  61. data/lib/datadog/appsec/contrib/devise/tracking_middleware.rb +24 -9
  62. data/lib/datadog/appsec/contrib/excon/integration.rb +4 -4
  63. data/lib/datadog/appsec/contrib/excon/patcher.rb +1 -1
  64. data/lib/datadog/appsec/contrib/excon/ssrf_detection_middleware.rb +76 -21
  65. data/lib/datadog/appsec/contrib/faraday/integration.rb +4 -4
  66. data/lib/datadog/appsec/contrib/faraday/patcher.rb +4 -4
  67. data/lib/datadog/appsec/contrib/faraday/ssrf_detection_middleware.rb +72 -18
  68. data/lib/datadog/appsec/contrib/graphql/appsec_trace.rb +4 -4
  69. data/lib/datadog/appsec/contrib/graphql/gateway/multiplex.rb +3 -3
  70. data/lib/datadog/appsec/contrib/graphql/gateway/watcher.rb +7 -7
  71. data/lib/datadog/appsec/contrib/graphql/integration.rb +9 -9
  72. data/lib/datadog/appsec/contrib/graphql/patcher.rb +3 -3
  73. data/lib/datadog/appsec/contrib/rack/buffered_input.rb +1 -1
  74. data/lib/datadog/appsec/contrib/rack/ext.rb +29 -29
  75. data/lib/datadog/appsec/contrib/rack/gateway/request.rb +18 -17
  76. data/lib/datadog/appsec/contrib/rack/gateway/response.rb +1 -1
  77. data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +25 -21
  78. data/lib/datadog/appsec/contrib/rack/input_peeker.rb +9 -22
  79. data/lib/datadog/appsec/contrib/rack/integration.rb +6 -6
  80. data/lib/datadog/appsec/contrib/rack/patcher.rb +3 -3
  81. data/lib/datadog/appsec/contrib/rack/request_body_middleware.rb +11 -8
  82. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +45 -24
  83. data/lib/datadog/appsec/contrib/rack/response_body.rb +1 -1
  84. data/lib/datadog/appsec/contrib/rails/gateway/request.rb +14 -8
  85. data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +10 -10
  86. data/lib/datadog/appsec/contrib/rails/integration.rb +5 -5
  87. data/lib/datadog/appsec/contrib/rails/patcher.rb +17 -17
  88. data/lib/datadog/appsec/contrib/rails/patches/process_action_patch.rb +2 -2
  89. data/lib/datadog/appsec/contrib/rails/patches/render_to_body_patch.rb +3 -3
  90. data/lib/datadog/appsec/contrib/rails/request.rb +3 -3
  91. data/lib/datadog/appsec/contrib/rails/request_middleware.rb +2 -1
  92. data/lib/datadog/appsec/contrib/rest_client/integration.rb +5 -5
  93. data/lib/datadog/appsec/contrib/rest_client/patcher.rb +1 -1
  94. data/lib/datadog/appsec/contrib/rest_client/request_ssrf_detection_patch.rb +74 -21
  95. data/lib/datadog/appsec/contrib/sinatra/gateway/request.rb +1 -1
  96. data/lib/datadog/appsec/contrib/sinatra/gateway/route_params.rb +1 -1
  97. data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +16 -12
  98. data/lib/datadog/appsec/contrib/sinatra/integration.rb +5 -5
  99. data/lib/datadog/appsec/contrib/sinatra/patcher.rb +11 -11
  100. data/lib/datadog/appsec/contrib/sinatra/patches/json_patch.rb +3 -3
  101. data/lib/datadog/appsec/contrib/sinatra/request_middleware.rb +2 -1
  102. data/lib/datadog/appsec/counter_sampler.rb +1 -1
  103. data/lib/datadog/appsec/event.rb +14 -14
  104. data/lib/datadog/appsec/ext.rb +11 -10
  105. data/lib/datadog/appsec/extensions.rb +2 -2
  106. data/lib/datadog/appsec/instrumentation/gateway.rb +1 -1
  107. data/lib/datadog/appsec/metrics/collector.rb +18 -1
  108. data/lib/datadog/appsec/metrics/exporter.rb +17 -11
  109. data/lib/datadog/appsec/metrics/telemetry.rb +7 -7
  110. data/lib/datadog/appsec/metrics/telemetry_exporter.rb +4 -4
  111. data/lib/datadog/appsec/metrics.rb +4 -4
  112. data/lib/datadog/appsec/monitor/gateway/watcher.rb +16 -12
  113. data/lib/datadog/appsec/monitor.rb +1 -1
  114. data/lib/datadog/appsec/processor/rule_loader.rb +26 -26
  115. data/lib/datadog/appsec/rate_limiter.rb +1 -1
  116. data/lib/datadog/appsec/remote.rb +15 -9
  117. data/lib/datadog/appsec/response.rb +21 -21
  118. data/lib/datadog/appsec/route_normalizer/rails_route_pattern.rb +176 -0
  119. data/lib/datadog/appsec/route_normalizer/route_pattern.rb +378 -0
  120. data/lib/datadog/appsec/route_normalizer/route_text.rb +57 -0
  121. data/lib/datadog/appsec/route_normalizer.rb +80 -0
  122. data/lib/datadog/appsec/security_engine/engine.rb +37 -37
  123. data/lib/datadog/appsec/security_engine/runner.rb +2 -2
  124. data/lib/datadog/appsec/security_event.rb +2 -2
  125. data/lib/datadog/appsec/utils/http/body.rb +11 -8
  126. data/lib/datadog/appsec/utils/http/body_reader.rb +61 -0
  127. data/lib/datadog/appsec/utils/http/media_range.rb +15 -15
  128. data/lib/datadog/appsec/utils/http/media_type.rb +4 -4
  129. data/lib/datadog/appsec/utils/http/url_encoded.rb +80 -25
  130. data/lib/datadog/appsec.rb +16 -16
  131. data/lib/datadog/auto_instrument.rb +2 -2
  132. data/lib/datadog/core/buffer/cruby.rb +1 -1
  133. data/lib/datadog/core/buffer/thread_safe.rb +1 -1
  134. data/lib/datadog/core/configuration/agent_settings.rb +1 -1
  135. data/lib/datadog/core/configuration/agent_settings_resolver.rb +15 -15
  136. data/lib/datadog/core/configuration/agentless_settings_resolver.rb +2 -2
  137. data/lib/datadog/core/configuration/base.rb +2 -2
  138. data/lib/datadog/core/configuration/components.rb +115 -31
  139. data/lib/datadog/core/configuration/components_state.rb +6 -1
  140. data/lib/datadog/core/configuration/config_helper.rb +3 -3
  141. data/lib/datadog/core/configuration/deprecations.rb +6 -6
  142. data/lib/datadog/core/configuration/ext.rb +11 -11
  143. data/lib/datadog/core/configuration/option.rb +16 -16
  144. data/lib/datadog/core/configuration/option_definition.rb +4 -4
  145. data/lib/datadog/core/configuration/options.rb +1 -1
  146. data/lib/datadog/core/configuration/settings.rb +93 -104
  147. data/lib/datadog/core/configuration/stable_config.rb +1 -1
  148. data/lib/datadog/core/configuration/supported_configurations.rb +8 -1
  149. data/lib/datadog/core/configuration.rb +8 -8
  150. data/lib/datadog/core/contrib/rails/railtie.rb +3 -3
  151. data/lib/datadog/core/crashtracking/component.rb +9 -9
  152. data/lib/datadog/core/crashtracking/tag_builder.rb +5 -5
  153. data/lib/datadog/core/deprecations.rb +1 -1
  154. data/lib/datadog/core/diagnostics/environment_logger.rb +6 -6
  155. data/lib/datadog/core/diagnostics/health.rb +2 -2
  156. data/lib/datadog/core/encoding.rb +4 -4
  157. data/lib/datadog/core/environment/agent_info.rb +2 -2
  158. data/lib/datadog/core/environment/cgroup.rb +4 -4
  159. data/lib/datadog/core/environment/container.rb +9 -9
  160. data/lib/datadog/core/environment/execution.rb +3 -3
  161. data/lib/datadog/core/environment/ext.rb +18 -18
  162. data/lib/datadog/core/environment/gc.rb +1 -1
  163. data/lib/datadog/core/environment/git.rb +2 -2
  164. data/lib/datadog/core/environment/identity.rb +10 -10
  165. data/lib/datadog/core/environment/platform.rb +8 -8
  166. data/lib/datadog/core/environment/process.rb +3 -3
  167. data/lib/datadog/core/environment/socket.rb +2 -2
  168. data/lib/datadog/core/environment/variable_helpers.rb +1 -1
  169. data/lib/datadog/core/environment/vm_cache.rb +1 -1
  170. data/lib/datadog/core/environment/yjit.rb +2 -2
  171. data/lib/datadog/core/error.rb +5 -5
  172. data/lib/datadog/core/evp.rb +11 -0
  173. data/lib/datadog/core/extensions.rb +1 -1
  174. data/lib/datadog/core/feature_flags.rb +2 -2
  175. data/lib/datadog/core/git/ext.rb +4 -4
  176. data/lib/datadog/core/knuth_sampler.rb +3 -1
  177. data/lib/datadog/core/logger.rb +3 -3
  178. data/lib/datadog/core/logging/ext.rb +1 -1
  179. data/lib/datadog/core/metrics/client.rb +21 -21
  180. data/lib/datadog/core/metrics/ext.rb +5 -5
  181. data/lib/datadog/core/metrics/logging.rb +2 -2
  182. data/lib/datadog/core/metrics/options.rb +3 -3
  183. data/lib/datadog/core/pin.rb +1 -1
  184. data/lib/datadog/core/process_discovery.rb +8 -8
  185. data/lib/datadog/core/rate_limiter.rb +1 -1
  186. data/lib/datadog/core/remote/client/capabilities.rb +62 -19
  187. data/lib/datadog/core/remote/client.rb +16 -16
  188. data/lib/datadog/core/remote/component.rb +20 -12
  189. data/lib/datadog/core/remote/configuration/content.rb +3 -3
  190. data/lib/datadog/core/remote/configuration/digest.rb +1 -1
  191. data/lib/datadog/core/remote/configuration/path.rb +9 -9
  192. data/lib/datadog/core/remote/configuration/repository.rb +2 -2
  193. data/lib/datadog/core/remote/configuration/target.rb +9 -9
  194. data/lib/datadog/core/remote/configuration.rb +4 -4
  195. data/lib/datadog/core/remote/ext.rb +3 -3
  196. data/lib/datadog/core/remote/negotiation.rb +1 -1
  197. data/lib/datadog/core/remote/tie/tracing.rb +7 -7
  198. data/lib/datadog/core/remote/transport/config.rb +4 -4
  199. data/lib/datadog/core/remote/transport/http/config.rb +7 -7
  200. data/lib/datadog/core/remote/transport/http/negotiation.rb +4 -4
  201. data/lib/datadog/core/remote/transport/http.rb +10 -10
  202. data/lib/datadog/core/remote/transport/negotiation.rb +3 -3
  203. data/lib/datadog/core/remote/worker.rb +5 -5
  204. data/lib/datadog/core/runtime/ext.rb +22 -22
  205. data/lib/datadog/core/runtime/metrics.rb +9 -9
  206. data/lib/datadog/core/tag_builder.rb +18 -18
  207. data/lib/datadog/core/tag_normalizer.rb +7 -7
  208. data/lib/datadog/core/telemetry/component.rb +13 -13
  209. data/lib/datadog/core/telemetry/emitter.rb +4 -4
  210. data/lib/datadog/core/telemetry/event/app_client_configuration_change.rb +5 -5
  211. data/lib/datadog/core/telemetry/event/app_closing.rb +2 -2
  212. data/lib/datadog/core/telemetry/event/app_dependencies_loaded.rb +2 -2
  213. data/lib/datadog/core/telemetry/event/app_endpoints_loaded.rb +2 -2
  214. data/lib/datadog/core/telemetry/event/app_extended_heartbeat.rb +2 -2
  215. data/lib/datadog/core/telemetry/event/app_heartbeat.rb +2 -2
  216. data/lib/datadog/core/telemetry/event/app_integrations_change.rb +2 -2
  217. data/lib/datadog/core/telemetry/event/app_started.rb +41 -34
  218. data/lib/datadog/core/telemetry/event/base.rb +1 -1
  219. data/lib/datadog/core/telemetry/event/distributions.rb +2 -2
  220. data/lib/datadog/core/telemetry/event/generate_metrics.rb +2 -2
  221. data/lib/datadog/core/telemetry/event/log.rb +4 -4
  222. data/lib/datadog/core/telemetry/event/message_batch.rb +1 -1
  223. data/lib/datadog/core/telemetry/event/synth_app_client_configuration_change.rb +3 -3
  224. data/lib/datadog/core/telemetry/event.rb +16 -16
  225. data/lib/datadog/core/telemetry/ext.rb +11 -11
  226. data/lib/datadog/core/telemetry/logger.rb +1 -1
  227. data/lib/datadog/core/telemetry/logging.rb +5 -5
  228. data/lib/datadog/core/telemetry/metric.rb +7 -7
  229. data/lib/datadog/core/telemetry/metrics_collection.rb +2 -2
  230. data/lib/datadog/core/telemetry/metrics_manager.rb +1 -1
  231. data/lib/datadog/core/telemetry/request.rb +4 -4
  232. data/lib/datadog/core/telemetry/transport/http/telemetry.rb +14 -14
  233. data/lib/datadog/core/telemetry/transport/http.rb +7 -7
  234. data/lib/datadog/core/telemetry/transport/telemetry.rb +3 -3
  235. data/lib/datadog/core/telemetry/worker.rb +6 -6
  236. data/lib/datadog/core/transport/ext.rb +14 -14
  237. data/lib/datadog/core/transport/http/adapters/net.rb +4 -4
  238. data/lib/datadog/core/transport/http/adapters/test.rb +1 -1
  239. data/lib/datadog/core/transport/http/adapters/unix_socket.rb +4 -4
  240. data/lib/datadog/core/transport/http/api/endpoint.rb +1 -1
  241. data/lib/datadog/core/transport/http/api/map.rb +1 -1
  242. data/lib/datadog/core/transport/http/builder.rb +6 -6
  243. data/lib/datadog/core/transport/http/client.rb +2 -2
  244. data/lib/datadog/core/transport/http/response.rb +1 -1
  245. data/lib/datadog/core/transport/http.rb +8 -8
  246. data/lib/datadog/core/transport/transport.rb +1 -1
  247. data/lib/datadog/core/utils/at_fork_monkey_patch.rb +83 -15
  248. data/lib/datadog/core/utils/base64_codec.rb +3 -3
  249. data/lib/datadog/core/utils/duration.rb +1 -1
  250. data/lib/datadog/core/utils/forking.rb +2 -2
  251. data/lib/datadog/core/utils/lru_cache.rb +3 -3
  252. data/lib/datadog/core/utils/network.rb +11 -11
  253. data/lib/datadog/core/utils/only_once_successful.rb +1 -1
  254. data/lib/datadog/core/utils/safe_dup.rb +2 -1
  255. data/lib/datadog/core/utils/sequence.rb +3 -6
  256. data/lib/datadog/core/utils/spawn_monkey_patch.rb +2 -2
  257. data/lib/datadog/core/utils/time.rb +18 -52
  258. data/lib/datadog/core/utils/url.rb +1 -1
  259. data/lib/datadog/core/utils.rb +4 -4
  260. data/lib/datadog/core/workers/async.rb +1 -1
  261. data/lib/datadog/core/workers/polling.rb +2 -2
  262. data/lib/datadog/core/workers/runtime_metrics.rb +4 -4
  263. data/lib/datadog/core.rb +4 -4
  264. data/lib/datadog/data_streams/configuration.rb +3 -3
  265. data/lib/datadog/data_streams/ext.rb +1 -1
  266. data/lib/datadog/data_streams/extensions.rb +2 -2
  267. data/lib/datadog/data_streams/pathway_context.rb +5 -5
  268. data/lib/datadog/data_streams/processor.rb +52 -52
  269. data/lib/datadog/data_streams/transport/http/stats.rb +5 -5
  270. data/lib/datadog/data_streams/transport/http.rb +5 -5
  271. data/lib/datadog/data_streams/transport/stats.rb +7 -7
  272. data/lib/datadog/data_streams.rb +5 -5
  273. data/lib/datadog/di/base.rb +6 -4
  274. data/lib/datadog/di/boot.rb +25 -22
  275. data/lib/datadog/di/capture_expression.rb +21 -0
  276. data/lib/datadog/di/capture_expression_evaluator.rb +71 -0
  277. data/lib/datadog/di/capture_limits.rb +41 -0
  278. data/lib/datadog/di/code_tracker.rb +10 -7
  279. data/lib/datadog/di/component.rb +122 -40
  280. data/lib/datadog/di/configuration.rb +7 -1
  281. data/lib/datadog/di/context.rb +9 -3
  282. data/lib/datadog/di/contrib/railtie.rb +1 -1
  283. data/lib/datadog/di/contrib.rb +5 -5
  284. data/lib/datadog/di/el/compiler.rb +91 -38
  285. data/lib/datadog/di/el/evaluator.rb +82 -2
  286. data/lib/datadog/di/el/expression.rb +10 -2
  287. data/lib/datadog/di/el.rb +3 -3
  288. data/lib/datadog/di/error.rb +10 -0
  289. data/lib/datadog/di/fatal_exceptions.rb +26 -0
  290. data/lib/datadog/di/instrumenter.rb +426 -169
  291. data/lib/datadog/di/logger.rb +1 -1
  292. data/lib/datadog/di/preload.rb +1 -1
  293. data/lib/datadog/di/probe.rb +61 -2
  294. data/lib/datadog/di/probe_builder.rb +96 -14
  295. data/lib/datadog/di/probe_file_loader/railtie.rb +1 -1
  296. data/lib/datadog/di/probe_file_loader.rb +12 -7
  297. data/lib/datadog/di/probe_manager.rb +67 -9
  298. data/lib/datadog/di/probe_notification_builder.rb +66 -22
  299. data/lib/datadog/di/probe_notifier_worker.rb +57 -37
  300. data/lib/datadog/di/probe_repository.rb +1 -1
  301. data/lib/datadog/di/redactor.rb +16 -1
  302. data/lib/datadog/di/remote.rb +178 -17
  303. data/lib/datadog/di/serializer.rb +47 -28
  304. data/lib/datadog/di/transport/diagnostics.rb +5 -5
  305. data/lib/datadog/di/transport/http/diagnostics.rb +3 -3
  306. data/lib/datadog/di/transport/http/input.rb +2 -2
  307. data/lib/datadog/di/transport/http.rb +10 -10
  308. data/lib/datadog/di/transport/input.rb +16 -12
  309. data/lib/datadog/di/utils.rb +4 -4
  310. data/lib/datadog/di.rb +66 -3
  311. data/lib/datadog/error_tracking/collector.rb +2 -2
  312. data/lib/datadog/error_tracking/component.rb +12 -12
  313. data/lib/datadog/error_tracking/configuration.rb +2 -2
  314. data/lib/datadog/error_tracking/ext.rb +7 -7
  315. data/lib/datadog/error_tracking/extensions.rb +2 -2
  316. data/lib/datadog/error_tracking/filters.rb +4 -4
  317. data/lib/datadog/error_tracking.rb +6 -6
  318. data/lib/datadog/kit/appsec/events/v2.rb +90 -32
  319. data/lib/datadog/kit/appsec/events.rb +25 -25
  320. data/lib/datadog/kit/enable_core_dumps.rb +2 -2
  321. data/lib/datadog/kit/identity.rb +18 -18
  322. data/lib/datadog/kit/tracing/method_tracer.rb +7 -7
  323. data/lib/datadog/kit.rb +1 -1
  324. data/lib/datadog/open_feature/component.rb +53 -21
  325. data/lib/datadog/open_feature/configuration.rb +22 -1
  326. data/lib/datadog/open_feature/evaluation_engine.rb +7 -7
  327. data/lib/datadog/open_feature/exposures/buffer.rb +1 -1
  328. data/lib/datadog/open_feature/exposures/deduplicator.rb +1 -1
  329. data/lib/datadog/open_feature/exposures/event.rb +2 -2
  330. data/lib/datadog/open_feature/exposures/reporter.rb +3 -3
  331. data/lib/datadog/open_feature/exposures/worker.rb +6 -6
  332. data/lib/datadog/open_feature/ext.rb +13 -6
  333. data/lib/datadog/open_feature/flag_evaluation/aggregator.rb +286 -0
  334. data/lib/datadog/open_feature/flag_evaluation/writer.rb +433 -0
  335. data/lib/datadog/open_feature/hooks/flag_eval_evp_hook.rb +102 -0
  336. data/lib/datadog/open_feature/hooks/{flag_eval_hook.rb → flag_eval_metrics_hook.rb} +4 -2
  337. data/lib/datadog/open_feature/hooks/span_enrichment_hook/codec.rb +58 -0
  338. data/lib/datadog/open_feature/hooks/span_enrichment_hook/span_enrichment_state.rb +96 -0
  339. data/lib/datadog/open_feature/hooks/span_enrichment_hook/span_enrichment_state_store.rb +49 -0
  340. data/lib/datadog/open_feature/hooks/span_enrichment_hook.rb +184 -0
  341. data/lib/datadog/open_feature/metrics/flag_eval_metrics.rb +24 -24
  342. data/lib/datadog/open_feature/native_evaluator.rb +23 -1
  343. data/lib/datadog/open_feature/noop_evaluator.rb +3 -3
  344. data/lib/datadog/open_feature/provider.rb +97 -30
  345. data/lib/datadog/open_feature/remote.rb +2 -2
  346. data/lib/datadog/open_feature/resolution_details.rb +4 -2
  347. data/lib/datadog/open_feature/transport.rb +65 -11
  348. data/lib/datadog/open_feature.rb +2 -2
  349. data/lib/datadog/opentelemetry/api/baggage.rb +3 -3
  350. data/lib/datadog/opentelemetry/api/context.rb +4 -4
  351. data/lib/datadog/opentelemetry/configuration/settings.rb +41 -41
  352. data/lib/datadog/opentelemetry/ext.rb +1 -1
  353. data/lib/datadog/opentelemetry/logs.rb +5 -5
  354. data/lib/datadog/opentelemetry/metrics.rb +7 -7
  355. data/lib/datadog/opentelemetry/sdk/configurator.rb +8 -8
  356. data/lib/datadog/opentelemetry/sdk/id_generator.rb +2 -2
  357. data/lib/datadog/opentelemetry/sdk/logs_exporter.rb +10 -17
  358. data/lib/datadog/opentelemetry/sdk/metrics_exporter.rb +8 -15
  359. data/lib/datadog/opentelemetry/sdk/propagator.rb +7 -7
  360. data/lib/datadog/opentelemetry/sdk/span_processor.rb +15 -15
  361. data/lib/datadog/opentelemetry/sdk/trace/span.rb +32 -32
  362. data/lib/datadog/opentelemetry/sdk.rb +19 -0
  363. data/lib/datadog/opentelemetry/signal_configuration.rb +11 -11
  364. data/lib/datadog/opentelemetry/trace.rb +1 -1
  365. data/lib/datadog/opentelemetry.rb +8 -8
  366. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +6 -1
  367. data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +5 -3
  368. data/lib/datadog/profiling/collectors/thread_context.rb +15 -14
  369. data/lib/datadog/profiling/component.rb +18 -0
  370. data/lib/datadog/profiling/exporter.rb +1 -1
  371. data/lib/datadog/profiling/http_transport.rb +1 -1
  372. data/lib/datadog/profiling/sequence_tracker.rb +1 -1
  373. data/lib/datadog/profiling/tag_builder.rb +19 -19
  374. data/lib/datadog/profiling.rb +31 -27
  375. data/lib/datadog/single_step_instrument.rb +1 -1
  376. data/lib/datadog/symbol_database/component.rb +177 -60
  377. data/lib/datadog/symbol_database/configuration.rb +15 -7
  378. data/lib/datadog/symbol_database/extensions.rb +19 -0
  379. data/lib/datadog/symbol_database/extractor.rb +167 -130
  380. data/lib/datadog/symbol_database/file_hash.rb +5 -3
  381. data/lib/datadog/symbol_database/logger.rb +1 -1
  382. data/lib/datadog/symbol_database/remote.rb +28 -8
  383. data/lib/datadog/symbol_database/scope.rb +2 -2
  384. data/lib/datadog/symbol_database/scope_batcher.rb +8 -4
  385. data/lib/datadog/symbol_database/service_version.rb +4 -4
  386. data/lib/datadog/symbol_database/symbol.rb +1 -1
  387. data/lib/datadog/symbol_database/transport/http/endpoint.rb +1 -1
  388. data/lib/datadog/symbol_database/transport/http.rb +6 -6
  389. data/lib/datadog/symbol_database/transport.rb +4 -4
  390. data/lib/datadog/symbol_database/uploader.rb +28 -21
  391. data/lib/datadog/symbol_database.rb +22 -0
  392. data/lib/datadog/tracing/analytics.rb +1 -1
  393. data/lib/datadog/tracing/buffer.rb +5 -5
  394. data/lib/datadog/tracing/client_ip.rb +4 -4
  395. data/lib/datadog/tracing/component.rb +28 -7
  396. data/lib/datadog/tracing/configuration/dynamic.rb +8 -8
  397. data/lib/datadog/tracing/configuration/ext.rb +43 -42
  398. data/lib/datadog/tracing/configuration/http.rb +2 -2
  399. data/lib/datadog/tracing/configuration/settings.rb +32 -16
  400. data/lib/datadog/tracing/context.rb +1 -1
  401. data/lib/datadog/tracing/context_provider.rb +2 -2
  402. data/lib/datadog/tracing/contrib/action_cable/configuration/settings.rb +2 -2
  403. data/lib/datadog/tracing/contrib/action_cable/event.rb +4 -4
  404. data/lib/datadog/tracing/contrib/action_cable/events/broadcast.rb +5 -5
  405. data/lib/datadog/tracing/contrib/action_cable/events/perform_action.rb +4 -4
  406. data/lib/datadog/tracing/contrib/action_cable/events/transmit.rb +5 -5
  407. data/lib/datadog/tracing/contrib/action_cable/events.rb +4 -4
  408. data/lib/datadog/tracing/contrib/action_cable/ext.rb +18 -18
  409. data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +4 -4
  410. data/lib/datadog/tracing/contrib/action_cable/integration.rb +7 -7
  411. data/lib/datadog/tracing/contrib/action_cable/patcher.rb +4 -4
  412. data/lib/datadog/tracing/contrib/action_mailer/configuration/settings.rb +2 -2
  413. data/lib/datadog/tracing/contrib/action_mailer/event.rb +3 -3
  414. data/lib/datadog/tracing/contrib/action_mailer/events/deliver.rb +8 -8
  415. data/lib/datadog/tracing/contrib/action_mailer/events/process.rb +4 -4
  416. data/lib/datadog/tracing/contrib/action_mailer/events.rb +2 -2
  417. data/lib/datadog/tracing/contrib/action_mailer/ext.rb +18 -18
  418. data/lib/datadog/tracing/contrib/action_mailer/integration.rb +7 -7
  419. data/lib/datadog/tracing/contrib/action_mailer/patcher.rb +3 -3
  420. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +8 -8
  421. data/lib/datadog/tracing/contrib/action_pack/action_controller/patcher.rb +2 -2
  422. data/lib/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation.rb +4 -4
  423. data/lib/datadog/tracing/contrib/action_pack/action_dispatch/patcher.rb +4 -4
  424. data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +3 -3
  425. data/lib/datadog/tracing/contrib/action_pack/ext.rb +10 -10
  426. data/lib/datadog/tracing/contrib/action_pack/integration.rb +7 -7
  427. data/lib/datadog/tracing/contrib/action_pack/patcher.rb +3 -3
  428. data/lib/datadog/tracing/contrib/action_pack/utils.rb +1 -1
  429. data/lib/datadog/tracing/contrib/action_view/configuration/settings.rb +3 -3
  430. data/lib/datadog/tracing/contrib/action_view/event.rb +1 -1
  431. data/lib/datadog/tracing/contrib/action_view/events/render_partial.rb +6 -6
  432. data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +6 -6
  433. data/lib/datadog/tracing/contrib/action_view/events.rb +2 -2
  434. data/lib/datadog/tracing/contrib/action_view/ext.rb +10 -10
  435. data/lib/datadog/tracing/contrib/action_view/integration.rb +11 -11
  436. data/lib/datadog/tracing/contrib/action_view/patcher.rb +5 -5
  437. data/lib/datadog/tracing/contrib/action_view/utils.rb +2 -2
  438. data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +2 -2
  439. data/lib/datadog/tracing/contrib/active_job/data_streams.rb +62 -0
  440. data/lib/datadog/tracing/contrib/active_job/event.rb +3 -3
  441. data/lib/datadog/tracing/contrib/active_job/events/discard.rb +5 -5
  442. data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +5 -5
  443. data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +5 -5
  444. data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +5 -5
  445. data/lib/datadog/tracing/contrib/active_job/events/perform.rb +5 -5
  446. data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +5 -5
  447. data/lib/datadog/tracing/contrib/active_job/events.rb +6 -6
  448. data/lib/datadog/tracing/contrib/active_job/ext.rb +23 -23
  449. data/lib/datadog/tracing/contrib/active_job/integration.rb +7 -7
  450. data/lib/datadog/tracing/contrib/active_job/patcher.rb +17 -5
  451. data/lib/datadog/tracing/contrib/active_model_serializers/configuration/settings.rb +2 -2
  452. data/lib/datadog/tracing/contrib/active_model_serializers/event.rb +4 -4
  453. data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +6 -6
  454. data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +7 -8
  455. data/lib/datadog/tracing/contrib/active_model_serializers/events.rb +2 -2
  456. data/lib/datadog/tracing/contrib/active_model_serializers/ext.rb +10 -10
  457. data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +5 -5
  458. data/lib/datadog/tracing/contrib/active_model_serializers/patcher.rb +3 -3
  459. data/lib/datadog/tracing/contrib/active_record/configuration/makara_resolver.rb +1 -1
  460. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +6 -6
  461. data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +4 -4
  462. data/lib/datadog/tracing/contrib/active_record/event.rb +1 -1
  463. data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +8 -8
  464. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +9 -9
  465. data/lib/datadog/tracing/contrib/active_record/events.rb +2 -2
  466. data/lib/datadog/tracing/contrib/active_record/ext.rb +15 -15
  467. data/lib/datadog/tracing/contrib/active_record/integration.rb +11 -11
  468. data/lib/datadog/tracing/contrib/active_record/patcher.rb +2 -2
  469. data/lib/datadog/tracing/contrib/active_record/utils.rb +3 -3
  470. data/lib/datadog/tracing/contrib/active_support/cache/event.rb +1 -1
  471. data/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb +11 -11
  472. data/lib/datadog/tracing/contrib/active_support/cache/events.rb +1 -1
  473. data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +4 -4
  474. data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +5 -5
  475. data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +4 -4
  476. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +3 -3
  477. data/lib/datadog/tracing/contrib/active_support/ext.rb +16 -16
  478. data/lib/datadog/tracing/contrib/active_support/integration.rb +8 -8
  479. data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +1 -1
  480. data/lib/datadog/tracing/contrib/active_support/notifications/subscriber.rb +2 -2
  481. data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +1 -1
  482. data/lib/datadog/tracing/contrib/active_support/patcher.rb +2 -2
  483. data/lib/datadog/tracing/contrib/analytics.rb +1 -1
  484. data/lib/datadog/tracing/contrib/auto_instrument.rb +4 -4
  485. data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +3 -3
  486. data/lib/datadog/tracing/contrib/aws/ext.rb +25 -25
  487. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +5 -5
  488. data/lib/datadog/tracing/contrib/aws/integration.rb +9 -9
  489. data/lib/datadog/tracing/contrib/aws/parsed_context.rb +1 -1
  490. data/lib/datadog/tracing/contrib/aws/patcher.rb +5 -5
  491. data/lib/datadog/tracing/contrib/aws/service/dynamodb.rb +2 -2
  492. data/lib/datadog/tracing/contrib/aws/service/eventbridge.rb +2 -2
  493. data/lib/datadog/tracing/contrib/aws/service/kinesis.rb +4 -4
  494. data/lib/datadog/tracing/contrib/aws/service/s3.rb +2 -2
  495. data/lib/datadog/tracing/contrib/aws/service/sns.rb +3 -3
  496. data/lib/datadog/tracing/contrib/aws/service/sqs.rb +3 -3
  497. data/lib/datadog/tracing/contrib/aws/service/states.rb +5 -5
  498. data/lib/datadog/tracing/contrib/aws/services.rb +14 -14
  499. data/lib/datadog/tracing/contrib/concurrent_ruby/async_patch.rb +1 -1
  500. data/lib/datadog/tracing/contrib/concurrent_ruby/configuration/settings.rb +2 -2
  501. data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +1 -1
  502. data/lib/datadog/tracing/contrib/concurrent_ruby/ext.rb +2 -2
  503. data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +1 -1
  504. data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +6 -6
  505. data/lib/datadog/tracing/contrib/concurrent_ruby/patcher.rb +4 -4
  506. data/lib/datadog/tracing/contrib/concurrent_ruby/promises_future_patch.rb +1 -1
  507. data/lib/datadog/tracing/contrib/configurable.rb +2 -2
  508. data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +1 -1
  509. data/lib/datadog/tracing/contrib/configuration/settings.rb +2 -2
  510. data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +2 -2
  511. data/lib/datadog/tracing/contrib/dalli/ext.rb +13 -13
  512. data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +5 -5
  513. data/lib/datadog/tracing/contrib/dalli/integration.rb +7 -7
  514. data/lib/datadog/tracing/contrib/dalli/patcher.rb +3 -3
  515. data/lib/datadog/tracing/contrib/dalli/quantize.rb +2 -2
  516. data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +2 -2
  517. data/lib/datadog/tracing/contrib/delayed_job/ext.rb +14 -14
  518. data/lib/datadog/tracing/contrib/delayed_job/integration.rb +5 -5
  519. data/lib/datadog/tracing/contrib/delayed_job/patcher.rb +3 -3
  520. data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +5 -5
  521. data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +2 -2
  522. data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +15 -15
  523. data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +6 -6
  524. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +10 -10
  525. data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +2 -2
  526. data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +2 -2
  527. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +8 -8
  528. data/lib/datadog/tracing/contrib/ethon/ext.rb +13 -13
  529. data/lib/datadog/tracing/contrib/ethon/integration.rb +6 -6
  530. data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +3 -3
  531. data/lib/datadog/tracing/contrib/ethon/patcher.rb +3 -3
  532. data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +5 -5
  533. data/lib/datadog/tracing/contrib/excon/ext.rb +11 -11
  534. data/lib/datadog/tracing/contrib/excon/integration.rb +6 -6
  535. data/lib/datadog/tracing/contrib/excon/middleware.rb +8 -8
  536. data/lib/datadog/tracing/contrib/excon/patcher.rb +2 -2
  537. data/lib/datadog/tracing/contrib/ext.rb +15 -15
  538. data/lib/datadog/tracing/contrib/extensions.rb +2 -2
  539. data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +4 -4
  540. data/lib/datadog/tracing/contrib/faraday/ext.rb +11 -11
  541. data/lib/datadog/tracing/contrib/faraday/integration.rb +6 -6
  542. data/lib/datadog/tracing/contrib/faraday/middleware.rb +8 -8
  543. data/lib/datadog/tracing/contrib/faraday/patcher.rb +6 -6
  544. data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +4 -4
  545. data/lib/datadog/tracing/contrib/grape/endpoint.rb +20 -20
  546. data/lib/datadog/tracing/contrib/grape/ext.rb +15 -15
  547. data/lib/datadog/tracing/contrib/grape/instrumentation.rb +3 -3
  548. data/lib/datadog/tracing/contrib/grape/integration.rb +5 -5
  549. data/lib/datadog/tracing/contrib/grape/patcher.rb +5 -5
  550. data/lib/datadog/tracing/contrib/graphql/configuration/error_extension_env_parser.rb +1 -1
  551. data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +3 -3
  552. data/lib/datadog/tracing/contrib/graphql/ext.rb +9 -9
  553. data/lib/datadog/tracing/contrib/graphql/integration.rb +9 -9
  554. data/lib/datadog/tracing/contrib/graphql/patcher.rb +7 -7
  555. data/lib/datadog/tracing/contrib/graphql/unified_trace.rb +37 -37
  556. data/lib/datadog/tracing/contrib/graphql/unified_trace_patcher.rb +2 -2
  557. data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +2 -2
  558. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +7 -7
  559. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +7 -7
  560. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb +6 -6
  561. data/lib/datadog/tracing/contrib/grpc/distributed/fetcher.rb +1 -1
  562. data/lib/datadog/tracing/contrib/grpc/distributed/propagation.rb +8 -8
  563. data/lib/datadog/tracing/contrib/grpc/ext.rb +14 -14
  564. data/lib/datadog/tracing/contrib/grpc/formatting.rb +7 -7
  565. data/lib/datadog/tracing/contrib/grpc/integration.rb +5 -5
  566. data/lib/datadog/tracing/contrib/grpc/intercept_with_datadog.rb +1 -1
  567. data/lib/datadog/tracing/contrib/grpc/patcher.rb +3 -3
  568. data/lib/datadog/tracing/contrib/grpc.rb +6 -6
  569. data/lib/datadog/tracing/contrib/hanami/action_tracer.rb +3 -3
  570. data/lib/datadog/tracing/contrib/hanami/configuration/settings.rb +2 -2
  571. data/lib/datadog/tracing/contrib/hanami/ext.rb +8 -8
  572. data/lib/datadog/tracing/contrib/hanami/integration.rb +6 -6
  573. data/lib/datadog/tracing/contrib/hanami/patcher.rb +5 -5
  574. data/lib/datadog/tracing/contrib/hanami/renderer_policy_tracing.rb +3 -3
  575. data/lib/datadog/tracing/contrib/hanami/router_tracing.rb +5 -4
  576. data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +1 -1
  577. data/lib/datadog/tracing/contrib/http/configuration/settings.rb +4 -4
  578. data/lib/datadog/tracing/contrib/http/distributed/fetcher.rb +3 -3
  579. data/lib/datadog/tracing/contrib/http/distributed/propagation.rb +8 -8
  580. data/lib/datadog/tracing/contrib/http/ext.rb +11 -11
  581. data/lib/datadog/tracing/contrib/http/instrumentation.rb +6 -6
  582. data/lib/datadog/tracing/contrib/http/integration.rb +7 -7
  583. data/lib/datadog/tracing/contrib/http/patcher.rb +3 -3
  584. data/lib/datadog/tracing/contrib/http.rb +6 -6
  585. data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +4 -4
  586. data/lib/datadog/tracing/contrib/httpclient/ext.rb +11 -11
  587. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +5 -5
  588. data/lib/datadog/tracing/contrib/httpclient/integration.rb +6 -6
  589. data/lib/datadog/tracing/contrib/httpclient/patcher.rb +3 -3
  590. data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +4 -4
  591. data/lib/datadog/tracing/contrib/httprb/ext.rb +11 -11
  592. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +6 -6
  593. data/lib/datadog/tracing/contrib/httprb/integration.rb +7 -7
  594. data/lib/datadog/tracing/contrib/httprb/patcher.rb +3 -3
  595. data/lib/datadog/tracing/contrib/integration.rb +3 -3
  596. data/lib/datadog/tracing/contrib/kafka/configuration/settings.rb +2 -2
  597. data/lib/datadog/tracing/contrib/kafka/event.rb +3 -3
  598. data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +7 -3
  599. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +4 -4
  600. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +4 -4
  601. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +5 -5
  602. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +5 -5
  603. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +5 -5
  604. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +5 -5
  605. data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +10 -5
  606. data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +10 -5
  607. data/lib/datadog/tracing/contrib/kafka/events.rb +9 -9
  608. data/lib/datadog/tracing/contrib/kafka/ext.rb +40 -40
  609. data/lib/datadog/tracing/contrib/kafka/instrumentation/consumer.rb +2 -2
  610. data/lib/datadog/tracing/contrib/kafka/instrumentation/producer.rb +4 -4
  611. data/lib/datadog/tracing/contrib/kafka/integration.rb +6 -6
  612. data/lib/datadog/tracing/contrib/kafka/patcher.rb +5 -5
  613. data/lib/datadog/tracing/contrib/karafka/configuration/settings.rb +2 -2
  614. data/lib/datadog/tracing/contrib/karafka/distributed/propagation.rb +8 -8
  615. data/lib/datadog/tracing/contrib/karafka/ext.rb +13 -13
  616. data/lib/datadog/tracing/contrib/karafka/integration.rb +5 -5
  617. data/lib/datadog/tracing/contrib/karafka/monitor.rb +14 -14
  618. data/lib/datadog/tracing/contrib/karafka/patcher.rb +8 -8
  619. data/lib/datadog/tracing/contrib/karafka.rb +6 -6
  620. data/lib/datadog/tracing/contrib/lograge/configuration/settings.rb +2 -2
  621. data/lib/datadog/tracing/contrib/lograge/ext.rb +1 -1
  622. data/lib/datadog/tracing/contrib/lograge/integration.rb +5 -5
  623. data/lib/datadog/tracing/contrib/lograge/patcher.rb +9 -9
  624. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +2 -2
  625. data/lib/datadog/tracing/contrib/mongodb/ext.rb +18 -18
  626. data/lib/datadog/tracing/contrib/mongodb/instrumentation.rb +3 -3
  627. data/lib/datadog/tracing/contrib/mongodb/integration.rb +7 -7
  628. data/lib/datadog/tracing/contrib/mongodb/parsers.rb +5 -5
  629. data/lib/datadog/tracing/contrib/mongodb/patcher.rb +3 -3
  630. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +13 -13
  631. data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +3 -3
  632. data/lib/datadog/tracing/contrib/mysql2/ext.rb +11 -11
  633. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +6 -6
  634. data/lib/datadog/tracing/contrib/mysql2/integration.rb +5 -5
  635. data/lib/datadog/tracing/contrib/mysql2/patcher.rb +2 -2
  636. data/lib/datadog/tracing/contrib/opensearch/configuration/settings.rb +2 -2
  637. data/lib/datadog/tracing/contrib/opensearch/ext.rb +22 -22
  638. data/lib/datadog/tracing/contrib/opensearch/integration.rb +6 -6
  639. data/lib/datadog/tracing/contrib/opensearch/patcher.rb +13 -13
  640. data/lib/datadog/tracing/contrib/opensearch/quantize.rb +3 -3
  641. data/lib/datadog/tracing/contrib/patcher.rb +2 -2
  642. data/lib/datadog/tracing/contrib/pg/configuration/settings.rb +3 -3
  643. data/lib/datadog/tracing/contrib/pg/ext.rb +19 -19
  644. data/lib/datadog/tracing/contrib/pg/instrumentation.rb +18 -18
  645. data/lib/datadog/tracing/contrib/pg/integration.rb +5 -5
  646. data/lib/datadog/tracing/contrib/pg/patcher.rb +2 -2
  647. data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +2 -2
  648. data/lib/datadog/tracing/contrib/presto/ext.rb +21 -21
  649. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +2 -2
  650. data/lib/datadog/tracing/contrib/presto/integration.rb +6 -6
  651. data/lib/datadog/tracing/contrib/presto/patcher.rb +4 -4
  652. data/lib/datadog/tracing/contrib/propagation/sql_comment/comment.rb +2 -2
  653. data/lib/datadog/tracing/contrib/propagation/sql_comment/ext.rb +17 -17
  654. data/lib/datadog/tracing/contrib/propagation/sql_comment/mode.rb +1 -1
  655. data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +5 -5
  656. data/lib/datadog/tracing/contrib/que/configuration/settings.rb +2 -2
  657. data/lib/datadog/tracing/contrib/que/ext.rb +19 -19
  658. data/lib/datadog/tracing/contrib/que/integration.rb +6 -6
  659. data/lib/datadog/tracing/contrib/que/patcher.rb +1 -1
  660. data/lib/datadog/tracing/contrib/que/tracer.rb +1 -1
  661. data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +3 -3
  662. data/lib/datadog/tracing/contrib/racecar/event.rb +4 -4
  663. data/lib/datadog/tracing/contrib/racecar/events/batch.rb +3 -3
  664. data/lib/datadog/tracing/contrib/racecar/events/consume.rb +3 -3
  665. data/lib/datadog/tracing/contrib/racecar/events/message.rb +3 -3
  666. data/lib/datadog/tracing/contrib/racecar/events.rb +3 -3
  667. data/lib/datadog/tracing/contrib/racecar/ext.rb +18 -18
  668. data/lib/datadog/tracing/contrib/racecar/integration.rb +5 -5
  669. data/lib/datadog/tracing/contrib/racecar/patcher.rb +3 -3
  670. data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +2 -2
  671. data/lib/datadog/tracing/contrib/rack/ext.rb +33 -33
  672. data/lib/datadog/tracing/contrib/rack/header_collection.rb +3 -3
  673. data/lib/datadog/tracing/contrib/rack/header_tagging.rb +4 -4
  674. data/lib/datadog/tracing/contrib/rack/integration.rb +6 -6
  675. data/lib/datadog/tracing/contrib/rack/middlewares.rb +24 -24
  676. data/lib/datadog/tracing/contrib/rack/patcher.rb +3 -3
  677. data/lib/datadog/tracing/contrib/rack/request_queue.rb +3 -3
  678. data/lib/datadog/tracing/contrib/rack/route_inference.rb +11 -11
  679. data/lib/datadog/tracing/contrib/rack/trace_proxy_middleware.rb +15 -15
  680. data/lib/datadog/tracing/contrib/rails/auto_instrument_railtie.rb +1 -1
  681. data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +3 -3
  682. data/lib/datadog/tracing/contrib/rails/ext.rb +15 -15
  683. data/lib/datadog/tracing/contrib/rails/framework.rb +11 -11
  684. data/lib/datadog/tracing/contrib/rails/integration.rb +5 -5
  685. data/lib/datadog/tracing/contrib/rails/middlewares.rb +1 -1
  686. data/lib/datadog/tracing/contrib/rails/patcher.rb +8 -8
  687. data/lib/datadog/tracing/contrib/rails/railtie.rb +4 -4
  688. data/lib/datadog/tracing/contrib/rails/runner.rb +1 -1
  689. data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +3 -3
  690. data/lib/datadog/tracing/contrib/rake/ext.rb +12 -12
  691. data/lib/datadog/tracing/contrib/rake/instrumentation.rb +4 -4
  692. data/lib/datadog/tracing/contrib/rake/integration.rb +5 -5
  693. data/lib/datadog/tracing/contrib/rake/patcher.rb +3 -3
  694. data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +2 -2
  695. data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +2 -2
  696. data/lib/datadog/tracing/contrib/redis/ext.rb +16 -16
  697. data/lib/datadog/tracing/contrib/redis/instrumentation.rb +6 -6
  698. data/lib/datadog/tracing/contrib/redis/integration.rb +7 -7
  699. data/lib/datadog/tracing/contrib/redis/patcher.rb +10 -10
  700. data/lib/datadog/tracing/contrib/redis/quantize.rb +4 -4
  701. data/lib/datadog/tracing/contrib/redis/tags.rb +5 -5
  702. data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +5 -5
  703. data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +2 -2
  704. data/lib/datadog/tracing/contrib/resque/ext.rb +7 -7
  705. data/lib/datadog/tracing/contrib/resque/integration.rb +5 -5
  706. data/lib/datadog/tracing/contrib/resque/patcher.rb +3 -3
  707. data/lib/datadog/tracing/contrib/resque/resque_job.rb +5 -5
  708. data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +2 -2
  709. data/lib/datadog/tracing/contrib/rest_client/ext.rb +10 -10
  710. data/lib/datadog/tracing/contrib/rest_client/integration.rb +6 -6
  711. data/lib/datadog/tracing/contrib/rest_client/patcher.rb +2 -2
  712. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +5 -5
  713. data/lib/datadog/tracing/contrib/roda/configuration/settings.rb +2 -2
  714. data/lib/datadog/tracing/contrib/roda/ext.rb +6 -6
  715. data/lib/datadog/tracing/contrib/roda/instrumentation.rb +4 -4
  716. data/lib/datadog/tracing/contrib/roda/integration.rb +6 -6
  717. data/lib/datadog/tracing/contrib/roda/patcher.rb +3 -3
  718. data/lib/datadog/tracing/contrib/semantic_logger/configuration/settings.rb +2 -2
  719. data/lib/datadog/tracing/contrib/semantic_logger/ext.rb +1 -1
  720. data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +5 -5
  721. data/lib/datadog/tracing/contrib/semantic_logger/patcher.rb +2 -2
  722. data/lib/datadog/tracing/contrib/sequel/configuration/settings.rb +2 -2
  723. data/lib/datadog/tracing/contrib/sequel/database.rb +6 -10
  724. data/lib/datadog/tracing/contrib/sequel/dataset.rb +5 -5
  725. data/lib/datadog/tracing/contrib/sequel/ext.rb +12 -8
  726. data/lib/datadog/tracing/contrib/sequel/integration.rb +5 -5
  727. data/lib/datadog/tracing/contrib/sequel/patcher.rb +3 -3
  728. data/lib/datadog/tracing/contrib/sequel/utils.rb +115 -10
  729. data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +2 -2
  730. data/lib/datadog/tracing/contrib/shoryuken/ext.rb +12 -12
  731. data/lib/datadog/tracing/contrib/shoryuken/integration.rb +6 -6
  732. data/lib/datadog/tracing/contrib/shoryuken/patcher.rb +1 -1
  733. data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +2 -2
  734. data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +8 -8
  735. data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +2 -2
  736. data/lib/datadog/tracing/contrib/sidekiq/distributed/propagation.rb +9 -9
  737. data/lib/datadog/tracing/contrib/sidekiq/ext.rb +30 -30
  738. data/lib/datadog/tracing/contrib/sidekiq/integration.rb +7 -7
  739. data/lib/datadog/tracing/contrib/sidekiq/patcher.rb +8 -8
  740. data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +14 -14
  741. data/lib/datadog/tracing/contrib/sidekiq/utils.rb +9 -9
  742. data/lib/datadog/tracing/contrib/sidekiq.rb +6 -6
  743. data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +2 -2
  744. data/lib/datadog/tracing/contrib/sinatra/env.rb +6 -6
  745. data/lib/datadog/tracing/contrib/sinatra/ext.rb +17 -17
  746. data/lib/datadog/tracing/contrib/sinatra/framework.rb +2 -2
  747. data/lib/datadog/tracing/contrib/sinatra/integration.rb +5 -5
  748. data/lib/datadog/tracing/contrib/sinatra/patcher.rb +5 -5
  749. data/lib/datadog/tracing/contrib/sinatra/tracer.rb +10 -10
  750. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +8 -8
  751. data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +1 -1
  752. data/lib/datadog/tracing/contrib/sneakers/ext.rb +12 -12
  753. data/lib/datadog/tracing/contrib/sneakers/integration.rb +7 -7
  754. data/lib/datadog/tracing/contrib/sneakers/patcher.rb +2 -2
  755. data/lib/datadog/tracing/contrib/sneakers/tracer.rb +3 -3
  756. data/lib/datadog/tracing/contrib/span_attribute_schema.rb +2 -2
  757. data/lib/datadog/tracing/contrib/status_range_env_parser.rb +2 -2
  758. data/lib/datadog/tracing/contrib/status_range_matcher.rb +1 -1
  759. data/lib/datadog/tracing/contrib/stripe/configuration/settings.rb +2 -2
  760. data/lib/datadog/tracing/contrib/stripe/ext.rb +12 -12
  761. data/lib/datadog/tracing/contrib/stripe/integration.rb +5 -5
  762. data/lib/datadog/tracing/contrib/stripe/patcher.rb +2 -2
  763. data/lib/datadog/tracing/contrib/stripe/request.rb +3 -3
  764. data/lib/datadog/tracing/contrib/sucker_punch/configuration/settings.rb +2 -2
  765. data/lib/datadog/tracing/contrib/sucker_punch/exception_handler.rb +1 -1
  766. data/lib/datadog/tracing/contrib/sucker_punch/ext.rb +13 -13
  767. data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +4 -4
  768. data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +5 -5
  769. data/lib/datadog/tracing/contrib/sucker_punch/patcher.rb +4 -4
  770. data/lib/datadog/tracing/contrib/trilogy/configuration/settings.rb +3 -3
  771. data/lib/datadog/tracing/contrib/trilogy/ext.rb +11 -11
  772. data/lib/datadog/tracing/contrib/trilogy/instrumentation.rb +6 -6
  773. data/lib/datadog/tracing/contrib/trilogy/integration.rb +5 -5
  774. data/lib/datadog/tracing/contrib/trilogy/patcher.rb +2 -2
  775. data/lib/datadog/tracing/contrib/utils/database.rb +5 -5
  776. data/lib/datadog/tracing/contrib/utils/quantization/hash_formatter.rb +1 -1
  777. data/lib/datadog/tracing/contrib/utils/quantization/http.rb +10 -10
  778. data/lib/datadog/tracing/contrib/waterdrop/configuration/settings.rb +2 -2
  779. data/lib/datadog/tracing/contrib/waterdrop/distributed/propagation.rb +8 -8
  780. data/lib/datadog/tracing/contrib/waterdrop/ext.rb +4 -4
  781. data/lib/datadog/tracing/contrib/waterdrop/integration.rb +5 -5
  782. data/lib/datadog/tracing/contrib/waterdrop/middleware.rb +2 -2
  783. data/lib/datadog/tracing/contrib/waterdrop/patcher.rb +7 -7
  784. data/lib/datadog/tracing/contrib/waterdrop/producer.rb +3 -3
  785. data/lib/datadog/tracing/contrib/waterdrop.rb +6 -6
  786. data/lib/datadog/tracing/contrib.rb +54 -54
  787. data/lib/datadog/tracing/correlation.rb +10 -10
  788. data/lib/datadog/tracing/diagnostics/environment_logger.rb +9 -9
  789. data/lib/datadog/tracing/diagnostics/ext.rb +19 -19
  790. data/lib/datadog/tracing/diagnostics/health.rb +1 -1
  791. data/lib/datadog/tracing/distributed/b3_multi.rb +8 -8
  792. data/lib/datadog/tracing/distributed/b3_single.rb +4 -4
  793. data/lib/datadog/tracing/distributed/baggage.rb +28 -27
  794. data/lib/datadog/tracing/distributed/datadog.rb +21 -21
  795. data/lib/datadog/tracing/distributed/datadog_tags_codec.rb +3 -3
  796. data/lib/datadog/tracing/distributed/fetcher.rb +1 -1
  797. data/lib/datadog/tracing/distributed/helpers.rb +3 -3
  798. data/lib/datadog/tracing/distributed/propagation.rb +12 -12
  799. data/lib/datadog/tracing/distributed/propagation_policy.rb +5 -0
  800. data/lib/datadog/tracing/distributed/trace_context.rb +33 -33
  801. data/lib/datadog/tracing/event.rb +1 -1
  802. data/lib/datadog/tracing/ext.rb +9 -0
  803. data/lib/datadog/tracing/metadata/analytics.rb +2 -2
  804. data/lib/datadog/tracing/metadata/errors.rb +4 -4
  805. data/lib/datadog/tracing/metadata/ext.rb +69 -69
  806. data/lib/datadog/tracing/metadata/metastruct.rb +1 -1
  807. data/lib/datadog/tracing/metadata/metastruct_tagging.rb +1 -1
  808. data/lib/datadog/tracing/metadata/tagging.rb +2 -2
  809. data/lib/datadog/tracing/metadata.rb +4 -4
  810. data/lib/datadog/tracing/pipeline/span_filter.rb +2 -2
  811. data/lib/datadog/tracing/pipeline.rb +2 -2
  812. data/lib/datadog/tracing/remote.rb +45 -7
  813. data/lib/datadog/tracing/sampling/all_sampler.rb +1 -1
  814. data/lib/datadog/tracing/sampling/ext.rb +8 -8
  815. data/lib/datadog/tracing/sampling/matcher.rb +4 -4
  816. data/lib/datadog/tracing/sampling/priority_sampler.rb +4 -4
  817. data/lib/datadog/tracing/sampling/rate_by_key_sampler.rb +3 -3
  818. data/lib/datadog/tracing/sampling/rate_by_service_sampler.rb +2 -2
  819. data/lib/datadog/tracing/sampling/rate_sampler.rb +2 -2
  820. data/lib/datadog/tracing/sampling/rule.rb +4 -4
  821. data/lib/datadog/tracing/sampling/rule_sampler.rb +12 -12
  822. data/lib/datadog/tracing/sampling/sampler.rb +2 -2
  823. data/lib/datadog/tracing/sampling/span/ext.rb +3 -3
  824. data/lib/datadog/tracing/sampling/span/matcher.rb +2 -2
  825. data/lib/datadog/tracing/sampling/span/rule.rb +1 -1
  826. data/lib/datadog/tracing/sampling/span/rule_parser.rb +8 -8
  827. data/lib/datadog/tracing/span.rb +8 -8
  828. data/lib/datadog/tracing/span_event.rb +5 -5
  829. data/lib/datadog/tracing/span_operation.rb +21 -21
  830. data/lib/datadog/tracing/sync_writer.rb +12 -7
  831. data/lib/datadog/tracing/trace_operation.rb +11 -11
  832. data/lib/datadog/tracing/trace_segment.rb +10 -10
  833. data/lib/datadog/tracing/tracer.rb +23 -15
  834. data/lib/datadog/tracing/transport/http/client.rb +4 -4
  835. data/lib/datadog/tracing/transport/http/statistics.rb +2 -2
  836. data/lib/datadog/tracing/transport/http/traces.rb +8 -8
  837. data/lib/datadog/tracing/transport/http.rb +10 -10
  838. data/lib/datadog/tracing/transport/io/client.rb +2 -2
  839. data/lib/datadog/tracing/transport/io/response.rb +1 -1
  840. data/lib/datadog/tracing/transport/io/traces.rb +4 -4
  841. data/lib/datadog/tracing/transport/io.rb +3 -3
  842. data/lib/datadog/tracing/transport/native/response.rb +71 -0
  843. data/lib/datadog/tracing/transport/native.rb +363 -0
  844. data/lib/datadog/tracing/transport/serializable_trace.rb +19 -19
  845. data/lib/datadog/tracing/transport/statistics.rb +2 -2
  846. data/lib/datadog/tracing/transport/trace_formatter.rb +10 -10
  847. data/lib/datadog/tracing/transport/traces.rb +8 -8
  848. data/lib/datadog/tracing/utils.rb +2 -2
  849. data/lib/datadog/tracing/workers.rb +2 -2
  850. data/lib/datadog/tracing/writer.rb +21 -8
  851. data/lib/datadog/tracing.rb +3 -3
  852. data/lib/datadog/version.rb +4 -4
  853. data/lib/datadog.rb +13 -12
  854. metadata +33 -8
@@ -1,11 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative '../metadata/ext'
4
- require_relative '../trace_digest'
5
- require_relative 'datadog_tags_codec'
6
- require_relative '../utils'
7
- require_relative 'helpers'
8
- require 'uri'
3
+ require_relative "../ext"
4
+ require_relative "../metadata/ext"
5
+ require_relative "../trace_digest"
6
+ require_relative "datadog_tags_codec"
7
+ require_relative "../utils"
8
+ require_relative "helpers"
9
+ require "uri"
9
10
 
10
11
  module Datadog
11
12
  module Tracing
@@ -14,10 +15,10 @@ module Datadog
14
15
  # The baggage header is propagated through `baggage`.
15
16
  # @see https://www.w3.org/TR/baggage/
16
17
  class Baggage
17
- BAGGAGE_KEY = 'baggage'
18
+ BAGGAGE_KEY = "baggage"
18
19
  DD_TRACE_BAGGAGE_MAX_ITEMS = 64
19
20
  DD_TRACE_BAGGAGE_MAX_BYTES = 8192
20
- BAGGAGE_TAG_KEYS_MATCH_ALL = ['*'].freeze
21
+ BAGGAGE_TAG_KEYS_MATCH_ALL = ["*"].freeze
21
22
  SAFE_CHARACTERS_KEY = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789$!#&'*+-.^_`|~"
22
23
  SAFE_CHARACTERS_VALUE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789$!#&'()*+-./:<>?@[]^_`{|}~"
23
24
 
@@ -42,9 +43,9 @@ module Datadog
42
43
  ::Datadog.logger.warn("Baggage item limit (#{DD_TRACE_BAGGAGE_MAX_ITEMS}) exceeded, dropping excess items")
43
44
  # Record telemetry for item count truncation
44
45
  record_telemetry_metric(
45
- 'context_header.truncated',
46
+ "context_header.truncated",
46
47
  1,
47
- {'header_style' => 'baggage', 'truncation_reason' => 'baggage_item_count_exceeded'}
48
+ {"header_style" => "baggage", "truncation_reason" => "baggage_item_count_exceeded"}
48
49
  )
49
50
  baggage_items = baggage_items.first(DD_TRACE_BAGGAGE_MAX_ITEMS)
50
51
  end
@@ -59,9 +60,9 @@ module Datadog
59
60
  ::Datadog.logger.warn("Baggage header size (#{DD_TRACE_BAGGAGE_MAX_BYTES}) exceeded, dropping excess items")
60
61
  # Record telemetry for byte count truncation
61
62
  record_telemetry_metric(
62
- 'context_header.truncated',
63
+ "context_header.truncated",
63
64
  1,
64
- {'header_style' => 'baggage', 'truncation_reason' => 'baggage_byte_count_exceeded'}
65
+ {"header_style" => "baggage", "truncation_reason" => "baggage_byte_count_exceeded"}
65
66
  )
66
67
  break # stop adding items when size limit is reached
67
68
  end
@@ -72,10 +73,10 @@ module Datadog
72
73
  # edge case where a single item is too large
73
74
  return if encoded_items.empty?
74
75
 
75
- data[@baggage_key] = encoded_items.join(',')
76
+ data[@baggage_key] = encoded_items.join(",")
76
77
 
77
78
  # Record telemetry for successful injection
78
- record_telemetry_metric('context_header_style.injected', 1, {'header_style' => 'baggage'})
79
+ record_telemetry_metric("context_header_style.injected", 1, {"header_style" => "baggage"})
79
80
  rescue => e
80
81
  ::Datadog.logger.warn("Failed to encode and inject baggage header: #{e.class}: #{e.message}")
81
82
  end
@@ -94,7 +95,7 @@ module Datadog
94
95
 
95
96
  # Record telemetry for successful extraction only if baggage is not empty
96
97
  unless baggage.empty?
97
- record_telemetry_metric('context_header_style.extracted', 1, {'header_style' => 'baggage'})
98
+ record_telemetry_metric("context_header_style.extracted", 1, {"header_style" => "baggage"})
98
99
  end
99
100
 
100
101
  TraceDigest.new(
@@ -109,7 +110,7 @@ module Datadog
109
110
  # Strip whitespace and URL-encode the item
110
111
  result = URI.encode_www_form_component(item.strip)
111
112
  # Replace '+' with '%20' for space encoding consistency with W3C spec
112
- result = result.gsub('+', '%20')
113
+ result = result.gsub("+", "%20")
113
114
  # Selectively decode percent-encoded characters that are considered "safe" in W3C Baggage spec
114
115
  result.gsub(/%[0-9A-F]{2}/) do |encoded|
115
116
  if encoded.size >= 3 && encoded[1..2] =~ /\A[0-9A-F]{2}\z/
@@ -117,7 +118,7 @@ module Datadog
117
118
  next encoded unless hex_str && !hex_str.empty?
118
119
 
119
120
  # Convert hex representation back to character
120
- char = [hex_str.hex].pack('C')
121
+ char = [hex_str.hex].pack("C")
121
122
  # Keep the character as-is if it's in the safe character set, otherwise keep it encoded
122
123
  safe_characters.include?(char) ? char : encoded
123
124
  else
@@ -144,12 +145,12 @@ module Datadog
144
145
  # the typical Rack path is unaffected; only UTF-8-tagged-but-actually-invalid
145
146
  # input (e.g. headers re-encoded upstream) is short-circuited here.
146
147
  unless baggage_header.valid_encoding?
147
- record_telemetry_metric('context_header_style.malformed', 1, {'header_style' => 'baggage'})
148
+ record_telemetry_metric("context_header_style.malformed", 1, {"header_style" => "baggage"})
148
149
  return {}
149
150
  end
150
151
 
151
152
  if baggage_header.bytesize > DD_TRACE_BAGGAGE_MAX_BYTES
152
- record_telemetry_metric('context_header.truncated', 1, {'header_style' => 'baggage', 'truncation_reason' => 'baggage_byte_count_exceeded'})
153
+ record_telemetry_metric("context_header.truncated", 1, {"header_style" => "baggage", "truncation_reason" => "baggage_byte_count_exceeded"})
153
154
 
154
155
  # We MUST NOT propagate partial entries, but we SHOULD try
155
156
  # to parse as much of the baggage as possible:
@@ -157,7 +158,7 @@ module Datadog
157
158
 
158
159
  # We parse 1 byte over the limit to detect if the last entry
159
160
  # is a partial entry (toss) or ends exactly at the limit (keep).
160
- remove_last_entry = baggage_header.byteslice(DD_TRACE_BAGGAGE_MAX_BYTES, 1) != ','
161
+ remove_last_entry = baggage_header.byteslice(DD_TRACE_BAGGAGE_MAX_BYTES, 1) != ","
161
162
 
162
163
  # To ensure we don't have a trailing partial UTF-8 codepoint, we keep one extra byte
163
164
  # and safely remove it with `#chop`.
@@ -170,10 +171,10 @@ module Datadog
170
171
  baggage = {}
171
172
  # DEV: To avoid unnecessary eager string allocation, replace with
172
173
  # DEV: `split(',') { |s| ... }` when Ruby 2.5 is no longer supported.
173
- baggages = baggage_header.split(',', DD_TRACE_BAGGAGE_MAX_ITEMS + 1) # Stop splitting if we've reached max size
174
+ baggages = baggage_header.split(",", DD_TRACE_BAGGAGE_MAX_ITEMS + 1) # Stop splitting if we've reached max size
174
175
  baggages.each_with_index do |key_value, index|
175
176
  if index >= DD_TRACE_BAGGAGE_MAX_ITEMS
176
- record_telemetry_metric('context_header.truncated', 1, {'header_style' => 'baggage', 'truncation_reason' => 'baggage_item_count_exceeded'})
177
+ record_telemetry_metric("context_header.truncated", 1, {"header_style" => "baggage", "truncation_reason" => "baggage_item_count_exceeded"})
177
178
  break
178
179
  end
179
180
 
@@ -183,11 +184,11 @@ module Datadog
183
184
  # Empty items are skipped
184
185
  next if key_value.strip.empty?
185
186
 
186
- key, value = key_value.split('=', 2)
187
+ key, value = key_value.split("=", 2)
187
188
  # If baggage is malformed, return an empty hash
188
189
  if key.nil? || value.nil?
189
190
  # Record telemetry for malformed header
190
- record_telemetry_metric('context_header_style.malformed', 1, {'header_style' => 'baggage'})
191
+ record_telemetry_metric("context_header_style.malformed", 1, {"header_style" => "baggage"})
191
192
  return {}
192
193
  end
193
194
 
@@ -198,13 +199,13 @@ module Datadog
198
199
  # `URI.decode_www_form_component` raises on malformed percent encoding
199
200
  # (e.g. `%XX`, lone `%`). Treat as malformed rather than letting it
200
201
  # propagate to `Propagation#extract`'s caller.
201
- record_telemetry_metric('context_header_style.malformed', 1, {'header_style' => 'baggage'})
202
+ record_telemetry_metric("context_header_style.malformed", 1, {"header_style" => "baggage"})
202
203
  return {}
203
204
  end
204
205
 
205
206
  if key.empty? || value.empty?
206
207
  # Record telemetry for malformed header
207
- record_telemetry_metric('context_header_style.malformed', 1, {'header_style' => 'baggage'})
208
+ record_telemetry_metric("context_header_style.malformed", 1, {"header_style" => "baggage"})
208
209
  return {}
209
210
  end
210
211
 
@@ -243,7 +244,7 @@ module Datadog
243
244
  # Record telemetry metrics for baggage operations
244
245
  def record_telemetry_metric(metric_name, value, tags)
245
246
  telemetry = ::Datadog.send(:components).telemetry
246
- telemetry.inc('instrumentation_telemetry_data.tracers', metric_name, value, tags: tags)
247
+ telemetry.inc(Tracing::Ext::TELEMETRY_METRICS_NAMESPACE, metric_name, value, tags: tags)
247
248
  end
248
249
  end
249
250
  end
@@ -1,25 +1,25 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative '../metadata/ext'
4
- require_relative '../trace_digest'
5
- require_relative 'datadog_tags_codec'
6
- require_relative '../utils'
7
- require_relative 'helpers'
3
+ require_relative "../metadata/ext"
4
+ require_relative "../trace_digest"
5
+ require_relative "datadog_tags_codec"
6
+ require_relative "../utils"
7
+ require_relative "helpers"
8
8
 
9
9
  module Datadog
10
10
  module Tracing
11
11
  module Distributed
12
12
  # Datadog-style trace propagation.
13
13
  class Datadog
14
- TRACE_ID_KEY = 'x-datadog-trace-id'
15
- PARENT_ID_KEY = 'x-datadog-parent-id'
16
- SAMPLING_PRIORITY_KEY = 'x-datadog-sampling-priority'
17
- ORIGIN_KEY = 'x-datadog-origin'
14
+ TRACE_ID_KEY = "x-datadog-trace-id"
15
+ PARENT_ID_KEY = "x-datadog-parent-id"
16
+ SAMPLING_PRIORITY_KEY = "x-datadog-sampling-priority"
17
+ ORIGIN_KEY = "x-datadog-origin"
18
18
  # Distributed trace-level tags
19
- TAGS_KEY = 'x-datadog-tags'
19
+ TAGS_KEY = "x-datadog-tags"
20
20
 
21
21
  # Prefix used by all Datadog-specific distributed tags
22
- TAGS_PREFIX = 'x-datadog-'
22
+ TAGS_PREFIX = "x-datadog-"
23
23
 
24
24
  def initialize(
25
25
  fetcher:,
@@ -108,7 +108,7 @@ module Datadog
108
108
 
109
109
  return tags if high_order == 0
110
110
 
111
- tags.merge(Tracing::Metadata::Ext::Distributed::TAG_TID => format('%016x', high_order))
111
+ tags.merge(Tracing::Metadata::Ext::Distributed::TAG_TID => format("%016x", high_order))
112
112
  end
113
113
 
114
114
  # Side effect: Remove high order 64 bit hex-encoded `tid` tag from distributed tags
@@ -127,15 +127,15 @@ module Datadog
127
127
  # DEV: This means errors cannot be reported if there's not active span.
128
128
  # DEV: Ideally, we'd have a dedicated error reporting stream for all of datadog.
129
129
  def inject_tags!(tags, data)
130
- return set_tags_propagation_error(reason: 'disabled') if tags_disabled?
130
+ return set_tags_propagation_error(reason: "disabled") if tags_disabled?
131
131
 
132
132
  encoded_tags = DatadogTagsCodec.encode(tags)
133
133
 
134
- return set_tags_propagation_error(reason: 'inject_max_size') if tags_too_large?(encoded_tags, scenario: 'inject')
134
+ return set_tags_propagation_error(reason: "inject_max_size") if tags_too_large?(encoded_tags, scenario: "inject")
135
135
 
136
136
  data[@tags_key] = encoded_tags
137
137
  rescue => e
138
- set_tags_propagation_error(reason: 'encoding_error')
138
+ set_tags_propagation_error(reason: "encoding_error")
139
139
  ::Datadog.logger.warn(
140
140
  "Failed to inject x-datadog-tags: #{e.class}: #{e.message} at #{Array(e.backtrace).first}"
141
141
  )
@@ -152,8 +152,8 @@ module Datadog
152
152
  tags = fetcher[@tags_key]
153
153
 
154
154
  return if !tags || tags.empty?
155
- return set_tags_propagation_error(reason: 'disabled') if tags_disabled?
156
- return set_tags_propagation_error(reason: 'extract_max_size') if tags_too_large?(tags, scenario: 'extract')
155
+ return set_tags_propagation_error(reason: "disabled") if tags_disabled?
156
+ return set_tags_propagation_error(reason: "extract_max_size") if tags_too_large?(tags, scenario: "extract")
157
157
 
158
158
  tags_hash = DatadogTagsCodec.decode(tags)
159
159
  # Only extract keys with the expected Datadog prefix
@@ -162,7 +162,7 @@ module Datadog
162
162
  end
163
163
  tags_hash
164
164
  rescue => e
165
- set_tags_propagation_error(reason: 'decoding_error')
165
+ set_tags_propagation_error(reason: "decoding_error")
166
166
  ::Datadog.logger.warn(
167
167
  "Failed to extract x-datadog-tags: #{e.class}: #{e.message} at #{Array(e.backtrace).first}"
168
168
  )
@@ -171,7 +171,7 @@ module Datadog
171
171
 
172
172
  def set_tags_propagation_error(reason:)
173
173
  active_trace = Tracing.active_trace
174
- active_trace&.set_tag('_dd.propagation_error', reason)
174
+ active_trace&.set_tag("_dd.propagation_error", reason)
175
175
  nil
176
176
  end
177
177
 
@@ -188,14 +188,14 @@ module Datadog
188
188
  ::Datadog.logger.warn(
189
189
  "Failed to #{scenario} x-datadog-tags: tags are too large for configured limit (bytesize:#{size} >= " \
190
190
  "limit:#{max_length}). This limit can be configured " \
191
- 'through the DD_TRACE_X_DATADOG_TAGS_MAX_LENGTH environment variable.'
191
+ "through the DD_TRACE_X_DATADOG_TAGS_MAX_LENGTH environment variable."
192
192
  )
193
193
 
194
194
  true
195
195
  end
196
196
 
197
197
  # We want to exclude tags that we don't want to propagate downstream.
198
- EXCLUDED_TAG = '_dd.p.upstream_services'
198
+ EXCLUDED_TAG = "_dd.p.upstream_services"
199
199
  private_constant :EXCLUDED_TAG
200
200
  end
201
201
  end
@@ -26,7 +26,7 @@ module Datadog
26
26
  raise EncodingError, "Invalid value `#{value}` for key `#{key}`" unless VALID_VALUE_CHARS.match?(value)
27
27
 
28
28
  "#{key}=#{value.strip}"
29
- end.join(',')
29
+ end.join(",")
30
30
  rescue => e
31
31
  raise EncodingError, "Error encoding tags `#{tags}`: `#{e.class}: #{e.message}`"
32
32
  end
@@ -37,8 +37,8 @@ module Datadog
37
37
  # @return [Hash<String,String>] decoded input as a hash of strings
38
38
  # @raise [DecodingError] if string does not conform to the `x-datadog-tags` format
39
39
  def self.decode(string)
40
- result = (string.split(',').map do |raw_tag|
41
- raw_tag.split('=', 2).tap do |raw_key, raw_value|
40
+ result = (string.split(",").map do |raw_tag|
41
+ raw_tag.split("=", 2).tap do |raw_key, raw_value|
42
42
  key = raw_key.to_s
43
43
  value = raw_value.to_s
44
44
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'helpers'
3
+ require_relative "helpers"
4
4
 
5
5
  module Datadog
6
6
  module Tracing
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative '../sampling/ext'
4
- require_relative '../utils'
3
+ require_relative "../sampling/ext"
4
+ require_relative "../utils"
5
5
 
6
6
  module Datadog
7
7
  module Tracing
@@ -47,7 +47,7 @@ module Datadog
47
47
  # for us so we want to make sure the comparision will work as expected
48
48
  # DEV: regex, remove all leading zeros up until we find the last 0 in the string
49
49
  # or we find the first non-zero, this allows `'0000' -> '0'` and `'00001' -> '1'`
50
- value = value.sub(/^0*(?=(0$)|[^0])/, '')
50
+ value = value.sub(/^0*(?=(0$)|[^0])/, "")
51
51
 
52
52
  # Convert value to an integer
53
53
  # DEV: Ruby `.to_i` will return `0` if a number could not be parsed
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative '../configuration/ext'
4
- require_relative '../trace_digest'
5
- require_relative '../trace_operation'
6
- require_relative '../span_link'
7
- require_relative '../../core/telemetry/logger'
8
- require_relative 'baggage'
3
+ require_relative "../configuration/ext"
4
+ require_relative "../trace_digest"
5
+ require_relative "../trace_operation"
6
+ require_relative "../span_link"
7
+ require_relative "../../core/telemetry/logger"
8
+ require_relative "baggage"
9
9
 
10
10
  module Datadog
11
11
  module Tracing
@@ -62,13 +62,13 @@ module Datadog
62
62
  # @return [nil] in case of unrecoverable errors, see `Datadog.logger` output for details.
63
63
  def inject!(digest, data)
64
64
  if digest.nil?
65
- ::Datadog.logger.debug('Cannot inject distributed trace data: digest is nil.')
65
+ ::Datadog.logger.debug("Cannot inject distributed trace data: digest is nil.")
66
66
  return nil
67
67
  end
68
68
 
69
69
  digest = digest.to_digest if digest.respond_to?(:to_digest)
70
70
  if digest.trace_id.nil? && digest.baggage.nil?
71
- ::Datadog.logger.debug('Cannot inject distributed trace data: digest.trace_id and digest.baggage are both nil.')
71
+ ::Datadog.logger.debug("Cannot inject distributed trace data: digest.trace_id and digest.baggage are both nil.")
72
72
  return nil
73
73
  end
74
74
 
@@ -166,11 +166,11 @@ module Datadog
166
166
  link = SpanLink.new(
167
167
  extracted_trace_digest,
168
168
  attributes: {
169
- 'reason' => 'propagation_behavior_extract',
170
- 'context_headers' => extracted_style_name,
169
+ "reason" => "propagation_behavior_extract",
170
+ "context_headers" => extracted_style_name,
171
171
  }
172
172
  )
173
- baggage_tags = extracted_trace_digest.trace_distributed_tags&.select { |k, _| k.start_with?('baggage.') }
173
+ baggage_tags = extracted_trace_digest.trace_distributed_tags&.select { |k, _| k.start_with?("baggage.") }
174
174
  baggage_tags = nil if baggage_tags&.empty?
175
175
  TraceDigest.new(
176
176
  span_links: [link],
@@ -210,7 +210,7 @@ module Datadog
210
210
  tracecontext_tags[Tracing::Metadata::Ext::Distributed::TAG_DD_PARENT_ID]
211
211
  elsif dd_propagator && (dd_digest = dd_propagator.extract(headers))
212
212
  # if p value is not present in tracestate, use the parent id from the datadog headers
213
- format('%016x', dd_digest.span_id)
213
+ format("%016x", dd_digest.span_id)
214
214
  end
215
215
  end
216
216
  end
@@ -28,6 +28,11 @@ module Datadog
28
28
  return true
29
29
  end
30
30
 
31
+ if ::Datadog.configuration.respond_to?(:ai_guard) && ::Datadog.configuration.ai_guard.enabled &&
32
+ (trace_source & ::Datadog::AIGuard::Ext::PRODUCT_BIT) != 0
33
+ return true
34
+ end
35
+
31
36
  return false
32
37
  end
33
38
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative '../../core/utils'
4
- require_relative 'helpers'
3
+ require_relative "../../core/utils"
4
+ require_relative "helpers"
5
5
 
6
6
  module Datadog
7
7
  module Tracing
@@ -10,9 +10,9 @@ module Datadog
10
10
  # The trace is propagated through two fields: `traceparent` and `tracestate`.
11
11
  # @see https://www.w3.org/TR/trace-context/
12
12
  class TraceContext
13
- TRACEPARENT_KEY = 'traceparent'
14
- TRACESTATE_KEY = 'tracestate'
15
- SPEC_VERSION = '00'
13
+ TRACEPARENT_KEY = "traceparent"
14
+ TRACESTATE_KEY = "tracestate"
15
+ SPEC_VERSION = "00"
16
16
 
17
17
  def initialize(
18
18
  fetcher:,
@@ -123,7 +123,7 @@ module Datadog
123
123
 
124
124
  # @see https://www.w3.org/TR/trace-context/#tracestate-header
125
125
  def build_tracestate(digest)
126
- tracestate = +'dd='
126
+ tracestate = +"dd="
127
127
  append_dd(tracestate, last_dd_parent_id(digest))
128
128
  append_dd(tracestate, "s:#{digest.trace_sampling_priority};") if digest.trace_sampling_priority
129
129
  append_dd(tracestate, "o:#{serialize_origin(digest.trace_origin)};") if digest.trace_origin
@@ -150,20 +150,20 @@ module Datadog
150
150
 
151
151
  if vendors && !vendors.empty?
152
152
  # Delete existing `dd=` tracestate fields, if present.
153
- vendors.reject! { |v| v.start_with?('dd=') }
153
+ vendors.reject! { |v| v.start_with?("dd=") }
154
154
 
155
155
  # Ensure the list has at most 31 elements, as we need to prepend Datadog's
156
156
  # entry and the limit is 32 elements total.
157
157
  vendors.first(TRACESTATE_MAX_LIST_MEMBERS - 1).each do |vendor|
158
158
  break if tracestate.bytesize + vendor.bytesize + 1 > TRACESTATE_MAX_SIZE_LIMIT
159
159
 
160
- tracestate << ',' << vendor
160
+ tracestate << "," << vendor
161
161
  end
162
162
  end
163
163
 
164
164
  tracestate.to_s
165
165
  elsif vendors && !vendors.empty?
166
- vendors.join(',')
166
+ vendors.join(",")
167
167
  end
168
168
  end
169
169
 
@@ -185,7 +185,7 @@ module Datadog
185
185
  elsif digest.trace_distributed_tags&.key?(Tracing::Metadata::Ext::Distributed::TAG_DD_PARENT_ID)
186
186
  "p:#{digest.trace_distributed_tags[Tracing::Metadata::Ext::Distributed::TAG_DD_PARENT_ID]};"
187
187
  else
188
- ''
188
+ ""
189
189
  end
190
190
  end
191
191
 
@@ -198,13 +198,13 @@ module Datadog
198
198
  # DEV: come from Datadog-controlled sources.
199
199
  # DEV: Trying to `match?` is measurably faster than a `gsub` that does not match.
200
200
  value = if INVALID_ORIGIN_CHARS.match?(value)
201
- value.gsub(INVALID_ORIGIN_CHARS, '_')
201
+ value.gsub(INVALID_ORIGIN_CHARS, "_")
202
202
  else
203
203
  value
204
204
  end
205
205
 
206
206
  if REMAP_ORIGIN_CHARS.match?(value)
207
- value.gsub(REMAP_ORIGIN_CHARS, '~')
207
+ value.gsub(REMAP_ORIGIN_CHARS, "~")
208
208
  else
209
209
  value
210
210
  end
@@ -221,7 +221,7 @@ module Datadog
221
221
  # DEV: It's unlikely that characters will be out of range, as they mostly
222
222
  # DEV: come from Datadog-controlled sources.
223
223
  # DEV: Trying to `match?` is measurably faster than a `gsub!` that does not match.
224
- key.gsub!(INVALID_TAG_KEY_CHARS, '_') if INVALID_TAG_KEY_CHARS.match?(key)
224
+ key.gsub!(INVALID_TAG_KEY_CHARS, "_") if INVALID_TAG_KEY_CHARS.match?(key)
225
225
 
226
226
  key
227
227
  end
@@ -235,14 +235,14 @@ module Datadog
235
235
  # DEV: come from Datadog-controlled sources.
236
236
  # DEV: Trying to `match?` is measurably faster than a `gsub` that does not match.
237
237
  ret = if INVALID_TAG_VALUE_CHARS.match?(value)
238
- value.gsub(INVALID_TAG_VALUE_CHARS, '_')
238
+ value.gsub(INVALID_TAG_VALUE_CHARS, "_")
239
239
  else
240
240
  value
241
241
  end
242
242
 
243
243
  # DEV: Checking for an unlikely '=' is faster than a no-op `tr`.
244
- if ret.include?('=')
245
- ret.tr('=', '~')
244
+ if ret.include?("=")
245
+ ret.tr("=", "~")
246
246
  else
247
247
  ret
248
248
  end
@@ -265,11 +265,11 @@ module Datadog
265
265
 
266
266
  traceparent = traceparent.strip
267
267
 
268
- version, trace_id, parent_id, trace_flags, extra = traceparent.split('-', 5)
268
+ version, trace_id, parent_id, trace_flags, extra = traceparent.split("-", 5)
269
269
 
270
270
  return unless version && trace_id && parent_id && trace_flags
271
271
  return if version.size != 2 || trace_id.size != 32 || parent_id.size != 16 || trace_flags.size != 2
272
- return if version[0] < '0' || version[0] > 'f' || version[1] < '0' || version[1] > 'f'
272
+ return if version[0] < "0" || version[0] > "f" || version[1] < "0" || version[1] > "f"
273
273
 
274
274
  return if version == INVALID_VERSION
275
275
 
@@ -294,10 +294,10 @@ module Datadog
294
294
  vendors = split_tracestate(tracestate)
295
295
  return unless vendors && !vendors.empty?
296
296
 
297
- tracestate = vendors.join(',')
297
+ tracestate = vendors.join(",")
298
298
 
299
299
  # Find Datadog's `dd=` tracestate field.
300
- idx = vendors.index { |v| v.start_with?('dd=') }
300
+ idx = vendors.index { |v| v.start_with?("dd=") }
301
301
  return tracestate unless idx
302
302
 
303
303
  # Delete `dd=` prefix
@@ -306,7 +306,7 @@ module Datadog
306
306
 
307
307
  origin, sampling_priority, ts_parent_id, tags, unknown_fields = extract_datadog_fields(dd_tracestate)
308
308
 
309
- [vendors.join(','), sampling_priority, origin, ts_parent_id, tags, unknown_fields]
309
+ [vendors.join(","), sampling_priority, origin, ts_parent_id, tags, unknown_fields]
310
310
  end
311
311
 
312
312
  def extract_datadog_fields(dd_tracestate)
@@ -317,18 +317,18 @@ module Datadog
317
317
  unknown_fields = nil
318
318
 
319
319
  # DEV: Since Ruby 2.6 `split` can receive a block, so `each` can be removed then.
320
- dd_tracestate.split(';').each do |pair|
321
- key, value = pair.split(':', 2)
320
+ dd_tracestate.split(";").each do |pair|
321
+ key, value = pair.split(":", 2)
322
322
  case key
323
- when 's'
323
+ when "s"
324
324
  sampling_priority = begin
325
325
  Integer(value)
326
326
  rescue
327
327
  nil
328
328
  end
329
- when 'o'
329
+ when "o"
330
330
  origin = value
331
- when 'p'
331
+ when "p"
332
332
  ts_parent_id = value
333
333
  when /^t\./
334
334
  key.slice!(0..1) # Delete `t.` prefix
@@ -342,9 +342,9 @@ module Datadog
342
342
  tags ||= {}
343
343
  tags["#{Tracing::Metadata::Ext::Distributed::TAGS_PREFIX}#{key}"] = value
344
344
  else
345
- unknown_fields ||= +''
345
+ unknown_fields ||= +""
346
346
  unknown_fields << pair
347
- unknown_fields << ';'
347
+ unknown_fields << ";"
348
348
  end
349
349
  end
350
350
 
@@ -353,7 +353,7 @@ module Datadog
353
353
 
354
354
  # Restore `~` back to `=`.
355
355
  def deserialize_tag_value(value)
356
- value.tr!('~', '=')
356
+ value.tr!("~", "=")
357
357
  value
358
358
  end
359
359
 
@@ -391,7 +391,7 @@ module Datadog
391
391
  if tracestate.bytesize > TRACESTATE_MAX_SIZE_LIMIT
392
392
  # We parse 1 byte over the limit to detect if the last member
393
393
  # is a partial member (toss) or ends exactly at the limit (keep).
394
- remove_last_member = tracestate.byteslice(TRACESTATE_MAX_SIZE_LIMIT, 1) != ','
394
+ remove_last_member = tracestate.byteslice(TRACESTATE_MAX_SIZE_LIMIT, 1) != ","
395
395
 
396
396
  # To ensure we don't have a trailing partial UTF-8 codepoint, we keep one extra byte
397
397
  # and safely remove it with `#chop`.
@@ -404,13 +404,13 @@ module Datadog
404
404
  tracestate = ::Datadog::Core::Utils.utf8_encode(tracestate, placeholder: nil)
405
405
  return unless tracestate
406
406
 
407
- vendors = tracestate.split(',', TRACESTATE_MAX_LIST_MEMBERS + 1)
407
+ vendors = tracestate.split(",", TRACESTATE_MAX_LIST_MEMBERS + 1)
408
408
  if vendors.length > TRACESTATE_MAX_LIST_MEMBERS || remove_last_member
409
409
  vendors.pop
410
410
  end
411
411
 
412
412
  vendors.each(&:strip!)
413
- vendors.pop while vendors.last == ''
413
+ vendors.pop while vendors.last == ""
414
414
  vendors
415
415
  end
416
416
 
@@ -425,7 +425,7 @@ module Datadog
425
425
 
426
426
  # Version 0xFF is invalid as per spec
427
427
  # @see https://www.w3.org/TR/trace-context/#version
428
- INVALID_VERSION = 'ff'
428
+ INVALID_VERSION = "ff"
429
429
  private_constant :INVALID_VERSION
430
430
 
431
431
  # Empty 8-bit `trace-flags`.
@@ -46,7 +46,7 @@ module Datadog
46
46
  end
47
47
 
48
48
  def subscribe(&block)
49
- raise ArgumentError, 'Must give a block to subscribe!' unless block
49
+ raise ArgumentError, "Must give a block to subscribe!" unless block
50
50
 
51
51
  subscriptions << block
52
52
  end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Datadog
4
+ module Tracing
5
+ module Ext
6
+ TELEMETRY_METRICS_NAMESPACE = "tracers"
7
+ end
8
+ end
9
+ end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative '../analytics'
4
- require_relative 'ext'
3
+ require_relative "../analytics"
4
+ require_relative "ext"
5
5
 
6
6
  module Datadog
7
7
  module Tracing