datadog 2.47.0 → 2.48.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 (273) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +30 -1
  3. data/LICENSE-3rdparty.csv +1 -0
  4. data/ext/datadog_profiling_native_extension/collectors_stack.c +141 -101
  5. data/ext/datadog_profiling_native_extension/collectors_stack.h +9 -1
  6. data/ext/datadog_profiling_native_extension/collectors_thread_context.c +6 -1
  7. data/ext/datadog_profiling_native_extension/extconf.rb +7 -13
  8. data/ext/datadog_profiling_native_extension/native_extension_helpers.rb +3 -3
  9. data/ext/datadog_profiling_native_extension/private_vm_api_access.c +66 -13
  10. data/ext/datadog_profiling_native_extension/private_vm_api_access.h +5 -1
  11. data/ext/datadog_profiling_native_extension/profiling.c +1 -1
  12. data/ext/libdatadog_api/extconf.rb +9 -7
  13. data/ext/libdatadog_api/trace_exporter.c +34 -7
  14. data/ext/libdatadog_extconf_helpers.rb +1 -1
  15. data/lib/datadog/ai_guard/component.rb +1 -1
  16. data/lib/datadog/ai_guard/contrib/rack/request_middleware.rb +1 -9
  17. data/lib/datadog/ai_guard/contrib/rails/patcher.rb +1 -1
  18. data/lib/datadog/ai_guard/contrib/ruby_llm/message_adapter.rb +1 -1
  19. data/lib/datadog/ai_guard/contrib/ruby_llm/redaction_change_set.rb +3 -3
  20. data/lib/datadog/ai_guard/evaluation/client.rb +3 -3
  21. data/lib/datadog/ai_guard/evaluation.rb +2 -2
  22. data/lib/datadog/ai_guard/http_client.rb +3 -2
  23. data/lib/datadog/ai_guard/redaction.rb +1 -1
  24. data/lib/datadog/appsec/api_security/endpoint_collection/rails_collector.rb +1 -1
  25. data/lib/datadog/appsec/assets/waf_rules/README.md +3 -3
  26. data/lib/datadog/appsec/assets/waf_rules/recommended.json +5366 -1517
  27. data/lib/datadog/appsec/assets/waf_rules/strict.json +2 -2
  28. data/lib/datadog/appsec/autoload.rb +1 -1
  29. data/lib/datadog/appsec/component.rb +1 -1
  30. data/lib/datadog/appsec/compressed_json.rb +1 -1
  31. data/lib/datadog/appsec/configuration.rb +3 -3
  32. data/lib/datadog/appsec/context.rb +1 -1
  33. data/lib/datadog/appsec/contrib/active_record/instrumentation.rb +11 -1
  34. data/lib/datadog/appsec/contrib/active_record/patcher.rb +12 -4
  35. data/lib/datadog/appsec/contrib/aws_lambda/gateway/watcher.rb +2 -2
  36. data/lib/datadog/appsec/contrib/aws_lambda/waf_addresses.rb +1 -1
  37. data/lib/datadog/appsec/contrib/devise/configuration.rb +1 -1
  38. data/lib/datadog/appsec/contrib/devise/patches/signin_tracking_patch.rb +1 -1
  39. data/lib/datadog/appsec/contrib/devise/patches/signup_tracking_patch.rb +1 -1
  40. data/lib/datadog/appsec/contrib/devise/tracking_middleware.rb +1 -1
  41. data/lib/datadog/appsec/contrib/excon/ssrf_detection_middleware.rb +1 -1
  42. data/lib/datadog/appsec/contrib/faraday/ssrf_detection_middleware.rb +1 -1
  43. data/lib/datadog/appsec/contrib/graphql/gateway/multiplex.rb +7 -7
  44. data/lib/datadog/appsec/contrib/graphql/gateway/watcher.rb +1 -1
  45. data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +3 -3
  46. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +5 -5
  47. data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +2 -2
  48. data/lib/datadog/appsec/contrib/rails/patcher.rb +2 -2
  49. data/lib/datadog/appsec/contrib/rest_client/request_ssrf_detection_patch.rb +1 -1
  50. data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +3 -3
  51. data/lib/datadog/appsec/contrib/sinatra/patcher.rb +1 -1
  52. data/lib/datadog/appsec/metrics/collector.rb +5 -5
  53. data/lib/datadog/appsec/metrics/telemetry_exporter.rb +3 -3
  54. data/lib/datadog/appsec/monitor/gateway/watcher.rb +2 -2
  55. data/lib/datadog/appsec/processor/rule_loader.rb +1 -1
  56. data/lib/datadog/appsec/response.rb +1 -1
  57. data/lib/datadog/appsec/security_engine/engine.rb +6 -6
  58. data/lib/datadog/appsec/security_engine/runner.rb +2 -2
  59. data/lib/datadog/appsec/trace_keeper.rb +1 -1
  60. data/lib/datadog/appsec.rb +1 -1
  61. data/lib/datadog/core/configuration/agent_settings_resolver.rb +14 -13
  62. data/lib/datadog/core/configuration/agentless_settings_resolver.rb +2 -2
  63. data/lib/datadog/core/configuration/components.rb +1 -1
  64. data/lib/datadog/core/configuration/settings.rb +5 -2
  65. data/lib/datadog/core/configuration/supported_configurations.rb +1 -0
  66. data/lib/datadog/core/configuration.rb +2 -2
  67. data/lib/datadog/core/crashtracking/component.rb +1 -1
  68. data/lib/datadog/core/diagnostics/environment_logger.rb +1 -1
  69. data/lib/datadog/core/environment/cgroup.rb +2 -2
  70. data/lib/datadog/core/environment/container.rb +3 -3
  71. data/lib/datadog/core/metrics/client.rb +6 -6
  72. data/lib/datadog/core/process_discovery.rb +1 -1
  73. data/lib/datadog/core/remote/tie/tracing.rb +4 -3
  74. data/lib/datadog/core/remote/transport/http.rb +2 -2
  75. data/lib/datadog/core/runtime/metrics.rb +14 -14
  76. data/lib/datadog/core/semaphore.rb +3 -1
  77. data/lib/datadog/core/telemetry/event/app_started.rb +9 -9
  78. data/lib/datadog/core/telemetry/logger.rb +1 -1
  79. data/lib/datadog/core/telemetry/logging.rb +1 -1
  80. data/lib/datadog/core/telemetry/request.rb +9 -3
  81. data/lib/datadog/core/telemetry/transport/http.rb +2 -2
  82. data/lib/datadog/core/telemetry/worker.rb +1 -1
  83. data/lib/datadog/core/transport/http/adapters/net.rb +1 -1
  84. data/lib/datadog/core/transport/http/adapters/unix_socket.rb +1 -1
  85. data/lib/datadog/core/transport/http/builder.rb +1 -1
  86. data/lib/datadog/core/transport/http.rb +3 -3
  87. data/lib/datadog/core/utils/at_fork_monkey_patch.rb +2 -2
  88. data/lib/datadog/core/workers/async.rb +1 -1
  89. data/lib/datadog/core/workers/runtime_metrics.rb +1 -1
  90. data/lib/datadog/data_streams/pathway_context.rb +1 -1
  91. data/lib/datadog/data_streams/processor.rb +48 -27
  92. data/lib/datadog/data_streams/transport/http.rb +1 -1
  93. data/lib/datadog/data_streams.rb +16 -0
  94. data/lib/datadog/di/capture_expression_evaluator.rb +48 -11
  95. data/lib/datadog/di/component.rb +3 -2
  96. data/lib/datadog/di/configuration.rb +19 -0
  97. data/lib/datadog/di/contrib/active_record.rb +1 -1
  98. data/lib/datadog/di/el/compiler.rb +4 -4
  99. data/lib/datadog/di/el/evaluator.rb +247 -43
  100. data/lib/datadog/di/el/expression.rb +36 -6
  101. data/lib/datadog/di/error.rb +16 -0
  102. data/lib/datadog/di/guardrails_telemetry/reason.rb +3 -2
  103. data/lib/datadog/di/instrumenter.rb +39 -10
  104. data/lib/datadog/di/probe_notification_builder.rb +58 -10
  105. data/lib/datadog/di/probe_notifier_worker.rb +1 -1
  106. data/lib/datadog/di/serializer.rb +20 -2
  107. data/lib/datadog/di.rb +27 -0
  108. data/lib/datadog/error_tracking/component.rb +1 -1
  109. data/lib/datadog/error_tracking/configuration.rb +1 -1
  110. data/lib/datadog/kit/appsec/events/v2.rb +6 -6
  111. data/lib/datadog/kit/appsec/events.rb +1 -1
  112. data/lib/datadog/kit/enable_core_dumps.rb +1 -1
  113. data/lib/datadog/kit/identity.rb +1 -1
  114. data/lib/datadog/open_feature/activation.rb +26 -1
  115. data/lib/datadog/open_feature/agentless/configuration_source.rb +94 -15
  116. data/lib/datadog/open_feature/component.rb +22 -2
  117. data/lib/datadog/open_feature/configuration/agentless_endpoint.rb +6 -0
  118. data/lib/datadog/open_feature/configuration.rb +4 -4
  119. data/lib/datadog/open_feature/evaluation_engine.rb +62 -4
  120. data/lib/datadog/open_feature/exposures/buffer.rb +4 -0
  121. data/lib/datadog/open_feature/exposures/reporter.rb +17 -4
  122. data/lib/datadog/open_feature/exposures/worker.rb +37 -6
  123. data/lib/datadog/open_feature/flag_evaluation/aggregator.rb +5 -5
  124. data/lib/datadog/open_feature/flag_evaluation/writer.rb +1 -1
  125. data/lib/datadog/open_feature/hooks/debug_logging_hook.rb +56 -0
  126. data/lib/datadog/open_feature/hooks/span_enrichment_hook.rb +2 -2
  127. data/lib/datadog/open_feature/metrics/flag_eval_metrics.rb +1 -1
  128. data/lib/datadog/open_feature/native_evaluator.rb +1 -1
  129. data/lib/datadog/open_feature/noop_evaluator.rb +1 -1
  130. data/lib/datadog/open_feature/provider.rb +50 -12
  131. data/lib/datadog/open_feature/remote.rb +8 -1
  132. data/lib/datadog/open_feature/resolution_details.rb +2 -2
  133. data/lib/datadog/open_feature/transport.rb +6 -6
  134. data/lib/datadog/opentelemetry/api/context.rb +3 -3
  135. data/lib/datadog/opentelemetry/logs.rb +5 -5
  136. data/lib/datadog/opentelemetry/metrics.rb +3 -3
  137. data/lib/datadog/opentelemetry/sdk/propagator.rb +3 -3
  138. data/lib/datadog/opentelemetry/sdk/span_processor.rb +2 -2
  139. data/lib/datadog/opentelemetry/sdk/trace/span.rb +1 -1
  140. data/lib/datadog/profiling/collectors/code_provenance.rb +3 -3
  141. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +4 -4
  142. data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +1 -1
  143. data/lib/datadog/profiling/collectors/thread_context.rb +1 -1
  144. data/lib/datadog/profiling/component.rb +19 -19
  145. data/lib/datadog/profiling/exporter.rb +1 -1
  146. data/lib/datadog/profiling/http_transport.rb +3 -3
  147. data/lib/datadog/profiling/profiler.rb +2 -2
  148. data/lib/datadog/profiling/scheduler.rb +2 -2
  149. data/lib/datadog/profiling/tag_builder.rb +1 -1
  150. data/lib/datadog/symbol_database/extractor.rb +8 -8
  151. data/lib/datadog/symbol_database/uploader.rb +1 -1
  152. data/lib/datadog/tracing/buffer.rb +3 -3
  153. data/lib/datadog/tracing/client_ip.rb +1 -1
  154. data/lib/datadog/tracing/component.rb +8 -8
  155. data/lib/datadog/tracing/configuration/dynamic/option.rb +2 -2
  156. data/lib/datadog/tracing/configuration/settings.rb +3 -3
  157. data/lib/datadog/tracing/context.rb +1 -1
  158. data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +2 -2
  159. data/lib/datadog/tracing/contrib/active_job/data_streams.rb +27 -2
  160. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +2 -2
  161. data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +1 -1
  162. data/lib/datadog/tracing/contrib/active_record/utils.rb +1 -1
  163. data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +1 -1
  164. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +1 -1
  165. data/lib/datadog/tracing/contrib/active_support/notifications/subscriber.rb +2 -2
  166. data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +2 -2
  167. data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +1 -1
  168. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +1 -1
  169. data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +1 -1
  170. data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +1 -1
  171. data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +2 -2
  172. data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +1 -1
  173. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +3 -3
  174. data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +1 -1
  175. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +8 -8
  176. data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +1 -1
  177. data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +1 -1
  178. data/lib/datadog/tracing/contrib/excon/middleware.rb +7 -7
  179. data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +1 -1
  180. data/lib/datadog/tracing/contrib/faraday/middleware.rb +5 -5
  181. data/lib/datadog/tracing/contrib/grape/endpoint.rb +4 -4
  182. data/lib/datadog/tracing/contrib/graphql/patcher.rb +1 -1
  183. data/lib/datadog/tracing/contrib/graphql/unified_trace.rb +3 -3
  184. data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +1 -1
  185. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +2 -2
  186. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +1 -1
  187. data/lib/datadog/tracing/contrib/grpc.rb +1 -1
  188. data/lib/datadog/tracing/contrib/hanami/action_tracer.rb +1 -1
  189. data/lib/datadog/tracing/contrib/hanami/plugin.rb +1 -1
  190. data/lib/datadog/tracing/contrib/hanami/renderer_policy_tracing.rb +1 -1
  191. data/lib/datadog/tracing/contrib/hanami/router_tracing.rb +1 -1
  192. data/lib/datadog/tracing/contrib/http/configuration/settings.rb +1 -1
  193. data/lib/datadog/tracing/contrib/http/instrumentation.rb +6 -6
  194. data/lib/datadog/tracing/contrib/http.rb +1 -1
  195. data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +1 -1
  196. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +7 -7
  197. data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +1 -1
  198. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +5 -5
  199. data/lib/datadog/tracing/contrib/kafka/instrumentation/consumer.rb +2 -2
  200. data/lib/datadog/tracing/contrib/kafka/instrumentation/producer.rb +2 -2
  201. data/lib/datadog/tracing/contrib/karafka/monitor.rb +1 -1
  202. data/lib/datadog/tracing/contrib/karafka/patcher.rb +1 -1
  203. data/lib/datadog/tracing/contrib/karafka.rb +1 -1
  204. data/lib/datadog/tracing/contrib/lograge/patcher.rb +1 -1
  205. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +1 -1
  206. data/lib/datadog/tracing/contrib/mongodb/parsers.rb +1 -1
  207. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +1 -1
  208. data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +1 -1
  209. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +3 -3
  210. data/lib/datadog/tracing/contrib/opensearch/configuration/settings.rb +2 -2
  211. data/lib/datadog/tracing/contrib/opensearch/patcher.rb +3 -3
  212. data/lib/datadog/tracing/contrib/pg/configuration/settings.rb +1 -1
  213. data/lib/datadog/tracing/contrib/pg/instrumentation.rb +4 -4
  214. data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +1 -1
  215. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +4 -4
  216. data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +1 -1
  217. data/lib/datadog/tracing/contrib/que/tracer.rb +1 -1
  218. data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +1 -1
  219. data/lib/datadog/tracing/contrib/racecar/events/batch.rb +1 -1
  220. data/lib/datadog/tracing/contrib/racecar/events/message.rb +1 -1
  221. data/lib/datadog/tracing/contrib/rack/middlewares.rb +3 -3
  222. data/lib/datadog/tracing/contrib/rack/patcher.rb +1 -1
  223. data/lib/datadog/tracing/contrib/rails/framework.rb +7 -7
  224. data/lib/datadog/tracing/contrib/rails/log_injection.rb +1 -1
  225. data/lib/datadog/tracing/contrib/rails/runner.rb +4 -4
  226. data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +1 -1
  227. data/lib/datadog/tracing/contrib/redis/quantize.rb +1 -1
  228. data/lib/datadog/tracing/contrib/redis/tags.rb +1 -1
  229. data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +1 -1
  230. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +8 -8
  231. data/lib/datadog/tracing/contrib/sequel/database.rb +1 -1
  232. data/lib/datadog/tracing/contrib/sequel/dataset.rb +1 -1
  233. data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +1 -1
  234. data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +2 -2
  235. data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +2 -2
  236. data/lib/datadog/tracing/contrib/sidekiq.rb +1 -1
  237. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +1 -1
  238. data/lib/datadog/tracing/contrib/status_range_env_parser.rb +1 -1
  239. data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +1 -1
  240. data/lib/datadog/tracing/contrib/trilogy/configuration/settings.rb +1 -1
  241. data/lib/datadog/tracing/contrib/trilogy/instrumentation.rb +3 -3
  242. data/lib/datadog/tracing/contrib/waterdrop/middleware.rb +2 -2
  243. data/lib/datadog/tracing/contrib/waterdrop.rb +1 -1
  244. data/lib/datadog/tracing/diagnostics/environment_logger.rb +1 -1
  245. data/lib/datadog/tracing/distributed/b3_multi.rb +1 -1
  246. data/lib/datadog/tracing/distributed/b3_single.rb +1 -1
  247. data/lib/datadog/tracing/distributed/baggage.rb +3 -3
  248. data/lib/datadog/tracing/distributed/datadog.rb +3 -3
  249. data/lib/datadog/tracing/distributed/propagation.rb +7 -7
  250. data/lib/datadog/tracing/distributed/trace_context.rb +1 -1
  251. data/lib/datadog/tracing/distributed/trace_state/open_telemetry.rb +1 -1
  252. data/lib/datadog/tracing/otel_thread_context.rb +3 -3
  253. data/lib/datadog/tracing/pipeline.rb +1 -1
  254. data/lib/datadog/tracing/sampling/priority_sampler.rb +1 -1
  255. data/lib/datadog/tracing/sampling/rule.rb +1 -1
  256. data/lib/datadog/tracing/sampling/rule_sampler.rb +1 -1
  257. data/lib/datadog/tracing/sampling/span/rule_parser.rb +2 -2
  258. data/lib/datadog/tracing/span_operation.rb +1 -1
  259. data/lib/datadog/tracing/trace_digest.rb +1 -1
  260. data/lib/datadog/tracing/trace_operation.rb +6 -6
  261. data/lib/datadog/tracing/tracer.rb +6 -6
  262. data/lib/datadog/tracing/transport/http/telemetry.rb +1 -1
  263. data/lib/datadog/tracing/transport/http.rb +2 -2
  264. data/lib/datadog/tracing/transport/io.rb +1 -1
  265. data/lib/datadog/tracing/transport/native.rb +3 -3
  266. data/lib/datadog/tracing/transport/statistics.rb +2 -2
  267. data/lib/datadog/tracing/transport/telemetry.rb +3 -1
  268. data/lib/datadog/tracing/transport/trace_formatter.rb +12 -12
  269. data/lib/datadog/tracing/transport/traces.rb +1 -1
  270. data/lib/datadog/tracing/utils.rb +1 -1
  271. data/lib/datadog/tracing/workers.rb +1 -1
  272. data/lib/datadog/version.rb +1 -1
  273. metadata +4 -3
@@ -55,7 +55,7 @@ module Datadog
55
55
  def build_trace_flush(settings)
56
56
  if settings.tracing.partial_flush.enabled
57
57
  Tracing::Flush::Partial.new(
58
- min_spans_before_partial_flush: settings.tracing.partial_flush.min_spans_threshold
58
+ min_spans_before_partial_flush: settings.tracing.partial_flush.min_spans_threshold,
59
59
  )
60
60
  else
61
61
  Tracing::Flush::Finished.new
@@ -98,7 +98,7 @@ module Datadog
98
98
  post_sampler = Tracing::Sampling::RuleSampler.parse(
99
99
  rules,
100
100
  settings.tracing.sampling.rate_limit,
101
- settings.tracing.sampling.default_rate
101
+ settings.tracing.sampling.default_rate,
102
102
  )
103
103
  end
104
104
 
@@ -106,12 +106,12 @@ module Datadog
106
106
  # Used if no custom sampler is provided, or if sampling rule parsing fails.
107
107
  post_sampler ||= Tracing::Sampling::RuleSampler.new(
108
108
  rate_limit: settings.tracing.sampling.rate_limit,
109
- default_sample_rate: settings.tracing.sampling.default_rate
109
+ default_sample_rate: settings.tracing.sampling.default_rate,
110
110
  )
111
111
 
112
112
  Tracing::Sampling::PrioritySampler.new(
113
113
  base_sampler: Tracing::Sampling::AllSampler.new,
114
- post_sampler: post_sampler
114
+ post_sampler: post_sampler,
115
115
  )
116
116
  end
117
117
 
@@ -138,14 +138,14 @@ module Datadog
138
138
  unless Transport::Native.supported?
139
139
  Datadog.logger.warn(
140
140
  "Native transport requested but not available: #{Transport::Native::UNSUPPORTED_REASON}. " \
141
- "Falling back to default HTTP transport."
141
+ "Falling back to default HTTP transport.",
142
142
  )
143
143
  return nil
144
144
  end
145
145
 
146
146
  Transport::Native::Transport.new(
147
147
  agent_settings: agent_settings,
148
- logger: Datadog.logger
148
+ logger: Datadog.logger,
149
149
  )
150
150
  end
151
151
 
@@ -235,7 +235,7 @@ module Datadog
235
235
  def build_rate_limit_post_sampler(seconds:)
236
236
  Tracing::Sampling::RuleSampler.new(
237
237
  rate_limiter: Datadog::Core::TokenBucket.new(1.0 / seconds, 1.0),
238
- default_sample_rate: 1.0
238
+ default_sample_rate: 1.0,
239
239
  )
240
240
  end
241
241
 
@@ -251,7 +251,7 @@ module Datadog
251
251
  # Set priority sampler to ensure the agent doesn't drop any traces.
252
252
  Tracing::Sampling::PrioritySampler.new(
253
253
  base_sampler: Tracing::Sampling::AllSampler.new,
254
- post_sampler: Tracing::Sampling::AllSampler.new
254
+ post_sampler: Tracing::Sampling::AllSampler.new,
255
255
  )
256
256
  end
257
257
 
@@ -49,13 +49,13 @@ module Datadog
49
49
  # Restore the local configuration value
50
50
  configuration_object.unset_option(
51
51
  @setting_key,
52
- precedence: Core::Configuration::Option::Precedence::REMOTE_CONFIGURATION
52
+ precedence: Core::Configuration::Option::Precedence::REMOTE_CONFIGURATION,
53
53
  )
54
54
  else
55
55
  configuration_object.set_option(
56
56
  @setting_key,
57
57
  value,
58
- precedence: Core::Configuration::Option::Precedence::REMOTE_CONFIGURATION
58
+ precedence: Core::Configuration::Option::Precedence::REMOTE_CONFIGURATION,
59
59
  )
60
60
  end
61
61
 
@@ -57,7 +57,7 @@ module Datadog
57
57
  Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_DATADOG,
58
58
  Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_TRACE_CONTEXT,
59
59
  Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_BAGGAGE,
60
- ]
60
+ ],
61
61
  )
62
62
  o.after_set do |styles|
63
63
  # Make values case-insensitive
@@ -446,7 +446,7 @@ module Datadog
446
446
  "Both DD_SPAN_SAMPLING_RULES and DD_SPAN_SAMPLING_RULES_FILE were provided: only " \
447
447
  "DD_SPAN_SAMPLING_RULES will be used. Please do not provide DD_SPAN_SAMPLING_RULES_FILE when " \
448
448
  "also providing DD_SPAN_SAMPLING_RULES as their configuration conflicts. " \
449
- "DD_SPAN_SAMPLING_RULES_FILE=#{rules_file} DD_SPAN_SAMPLING_RULES=#{rules}"
449
+ "DD_SPAN_SAMPLING_RULES_FILE=#{rules_file} DD_SPAN_SAMPLING_RULES=#{rules}",
450
450
  )
451
451
  end
452
452
  rules
@@ -457,7 +457,7 @@ module Datadog
457
457
  # `File#read` errors have clear and actionable messages, no need to add extra exception info.
458
458
  Datadog.logger.warn(
459
459
  "Cannot read span sampling rules file `#{rules_file}`: #{e.class}: #{e.message}." \
460
- "No span sampling rules will be applied."
460
+ "No span sampling rules will be applied.",
461
461
  )
462
462
  nil
463
463
  end
@@ -63,7 +63,7 @@ module Datadog
63
63
 
64
64
  self.class.new(
65
65
  trace: forked_trace,
66
- otel_thread_context: @otel_thread_context
66
+ otel_thread_context: @otel_thread_context,
67
67
  )
68
68
  end
69
69
 
@@ -39,14 +39,14 @@ module Datadog
39
39
  :subscribe,
40
40
  :around,
41
41
  ->(channel, block) { Tracer.trace(channel, :subscribe, &block) },
42
- prepend: true
42
+ prepend: true,
43
43
  )
44
44
 
45
45
  set_callback(
46
46
  :unsubscribe,
47
47
  :around,
48
48
  ->(channel, block) { Tracer.trace(channel, :unsubscribe, &block) },
49
- prepend: true
49
+ prepend: true,
50
50
  )
51
51
  end
52
52
  end
@@ -27,7 +27,7 @@ module Datadog
27
27
  Datadog::DataStreams.set_produce_checkpoint(
28
28
  type: Ext::TAG_COMPONENT,
29
29
  destination: queue_name,
30
- auto_instrumentation: true
30
+ auto_instrumentation: true,
31
31
  ) do |key, value|
32
32
  job_data[key] = value
33
33
  end
@@ -44,10 +44,14 @@ module Datadog
44
44
  return unless Datadog::DataStreams.enabled?
45
45
 
46
46
  begin
47
+ # false stands in for "thread had no context", leaving nil to mean nothing to restore.
48
+ @datadog_pathway_context_before_job = Datadog::DataStreams.pathway_context || false
49
+ # A headerless job would otherwise checkpoint into, and mutate, the saved context.
50
+ Datadog::DataStreams.pathway_context = nil
47
51
  Datadog::DataStreams.set_consume_checkpoint(
48
52
  type: Ext::TAG_COMPONENT,
49
53
  source: queue_name,
50
- auto_instrumentation: true
54
+ auto_instrumentation: true,
51
55
  ) do |key|
52
56
  job_data[key]
53
57
  end
@@ -55,6 +59,27 @@ module Datadog
55
59
  Datadog.logger.debug { "Error setting DSM consume checkpoint: #{e.class}: #{e.message}" }
56
60
  end
57
61
  end
62
+
63
+ # Adapters run `deserialize` then `perform_now` on a pooled worker thread. Restoring the
64
+ # pre-job context stops the job's pathway leaking into the thread's later, unrelated work.
65
+ def perform_now
66
+ super
67
+ ensure
68
+ restore_datadog_pathway_context
69
+ end
70
+
71
+ private
72
+
73
+ def restore_datadog_pathway_context
74
+ return if @datadog_pathway_context_before_job.nil?
75
+
76
+ # `|| nil` undoes the false sentinel set in `deserialize`.
77
+ context_before_job = @datadog_pathway_context_before_job || nil
78
+ @datadog_pathway_context_before_job = nil
79
+ Datadog::DataStreams.pathway_context = context_before_job
80
+ rescue => e
81
+ Datadog.logger.debug { "Error restoring DSM pathway context: #{e.class}: #{e.message}" }
82
+ end
58
83
  end
59
84
  end
60
85
  end
@@ -76,7 +76,7 @@ module Datadog
76
76
  #
77
77
  Datadog.logger.error(
78
78
  "Failed to resolve ActiveRecord database configuration. " \
79
- "Cause: #{e.class} Source: #{Array(e.backtrace).first}"
79
+ "Cause: #{e.class} Source: #{Array(e.backtrace).first}",
80
80
  )
81
81
  Core::Telemetry::Logger.report(e, description: "Failed to resolve ActiveRecord database configuration")
82
82
 
@@ -96,7 +96,7 @@ module Datadog
96
96
  rescue => e
97
97
  Datadog.logger.error(
98
98
  "Failed to resolve key #{matcher.inspect}. " \
99
- "Cause: #{e.class} Source: #{Array(e.backtrace).first}"
99
+ "Cause: #{e.class} Source: #{Array(e.backtrace).first}",
100
100
  )
101
101
  Core::Telemetry::Logger.report(e, description: "Failed to resolve key")
102
102
 
@@ -36,7 +36,7 @@ module Datadog
36
36
  o.default do
37
37
  Contrib::SpanAttributeSchema.fetch_service_name(
38
38
  "",
39
- Utils.adapter_name
39
+ Utils.adapter_name,
40
40
  )
41
41
  end
42
42
  end
@@ -77,7 +77,7 @@ module Datadog
77
77
  # in case.
78
78
  Datadog.logger.debug(
79
79
  "connection_id #{connection_id} does not represent a valid object. " \
80
- "Cause: #{e.class}: #{e.message} Source: #{Array(e.backtrace).first}"
80
+ "Cause: #{e.class}: #{e.message} Source: #{Array(e.backtrace).first}",
81
81
  )
82
82
  end
83
83
  else
@@ -49,7 +49,7 @@ module Datadog
49
49
  Ext::SPAN_CACHE,
50
50
  type: Ext::SPAN_TYPE_CACHE,
51
51
  service: Datadog.configuration.tracing[:active_support][:cache_service],
52
- resource: action
52
+ resource: action,
53
53
  ) do |span|
54
54
  span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
55
55
  span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
@@ -35,7 +35,7 @@ module Datadog
35
35
  o.default do
36
36
  Contrib::SpanAttributeSchema.fetch_service_name(
37
37
  "",
38
- Ext::SERVICE_CACHE
38
+ Ext::SERVICE_CACHE,
39
39
  )
40
40
  end
41
41
  end
@@ -51,7 +51,7 @@ module Datadog
51
51
  span_options,
52
52
  on_start: on_start,
53
53
  on_finish: on_finish,
54
- trace: trace
54
+ trace: trace,
55
55
  ).tap do |subscription|
56
56
  subscription.subscribe(pattern)
57
57
  end
@@ -65,7 +65,7 @@ module Datadog
65
65
  span_options,
66
66
  on_start: on_start,
67
67
  on_finish: on_finish,
68
- trace: trace
68
+ trace: trace,
69
69
  ).tap do |subscription|
70
70
  subscriptions << subscription
71
71
  end
@@ -125,7 +125,7 @@ module Datadog
125
125
  @block&.call(span, name, id, payload)
126
126
  rescue => e
127
127
  Datadog.logger.debug(
128
- "ActiveSupport::Notifications handler for '#{name}' failed: #{e.class}: #{e.message}"
128
+ "ActiveSupport::Notifications handler for '#{name}' failed: #{e.class}: #{e.message}",
129
129
  )
130
130
  end
131
131
  end
@@ -147,7 +147,7 @@ module Datadog
147
147
  callback.call(event, key, *args)
148
148
  rescue => e
149
149
  Datadog.logger.debug(
150
- "ActiveSupport::Notifications '#{key}' callback for '#{event}' failed: #{e.class}: #{e.message}"
150
+ "ActiveSupport::Notifications '#{key}' callback for '#{event}' failed: #{e.class}: #{e.message}",
151
151
  )
152
152
  end
153
153
  end
@@ -36,7 +36,7 @@ module Datadog
36
36
  o.default do
37
37
  Contrib::SpanAttributeSchema.fetch_service_name(
38
38
  Ext::ENV_SERVICE_NAME,
39
- Ext::DEFAULT_PEER_SERVICE_NAME
39
+ Ext::DEFAULT_PEER_SERVICE_NAME,
40
40
  )
41
41
  end
42
42
  end
@@ -58,7 +58,7 @@ module Datadog
58
58
  if configuration[:peer_service]
59
59
  span.set_tag(
60
60
  Tracing::Metadata::Ext::TAG_PEER_SERVICE,
61
- configuration[:peer_service]
61
+ configuration[:peer_service],
62
62
  )
63
63
  end
64
64
 
@@ -35,7 +35,7 @@ module Datadog
35
35
  o.default do
36
36
  Contrib::SpanAttributeSchema.fetch_service_name(
37
37
  Ext::ENV_SERVICE_NAME,
38
- Ext::DEFAULT_PEER_SERVICE_NAME
38
+ Ext::DEFAULT_PEER_SERVICE_NAME,
39
39
  )
40
40
  end
41
41
  end
@@ -28,7 +28,7 @@ module Datadog
28
28
  if datadog_configuration[:peer_service]
29
29
  span.set_tag(
30
30
  Tracing::Metadata::Ext::TAG_PEER_SERVICE,
31
- datadog_configuration[:peer_service]
31
+ datadog_configuration[:peer_service],
32
32
  )
33
33
  end
34
34
 
@@ -19,7 +19,7 @@ module Datadog
19
19
  Ext::SPAN_JOB,
20
20
  service: configuration[:service_name],
21
21
  resource: job_name(job),
22
- on_error: configuration[:on_error]
22
+ on_error: configuration[:on_error],
23
23
  ) do |span|
24
24
  span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
25
25
  set_sample_rate(span)
@@ -50,7 +50,7 @@ module Datadog
50
50
  Tracing.trace(
51
51
  Ext::SPAN_ENQUEUE,
52
52
  service: configuration[:client_service_name],
53
- resource: job_name(job)
53
+ resource: job_name(job),
54
54
  ) do |span|
55
55
  span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
56
56
  set_sample_rate(span)
@@ -40,7 +40,7 @@ module Datadog
40
40
  o.default do
41
41
  Contrib::SpanAttributeSchema.fetch_service_name(
42
42
  Ext::ENV_SERVICE_NAME,
43
- Ext::DEFAULT_PEER_SERVICE_NAME
43
+ Ext::DEFAULT_PEER_SERVICE_NAME,
44
44
  )
45
45
  end
46
46
  end
@@ -53,7 +53,7 @@ module Datadog
53
53
  Tracing.trace(
54
54
  Datadog::Tracing::Contrib::Elasticsearch::Ext::SPAN_QUERY,
55
55
  service: service,
56
- on_error: on_error
56
+ on_error: on_error,
57
57
  ) do |span|
58
58
  span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
59
59
  connection = transport.connections.first
@@ -63,7 +63,7 @@ module Datadog
63
63
  if datadog_configuration[:peer_service]
64
64
  span.set_tag(
65
65
  Tracing::Metadata::Ext::TAG_PEER_SERVICE,
66
- datadog_configuration[:peer_service]
66
+ datadog_configuration[:peer_service],
67
67
  )
68
68
  end
69
69
 
@@ -121,7 +121,7 @@ module Datadog
121
121
  quantize_options = datadog_configuration[:quantize]
122
122
  quantized_body = Datadog::Tracing::Contrib::Elasticsearch::Quantize.format_body(
123
123
  body,
124
- quantize_options
124
+ quantize_options,
125
125
  )
126
126
  span.set_tag(Datadog::Tracing::Contrib::Elasticsearch::Ext::TAG_BODY, quantized_body)
127
127
  end
@@ -43,7 +43,7 @@ module Datadog
43
43
  o.default do
44
44
  Contrib::SpanAttributeSchema.fetch_service_name(
45
45
  Ext::ENV_SERVICE_NAME,
46
- Ext::DEFAULT_PEER_SERVICE_NAME
46
+ Ext::DEFAULT_PEER_SERVICE_NAME,
47
47
  )
48
48
  end
49
49
  end
@@ -68,8 +68,8 @@ module Datadog
68
68
 
69
69
  @datadog_span.set_tags(
70
70
  Datadog.configuration.tracing.header_tags.response_tags(
71
- Core::Utils::Hash::CaseInsensitiveWrapper.new(parse_response_headers)
72
- )
71
+ Core::Utils::Hash::CaseInsensitiveWrapper.new(parse_response_headers),
72
+ ),
73
73
  )
74
74
  ensure
75
75
  @datadog_span.finish
@@ -108,7 +108,7 @@ module Datadog
108
108
  Ext::SPAN_REQUEST,
109
109
  service: uri ? service_name(uri.host, datadog_configuration) : datadog_configuration[:service_name],
110
110
  type: Tracing::Metadata::Ext::HTTP::TYPE_OUTBOUND,
111
- **trace_options
111
+ **trace_options,
112
112
  )
113
113
  datadog_trace = Tracing.active_trace
114
114
 
@@ -116,7 +116,7 @@ module Datadog
116
116
 
117
117
  if Tracing::Distributed::PropagationPolicy.enabled?(
118
118
  global_config: datadog_configuration,
119
- trace: datadog_trace
119
+ trace: datadog_trace,
120
120
  )
121
121
  @datadog_original_headers ||= {}
122
122
  Contrib::HTTP.inject(datadog_trace, @datadog_original_headers)
@@ -141,13 +141,13 @@ module Datadog
141
141
  span.resource = Contrib::Utils::Quantization::HTTP.client_resource(
142
142
  method,
143
143
  path,
144
- enabled: Datadog.configuration.tracing.http_client_resource_name_quantize
144
+ enabled: Datadog.configuration.tracing.http_client_resource_name_quantize,
145
145
  )
146
146
 
147
147
  if datadog_configuration[:peer_service]
148
148
  span.set_tag(
149
149
  Tracing::Metadata::Ext::TAG_PEER_SERVICE,
150
- datadog_configuration[:peer_service]
150
+ datadog_configuration[:peer_service],
151
151
  )
152
152
  end
153
153
 
@@ -170,8 +170,8 @@ module Datadog
170
170
  if @datadog_original_headers
171
171
  span.set_tags(
172
172
  Datadog.configuration.tracing.header_tags.request_tags(
173
- Core::Utils::Hash::CaseInsensitiveWrapper.new(@datadog_original_headers)
174
- )
173
+ Core::Utils::Hash::CaseInsensitiveWrapper.new(@datadog_original_headers),
174
+ ),
175
175
  )
176
176
  end
177
177
 
@@ -60,7 +60,7 @@ module Datadog
60
60
 
61
61
  @datadog_multi_span = Tracing.trace(
62
62
  Ext::SPAN_MULTI_REQUEST,
63
- service: datadog_configuration[:service_name]
63
+ service: datadog_configuration[:service_name],
64
64
  )
65
65
  @datadog_multi_trace_digest = Tracing.active_trace.to_digest
66
66
 
@@ -68,7 +68,7 @@ module Datadog
68
68
  o.default do
69
69
  Contrib::SpanAttributeSchema.fetch_service_name(
70
70
  Ext::ENV_SERVICE_NAME,
71
- Ext::DEFAULT_PEER_SERVICE_NAME
71
+ Ext::DEFAULT_PEER_SERVICE_NAME,
72
72
  )
73
73
  end
74
74
  end
@@ -33,7 +33,7 @@ module Datadog
33
33
  annotate!(span, datum)
34
34
  if Tracing::Distributed::PropagationPolicy.enabled?(
35
35
  global_config: @options,
36
- trace: trace
36
+ trace: trace,
37
37
  )
38
38
  propagate!(trace, span, datum)
39
39
  end
@@ -123,7 +123,7 @@ module Datadog
123
123
  span.resource = Contrib::Utils::Quantization::HTTP.client_resource(
124
124
  http_method,
125
125
  path,
126
- enabled: Datadog.configuration.tracing.http_client_resource_name_quantize
126
+ enabled: Datadog.configuration.tracing.http_client_resource_name_quantize,
127
127
  )
128
128
  span.service = service_name(datum[:host], @options)
129
129
  span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
@@ -132,7 +132,7 @@ module Datadog
132
132
  if @options[:peer_service]
133
133
  span.set_tag(
134
134
  Tracing::Metadata::Ext::TAG_PEER_SERVICE,
135
- @options[:peer_service]
135
+ @options[:peer_service],
136
136
  )
137
137
  end
138
138
 
@@ -152,8 +152,8 @@ module Datadog
152
152
  span.set_tag(Tracing::Metadata::Ext::NET::TAG_TARGET_PORT, datum[:port])
153
153
  span.set_tags(
154
154
  Datadog.configuration.tracing.header_tags.request_tags(
155
- Core::Utils::Hash::CaseInsensitiveWrapper.new(datum[:headers])
156
- )
155
+ Core::Utils::Hash::CaseInsensitiveWrapper.new(datum[:headers]),
156
+ ),
157
157
  )
158
158
 
159
159
  Contrib::SpanAttributeSchema.set_peer_service!(span, Ext::PEER_SERVICE_SOURCES)
@@ -173,8 +173,8 @@ module Datadog
173
173
 
174
174
  span.set_tags(
175
175
  Datadog.configuration.tracing.header_tags.response_tags(
176
- Core::Utils::Hash::CaseInsensitiveWrapper.new(response[:headers])
177
- )
176
+ Core::Utils::Hash::CaseInsensitiveWrapper.new(response[:headers]),
177
+ ),
178
178
  )
179
179
  end
180
180
  on_error.call(span, datum[:error]) if datum.key?(:error)
@@ -67,7 +67,7 @@ module Datadog
67
67
  o.default do
68
68
  Contrib::SpanAttributeSchema.fetch_service_name(
69
69
  Ext::ENV_SERVICE_NAME,
70
- Ext::DEFAULT_PEER_SERVICE_NAME
70
+ Ext::DEFAULT_PEER_SERVICE_NAME,
71
71
  )
72
72
  end
73
73
  end
@@ -32,7 +32,7 @@ module Datadog
32
32
  annotate!(span, env, request_options)
33
33
  if Tracing::Distributed::PropagationPolicy.enabled?(
34
34
  global_config: request_options,
35
- trace: trace
35
+ trace: trace,
36
36
  )
37
37
  propagate!(trace, span, env)
38
38
  end
@@ -55,7 +55,7 @@ module Datadog
55
55
  if options[:peer_service]
56
56
  span.set_tag(
57
57
  Tracing::Metadata::Ext::TAG_PEER_SERVICE,
58
- options[:peer_service]
58
+ options[:peer_service],
59
59
  )
60
60
  end
61
61
 
@@ -76,7 +76,7 @@ module Datadog
76
76
  span.set_tag(Tracing::Metadata::Ext::NET::TAG_TARGET_HOST, env[:url].host)
77
77
  span.set_tag(Tracing::Metadata::Ext::NET::TAG_TARGET_PORT, env[:url].port)
78
78
  span.set_tags(
79
- Datadog.configuration.tracing.header_tags.request_tags(env[:request_headers])
79
+ Datadog.configuration.tracing.header_tags.request_tags(env[:request_headers]),
80
80
  )
81
81
 
82
82
  Contrib::SpanAttributeSchema.set_peer_service!(span, Ext::PEER_SERVICE_SOURCES)
@@ -93,7 +93,7 @@ module Datadog
93
93
  span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_STATUS_CODE, env[:status])
94
94
 
95
95
  span.set_tags(
96
- Datadog.configuration.tracing.header_tags.response_tags(env[:response_headers])
96
+ Datadog.configuration.tracing.header_tags.response_tags(env[:response_headers]),
97
97
  )
98
98
  rescue => e
99
99
  Datadog.logger.error("#{e.class}: #{e.message}")
@@ -109,7 +109,7 @@ module Datadog
109
109
  Contrib::Utils::Quantization::HTTP.client_resource(
110
110
  env[:method].to_s.upcase,
111
111
  path,
112
- enabled: Datadog.configuration.tracing.http_client_resource_name_quantize
112
+ enabled: Datadog.configuration.tracing.http_client_resource_name_quantize,
113
113
  )
114
114
  end
115
115
 
@@ -54,7 +54,7 @@ module Datadog
54
54
  Ext::SPAN_ENDPOINT_RUN,
55
55
  service: service_name,
56
56
  type: Tracing::Metadata::Ext::HTTP::TYPE_INBOUND,
57
- resource: resource
57
+ resource: resource,
58
58
  )
59
59
  trace = Tracing.active_trace
60
60
 
@@ -75,7 +75,7 @@ module Datadog
75
75
  # here we are removing the format from the path:
76
76
  # e.g. /path/to/resource(.json) => /path/to/resource
77
77
  # e.g. /path/to/resource(.:format) => /path/to/resource
78
- route_path&.gsub(FORMAT_SEGMENT, "")
78
+ route_path&.gsub(FORMAT_SEGMENT, ""),
79
79
  )
80
80
 
81
81
  trace.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE_PATH, env["SCRIPT_NAME"])
@@ -163,7 +163,7 @@ module Datadog
163
163
  span = Tracing.trace(
164
164
  Ext::SPAN_ENDPOINT_RENDER,
165
165
  service: service_name,
166
- type: Tracing::Metadata::Ext::HTTP::TYPE_TEMPLATE
166
+ type: Tracing::Metadata::Ext::HTTP::TYPE_TEMPLATE,
167
167
  )
168
168
 
169
169
  span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
@@ -214,7 +214,7 @@ module Datadog
214
214
  Ext::SPAN_ENDPOINT_RUN_FILTERS,
215
215
  service: service_name,
216
216
  type: Tracing::Metadata::Ext::HTTP::TYPE_INBOUND,
217
- start_time: start
217
+ start_time: start,
218
218
  )
219
219
 
220
220
  begin
@@ -38,7 +38,7 @@ module Datadog
38
38
  Datadog.logger.warn(
39
39
  "GraphQL version (#{target_version}) does not support GraphQL::Tracing::DataDogTrace" \
40
40
  "or Datadog::Tracing::Contrib::GraphQL::UnifiedTrace." \
41
- "Falling back to GraphQL::Tracing::DataDogTracing."
41
+ "Falling back to GraphQL::Tracing::DataDogTracing.",
42
42
  )
43
43
  TracingPatcher.patch!(schemas)
44
44
  end
@@ -94,7 +94,7 @@ module Datadog
94
94
  if query.selected_operation_name
95
95
  span.set_tag(
96
96
  "graphql.operation.name",
97
- query.selected_operation_name
97
+ query.selected_operation_name,
98
98
  )
99
99
  end
100
100
  query.variables.instance_variable_get(:@storage).each do |key, value|
@@ -212,7 +212,7 @@ module Datadog
212
212
  "graphql.#{trace_key}",
213
213
  type: "graphql",
214
214
  resource: resource,
215
- service: @service_name
215
+ service: @service_name,
216
216
  ) do |span|
217
217
  span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
218
218
  if Contrib::Analytics.enabled?(@analytics_enabled)
@@ -292,7 +292,7 @@ module Datadog
292
292
  @locations_key =>
293
293
  Datadog::Tracing::Contrib::GraphQL::UnifiedTrace.serialize_error_locations(graphql_error["locations"]),
294
294
  @path_key => graphql_error["path"],
295
- )
295
+ ),
296
296
  )
297
297
  end
298
298
  end