datadog 2.19.0 → 2.21.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 (302) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +52 -1
  3. data/README.md +0 -1
  4. data/ext/libdatadog_api/extconf.rb +3 -1
  5. data/ext/libdatadog_api/process_discovery.c +5 -5
  6. data/ext/libdatadog_extconf_helpers.rb +13 -3
  7. data/lib/datadog/appsec/api_security/route_extractor.rb +6 -2
  8. data/lib/datadog/appsec/autoload.rb +1 -1
  9. data/lib/datadog/appsec/component.rb +3 -13
  10. data/lib/datadog/appsec/context.rb +23 -0
  11. data/lib/datadog/appsec/contrib/devise/patches/signin_tracking_patch.rb +2 -1
  12. data/lib/datadog/appsec/contrib/devise/patches/signup_tracking_patch.rb +2 -1
  13. data/lib/datadog/appsec/contrib/excon/ssrf_detection_middleware.rb +0 -1
  14. data/lib/datadog/appsec/contrib/faraday/ssrf_detection_middleware.rb +0 -1
  15. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +14 -22
  16. data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +23 -2
  17. data/lib/datadog/appsec/contrib/rails/patcher.rb +14 -26
  18. data/lib/datadog/appsec/contrib/rails/patches/process_action_patch.rb +27 -0
  19. data/lib/datadog/appsec/contrib/rails/patches/render_to_body_patch.rb +33 -0
  20. data/lib/datadog/appsec/contrib/rest_client/request_ssrf_detection_patch.rb +0 -1
  21. data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +23 -0
  22. data/lib/datadog/appsec/contrib/sinatra/patcher.rb +8 -18
  23. data/lib/datadog/appsec/contrib/sinatra/patches/json_patch.rb +31 -0
  24. data/lib/datadog/appsec/event.rb +3 -18
  25. data/lib/datadog/appsec/instrumentation/gateway/argument.rb +16 -0
  26. data/lib/datadog/appsec/metrics/collector.rb +7 -3
  27. data/lib/datadog/appsec/metrics/telemetry.rb +1 -1
  28. data/lib/datadog/appsec/metrics/telemetry_exporter.rb +28 -0
  29. data/lib/datadog/appsec/metrics.rb +1 -0
  30. data/lib/datadog/appsec/security_engine/engine.rb +14 -32
  31. data/lib/datadog/appsec/security_engine/result.rb +16 -0
  32. data/lib/datadog/appsec/security_engine/runner.rb +18 -4
  33. data/lib/datadog/appsec/thread_safe_ref.rb +61 -0
  34. data/lib/datadog/appsec/trace_keeper.rb +24 -0
  35. data/lib/datadog/appsec/utils/hash_coercion.rb +23 -0
  36. data/lib/datadog/appsec.rb +0 -7
  37. data/lib/datadog/auto_instrument_base.rb +2 -1
  38. data/lib/datadog/core/configuration/agent_settings_resolver.rb +4 -4
  39. data/lib/datadog/core/configuration/components.rb +8 -2
  40. data/lib/datadog/core/configuration/config_helper.rb +100 -0
  41. data/lib/datadog/core/configuration/deprecations.rb +36 -0
  42. data/lib/datadog/core/configuration/ext.rb +0 -1
  43. data/lib/datadog/core/configuration/option.rb +55 -51
  44. data/lib/datadog/core/configuration/option_definition.rb +2 -11
  45. data/lib/datadog/core/configuration/options.rb +14 -12
  46. data/lib/datadog/core/configuration/settings.rb +10 -6
  47. data/lib/datadog/core/configuration/supported_configurations.rb +335 -0
  48. data/lib/datadog/core/configuration.rb +1 -1
  49. data/lib/datadog/core/deprecations.rb +2 -2
  50. data/lib/datadog/core/environment/ext.rb +0 -2
  51. data/lib/datadog/core/environment/git.rb +2 -2
  52. data/lib/datadog/core/environment/variable_helpers.rb +3 -3
  53. data/lib/datadog/core/metrics/client.rb +2 -2
  54. data/lib/datadog/core/process_discovery/tracer_memfd.rb +2 -4
  55. data/lib/datadog/core/process_discovery.rb +46 -23
  56. data/lib/datadog/core/runtime/ext.rb +0 -1
  57. data/lib/datadog/core/telemetry/event/app_started.rb +2 -2
  58. data/lib/datadog/core.rb +2 -0
  59. data/lib/datadog/di/boot.rb +9 -1
  60. data/lib/datadog/di/component.rb +7 -0
  61. data/lib/datadog/di/probe_file_loader/railtie.rb +15 -0
  62. data/lib/datadog/di/probe_file_loader.rb +82 -0
  63. data/lib/datadog/di/probe_notification_builder.rb +1 -1
  64. data/lib/datadog/di/remote.rb +3 -5
  65. data/lib/datadog/di.rb +0 -1
  66. data/lib/datadog/kit/appsec/events/v2.rb +5 -4
  67. data/lib/datadog/kit/appsec/events.rb +11 -10
  68. data/lib/datadog/kit/identity.rb +17 -11
  69. data/lib/datadog/opentelemetry/api/baggage.rb +2 -2
  70. data/lib/datadog/opentelemetry/api/context.rb +10 -9
  71. data/lib/datadog/opentelemetry/sdk/configurator.rb +1 -1
  72. data/lib/datadog/opentelemetry/sdk/propagator.rb +4 -4
  73. data/lib/datadog/opentelemetry/sdk/span_processor.rb +8 -8
  74. data/lib/datadog/opentelemetry/sdk/trace/span.rb +14 -10
  75. data/lib/datadog/opentelemetry/trace.rb +4 -4
  76. data/lib/datadog/profiling/collectors/info.rb +1 -1
  77. data/lib/datadog/profiling/ext.rb +2 -1
  78. data/lib/datadog/profiling/http_transport.rb +1 -1
  79. data/lib/datadog/profiling/tasks/exec.rb +2 -2
  80. data/lib/datadog/profiling.rb +6 -8
  81. data/lib/datadog/tracing/analytics.rb +1 -1
  82. data/lib/datadog/tracing/buffer.rb +7 -7
  83. data/lib/datadog/tracing/configuration/dynamic.rb +4 -6
  84. data/lib/datadog/tracing/configuration/ext.rb +3 -5
  85. data/lib/datadog/tracing/configuration/settings.rb +29 -7
  86. data/lib/datadog/tracing/context.rb +2 -2
  87. data/lib/datadog/tracing/contrib/action_cable/event.rb +1 -1
  88. data/lib/datadog/tracing/contrib/action_cable/integration.rb +1 -1
  89. data/lib/datadog/tracing/contrib/action_mailer/integration.rb +1 -1
  90. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +4 -4
  91. data/lib/datadog/tracing/contrib/action_pack/integration.rb +1 -1
  92. data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +1 -1
  93. data/lib/datadog/tracing/contrib/active_job/event.rb +8 -8
  94. data/lib/datadog/tracing/contrib/active_job/events/discard.rb +1 -1
  95. data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +1 -1
  96. data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +1 -1
  97. data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +1 -1
  98. data/lib/datadog/tracing/contrib/active_job/events/perform.rb +1 -1
  99. data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +1 -1
  100. data/lib/datadog/tracing/contrib/active_job/integration.rb +1 -1
  101. data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +1 -1
  102. data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +3 -3
  103. data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +1 -2
  104. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +1 -1
  105. data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +1 -1
  106. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +5 -5
  107. data/lib/datadog/tracing/contrib/active_record/integration.rb +1 -1
  108. data/lib/datadog/tracing/contrib/active_record/utils.rb +15 -15
  109. data/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb +6 -6
  110. data/lib/datadog/tracing/contrib/active_support/integration.rb +1 -1
  111. data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +2 -1
  112. data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +7 -9
  113. data/lib/datadog/tracing/contrib/aws/ext.rb +1 -1
  114. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +2 -2
  115. data/lib/datadog/tracing/contrib/aws/parsed_context.rb +3 -1
  116. data/lib/datadog/tracing/contrib/aws/patcher.rb +5 -1
  117. data/lib/datadog/tracing/contrib/aws/service/base.rb +2 -1
  118. data/lib/datadog/tracing/contrib/aws/service/dynamodb.rb +1 -1
  119. data/lib/datadog/tracing/contrib/aws/service/eventbridge.rb +1 -1
  120. data/lib/datadog/tracing/contrib/aws/service/kinesis.rb +1 -1
  121. data/lib/datadog/tracing/contrib/aws/service/s3.rb +1 -1
  122. data/lib/datadog/tracing/contrib/aws/service/sns.rb +1 -1
  123. data/lib/datadog/tracing/contrib/aws/service/sqs.rb +1 -1
  124. data/lib/datadog/tracing/contrib/aws/service/states.rb +1 -1
  125. data/lib/datadog/tracing/contrib/aws/services.rb +7 -7
  126. data/lib/datadog/tracing/contrib/concurrent_ruby/async_patch.rb +1 -1
  127. data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +1 -1
  128. data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +1 -1
  129. data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +1 -1
  130. data/lib/datadog/tracing/contrib/concurrent_ruby/promises_future_patch.rb +1 -1
  131. data/lib/datadog/tracing/contrib/configurable.rb +6 -6
  132. data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +4 -4
  133. data/lib/datadog/tracing/contrib/dalli/ext.rb +3 -2
  134. data/lib/datadog/tracing/contrib/dalli/integration.rb +1 -1
  135. data/lib/datadog/tracing/contrib/delayed_job/integration.rb +1 -1
  136. data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +3 -2
  137. data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +4 -4
  138. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +51 -53
  139. data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +5 -5
  140. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +2 -2
  141. data/lib/datadog/tracing/contrib/ethon/ext.rb +3 -2
  142. data/lib/datadog/tracing/contrib/ethon/integration.rb +1 -1
  143. data/lib/datadog/tracing/contrib/excon/ext.rb +3 -2
  144. data/lib/datadog/tracing/contrib/excon/integration.rb +1 -1
  145. data/lib/datadog/tracing/contrib/excon/middleware.rb +2 -2
  146. data/lib/datadog/tracing/contrib/ext.rb +3 -3
  147. data/lib/datadog/tracing/contrib/extensions.rb +9 -9
  148. data/lib/datadog/tracing/contrib/faraday/ext.rb +3 -2
  149. data/lib/datadog/tracing/contrib/faraday/integration.rb +1 -1
  150. data/lib/datadog/tracing/contrib/faraday/middleware.rb +4 -2
  151. data/lib/datadog/tracing/contrib/grape/endpoint.rb +8 -8
  152. data/lib/datadog/tracing/contrib/grape/integration.rb +1 -1
  153. data/lib/datadog/tracing/contrib/graphql/integration.rb +1 -1
  154. data/lib/datadog/tracing/contrib/graphql/patcher.rb +2 -2
  155. data/lib/datadog/tracing/contrib/graphql/unified_trace.rb +36 -25
  156. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +8 -8
  157. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +3 -3
  158. data/lib/datadog/tracing/contrib/grpc/distributed/fetcher.rb +1 -1
  159. data/lib/datadog/tracing/contrib/grpc/integration.rb +1 -1
  160. data/lib/datadog/tracing/contrib/hanami/ext.rb +2 -2
  161. data/lib/datadog/tracing/contrib/hanami/integration.rb +1 -1
  162. data/lib/datadog/tracing/contrib/hanami/renderer_policy_tracing.rb +1 -1
  163. data/lib/datadog/tracing/contrib/hanami/router_tracing.rb +9 -11
  164. data/lib/datadog/tracing/contrib/http/distributed/fetcher.rb +4 -4
  165. data/lib/datadog/tracing/contrib/http/ext.rb +3 -2
  166. data/lib/datadog/tracing/contrib/http/instrumentation.rb +5 -5
  167. data/lib/datadog/tracing/contrib/httpclient/ext.rb +3 -2
  168. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +3 -3
  169. data/lib/datadog/tracing/contrib/httpclient/integration.rb +1 -1
  170. data/lib/datadog/tracing/contrib/httprb/ext.rb +3 -2
  171. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +4 -4
  172. data/lib/datadog/tracing/contrib/httprb/integration.rb +1 -1
  173. data/lib/datadog/tracing/contrib/kafka/event.rb +1 -1
  174. data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +1 -1
  175. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +1 -1
  176. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +1 -1
  177. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +1 -1
  178. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +1 -1
  179. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +1 -1
  180. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +1 -1
  181. data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +1 -1
  182. data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +1 -1
  183. data/lib/datadog/tracing/contrib/kafka/integration.rb +1 -1
  184. data/lib/datadog/tracing/contrib/karafka/monitor.rb +13 -13
  185. data/lib/datadog/tracing/contrib/karafka/patcher.rb +4 -4
  186. data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +1 -1
  187. data/lib/datadog/tracing/contrib/lograge/integration.rb +1 -1
  188. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +1 -1
  189. data/lib/datadog/tracing/contrib/mongodb/ext.rb +1 -1
  190. data/lib/datadog/tracing/contrib/mongodb/integration.rb +1 -1
  191. data/lib/datadog/tracing/contrib/mongodb/parsers.rb +1 -1
  192. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +6 -6
  193. data/lib/datadog/tracing/contrib/mysql2/ext.rb +1 -1
  194. data/lib/datadog/tracing/contrib/mysql2/integration.rb +1 -1
  195. data/lib/datadog/tracing/contrib/opensearch/configuration/settings.rb +1 -1
  196. data/lib/datadog/tracing/contrib/opensearch/ext.rb +3 -2
  197. data/lib/datadog/tracing/contrib/opensearch/integration.rb +1 -2
  198. data/lib/datadog/tracing/contrib/opensearch/patcher.rb +68 -70
  199. data/lib/datadog/tracing/contrib/opensearch/quantize.rb +5 -5
  200. data/lib/datadog/tracing/contrib/patcher.rb +7 -9
  201. data/lib/datadog/tracing/contrib/pg/integration.rb +1 -1
  202. data/lib/datadog/tracing/contrib/presto/ext.rb +1 -1
  203. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +3 -3
  204. data/lib/datadog/tracing/contrib/presto/integration.rb +1 -1
  205. data/lib/datadog/tracing/contrib/propagation/sql_comment/comment.rb +1 -1
  206. data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +1 -1
  207. data/lib/datadog/tracing/contrib/que/integration.rb +1 -1
  208. data/lib/datadog/tracing/contrib/racecar/event.rb +1 -1
  209. data/lib/datadog/tracing/contrib/racecar/events/batch.rb +2 -2
  210. data/lib/datadog/tracing/contrib/racecar/events/consume.rb +1 -1
  211. data/lib/datadog/tracing/contrib/racecar/events/message.rb +2 -2
  212. data/lib/datadog/tracing/contrib/racecar/integration.rb +1 -1
  213. data/lib/datadog/tracing/contrib/rack/header_collection.rb +1 -1
  214. data/lib/datadog/tracing/contrib/rack/header_tagging.rb +32 -32
  215. data/lib/datadog/tracing/contrib/rack/integration.rb +1 -1
  216. data/lib/datadog/tracing/contrib/rack/middlewares.rb +21 -17
  217. data/lib/datadog/tracing/contrib/rack/patcher.rb +1 -1
  218. data/lib/datadog/tracing/contrib/rack/request_queue.rb +3 -2
  219. data/lib/datadog/tracing/contrib/rack/trace_proxy_middleware.rb +7 -1
  220. data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +1 -1
  221. data/lib/datadog/tracing/contrib/rails/ext.rb +2 -1
  222. data/lib/datadog/tracing/contrib/rails/integration.rb +2 -2
  223. data/lib/datadog/tracing/contrib/rails/log_injection.rb +1 -1
  224. data/lib/datadog/tracing/contrib/rails/middlewares.rb +1 -1
  225. data/lib/datadog/tracing/contrib/rails/runner.rb +5 -4
  226. data/lib/datadog/tracing/contrib/rake/instrumentation.rb +4 -4
  227. data/lib/datadog/tracing/contrib/rake/integration.rb +1 -1
  228. data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +2 -2
  229. data/lib/datadog/tracing/contrib/redis/ext.rb +3 -2
  230. data/lib/datadog/tracing/contrib/redis/integration.rb +2 -2
  231. data/lib/datadog/tracing/contrib/redis/patcher.rb +4 -4
  232. data/lib/datadog/tracing/contrib/redis/quantize.rb +1 -1
  233. data/lib/datadog/tracing/contrib/redis/tags.rb +1 -1
  234. data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +4 -4
  235. data/lib/datadog/tracing/contrib/registry.rb +1 -1
  236. data/lib/datadog/tracing/contrib/resque/integration.rb +1 -1
  237. data/lib/datadog/tracing/contrib/resque/resque_job.rb +1 -1
  238. data/lib/datadog/tracing/contrib/rest_client/ext.rb +3 -2
  239. data/lib/datadog/tracing/contrib/rest_client/integration.rb +1 -1
  240. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +3 -3
  241. data/lib/datadog/tracing/contrib/roda/instrumentation.rb +1 -1
  242. data/lib/datadog/tracing/contrib/roda/integration.rb +1 -1
  243. data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +1 -1
  244. data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +1 -1
  245. data/lib/datadog/tracing/contrib/sequel/database.rb +5 -5
  246. data/lib/datadog/tracing/contrib/sequel/dataset.rb +1 -1
  247. data/lib/datadog/tracing/contrib/sequel/integration.rb +1 -1
  248. data/lib/datadog/tracing/contrib/sequel/utils.rb +1 -1
  249. data/lib/datadog/tracing/contrib/shoryuken/integration.rb +1 -1
  250. data/lib/datadog/tracing/contrib/sidekiq/integration.rb +1 -1
  251. data/lib/datadog/tracing/contrib/sidekiq/utils.rb +1 -1
  252. data/lib/datadog/tracing/contrib/sinatra/integration.rb +1 -1
  253. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +38 -40
  254. data/lib/datadog/tracing/contrib/sneakers/integration.rb +1 -1
  255. data/lib/datadog/tracing/contrib/span_attribute_schema.rb +1 -1
  256. data/lib/datadog/tracing/contrib/stripe/integration.rb +1 -1
  257. data/lib/datadog/tracing/contrib/stripe/request.rb +1 -1
  258. data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +1 -1
  259. data/lib/datadog/tracing/contrib/trilogy/ext.rb +1 -1
  260. data/lib/datadog/tracing/contrib/trilogy/integration.rb +1 -1
  261. data/lib/datadog/tracing/contrib/utils/quantization/hash.rb +11 -11
  262. data/lib/datadog/tracing/contrib/utils/quantization/http.rb +6 -6
  263. data/lib/datadog/tracing/diagnostics/environment_logger.rb +5 -1
  264. data/lib/datadog/tracing/distributed/b3_single.rb +1 -1
  265. data/lib/datadog/tracing/distributed/baggage.rb +73 -8
  266. data/lib/datadog/tracing/distributed/datadog.rb +4 -5
  267. data/lib/datadog/tracing/distributed/datadog_tags_codec.rb +11 -13
  268. data/lib/datadog/tracing/distributed/helpers.rb +1 -1
  269. data/lib/datadog/tracing/distributed/none.rb +4 -2
  270. data/lib/datadog/tracing/distributed/propagation.rb +4 -1
  271. data/lib/datadog/tracing/distributed/propagation_policy.rb +1 -1
  272. data/lib/datadog/tracing/distributed/trace_context.rb +22 -16
  273. data/lib/datadog/tracing/event.rb +5 -7
  274. data/lib/datadog/tracing/flush.rb +1 -1
  275. data/lib/datadog/tracing/metadata/analytics.rb +1 -1
  276. data/lib/datadog/tracing/metadata/tagging.rb +4 -4
  277. data/lib/datadog/tracing/pipeline/span_filter.rb +3 -1
  278. data/lib/datadog/tracing/pipeline/span_processor.rb +3 -1
  279. data/lib/datadog/tracing/pipeline.rb +1 -1
  280. data/lib/datadog/tracing/sampling/ext.rb +0 -2
  281. data/lib/datadog/tracing/sampling/rule_sampler.rb +30 -30
  282. data/lib/datadog/tracing/sampling/span/rule_parser.rb +1 -1
  283. data/lib/datadog/tracing/sampling/span/sampler.rb +0 -7
  284. data/lib/datadog/tracing/span.rb +1 -1
  285. data/lib/datadog/tracing/span_event.rb +10 -10
  286. data/lib/datadog/tracing/span_link.rb +12 -12
  287. data/lib/datadog/tracing/span_operation.rb +9 -11
  288. data/lib/datadog/tracing/trace_digest.rb +21 -23
  289. data/lib/datadog/tracing/trace_operation.rb +84 -88
  290. data/lib/datadog/tracing/trace_segment.rb +2 -2
  291. data/lib/datadog/tracing/tracer.rb +36 -38
  292. data/lib/datadog/tracing/transport/http/client.rb +1 -1
  293. data/lib/datadog/tracing/transport/http/traces.rb +2 -2
  294. data/lib/datadog/tracing/transport/io/client.rb +5 -5
  295. data/lib/datadog/tracing/transport/io/traces.rb +4 -4
  296. data/lib/datadog/tracing/transport/statistics.rb +1 -1
  297. data/lib/datadog/tracing/transport/traces.rb +5 -5
  298. data/lib/datadog/tracing/workers/trace_writer.rb +12 -12
  299. data/lib/datadog/tracing/workers.rb +2 -2
  300. data/lib/datadog/tracing.rb +2 -2
  301. data/lib/datadog/version.rb +1 -1
  302. metadata +18 -6
@@ -12,17 +12,17 @@ module Datadog
12
12
 
13
13
  # Use global DD_TRACE_HEADER_TAGS if integration-level configuration is not provided
14
14
  tags = if configuration.using_default?(:headers) && !Datadog.configuration.tracing.using_default?(:header_tags)
15
- Datadog.configuration.tracing.header_tags.request_tags(headers)
16
- else
17
- whitelist = configuration[:headers][:request] || []
18
- whitelist.each_with_object({}) do |header, result|
19
- header_value = headers.get(header)
20
- unless header_value.nil?
21
- header_tag = Tracing::Metadata::Ext::HTTP::RequestHeaders.to_tag(header)
22
- result[header_tag] = header_value
23
- end
24
- end
25
- end
15
+ Datadog.configuration.tracing.header_tags.request_tags(headers)
16
+ else
17
+ whitelist = configuration[:headers][:request] || []
18
+ whitelist.each_with_object({}) do |header, result|
19
+ header_value = headers.get(header)
20
+ unless header_value.nil?
21
+ header_tag = Tracing::Metadata::Ext::HTTP::RequestHeaders.to_tag(header)
22
+ result[header_tag] = header_value
23
+ end
24
+ end
25
+ end
26
26
 
27
27
  span.set_tags(tags)
28
28
  end
@@ -32,27 +32,27 @@ module Datadog
32
32
 
33
33
  # Use global DD_TRACE_HEADER_TAGS if integration-level configuration is not provided
34
34
  tags = if configuration.using_default?(:headers) && !Datadog.configuration.tracing.using_default?(:header_tags)
35
- Datadog.configuration.tracing.header_tags.response_tags(headers)
36
- else
37
- whitelist = configuration[:headers][:response] || []
38
- whitelist.each_with_object({}) do |header, result|
39
- header_value = headers[header]
40
-
41
- next if header_value.nil?
42
-
43
- header_tag = Tracing::Metadata::Ext::HTTP::ResponseHeaders.to_tag(header)
44
-
45
- # Maintain the value format between Rack 2 and 3
46
- #
47
- # Rack 2.x => { 'foo' => 'bar,baz' }
48
- # Rack 3.x => { 'foo' => ['bar', 'baz'] }
49
- result[header_tag] = if header_value.is_a? Array
50
- header_value.join(',')
51
- else
52
- header_value
53
- end
54
- end
55
- end
35
+ Datadog.configuration.tracing.header_tags.response_tags(headers)
36
+ else
37
+ whitelist = configuration[:headers][:response] || []
38
+ whitelist.each_with_object({}) do |header, result|
39
+ header_value = headers[header]
40
+
41
+ next if header_value.nil?
42
+
43
+ header_tag = Tracing::Metadata::Ext::HTTP::ResponseHeaders.to_tag(header)
44
+
45
+ # Maintain the value format between Rack 2 and 3
46
+ #
47
+ # Rack 2.x => { 'foo' => 'bar,baz' }
48
+ # Rack 3.x => { 'foo' => ['bar', 'baz'] }
49
+ result[header_tag] = if header_value.is_a? Array
50
+ header_value.join(',')
51
+ else
52
+ header_value
53
+ end
54
+ end
55
+ end
56
56
 
57
57
  span.set_tags(tags)
58
58
  end
@@ -19,7 +19,7 @@ module Datadog
19
19
  register_as :rack, auto_patch: false
20
20
 
21
21
  def self.version
22
- Gem.loaded_specs['rack'] && Gem.loaded_specs['rack'].version
22
+ Gem.loaded_specs['rack']&.version
23
23
  end
24
24
 
25
25
  def self.loaded?
@@ -47,7 +47,7 @@ module Datadog
47
47
  end
48
48
 
49
49
  TraceProxyMiddleware.call(env, configuration) do
50
- trace_options = { type: Tracing::Metadata::Ext::HTTP::TYPE_INBOUND }
50
+ trace_options = {type: Tracing::Metadata::Ext::HTTP::TYPE_INBOUND}
51
51
  trace_options[:service] = configuration[:service_name] if configuration[:service_name]
52
52
 
53
53
  # start a new request span and attach it to the current Rack environment;
@@ -80,7 +80,7 @@ module Datadog
80
80
  # catch exceptions that may be raised in the middleware chain
81
81
  # Note: if a middleware catches an Exception without re raising,
82
82
  # the Exception cannot be recorded here.
83
- request_span.set_error(e) unless request_span.nil?
83
+ request_span&.set_error(e)
84
84
  raise e
85
85
  ensure
86
86
  env[Ext::RACK_ENV_REQUEST_SPAN] = previous_request_span if previous_request_span
@@ -123,7 +123,7 @@ module Datadog
123
123
  # 4. Fallback with verb + status, eq `GET 200`
124
124
  request_span.resource ||=
125
125
  if configuration[:middleware_names] && env['RESPONSE_MIDDLEWARE']
126
- "#{env['RESPONSE_MIDDLEWARE']}##{original_request_method}"
126
+ "#{env["RESPONSE_MIDDLEWARE"]}##{original_request_method}"
127
127
  elsif trace.resource_override?
128
128
  trace.resource
129
129
  else
@@ -240,16 +240,18 @@ module Datadog
240
240
  Datadog.configuration.tracing[:rack]
241
241
  end
242
242
 
243
+ # rubocop:disable Metrics/AbcSize
244
+ # rubocop:disable Metrics/MethodLength
243
245
  def parse_url(env, original_env)
244
246
  request_obj = ::Rack::Request.new(env)
245
247
 
246
248
  # scheme, host, and port
247
249
  base_url = if request_obj.respond_to?(:base_url)
248
- request_obj.base_url
249
- else
250
- # Compatibility for older Rack versions
251
- request_obj.url.chomp(request_obj.fullpath)
252
- end
250
+ request_obj.base_url
251
+ else
252
+ # Compatibility for older Rack versions
253
+ request_obj.url.chomp(request_obj.fullpath)
254
+ end
253
255
 
254
256
  # https://github.com/rack/rack/blob/main/SPEC.rdoc
255
257
  #
@@ -269,18 +271,20 @@ module Datadog
269
271
  # prepended to PATH_INFO to reflect the correct user visible path.
270
272
  request_uri = env['REQUEST_URI'].to_s
271
273
  fullpath = if request_uri.empty?
272
- query_string = original_env['QUERY_STRING'].to_s
273
- path = original_env['SCRIPT_NAME'].to_s + original_env['PATH_INFO'].to_s
274
-
275
- query_string.empty? ? path : "#{path}?#{query_string}"
276
- else
277
- # normally REQUEST_URI starts at the path, but it
278
- # might contain the full URL in some cases (e.g WEBrick)
279
- request_uri.delete_prefix(base_url)
280
- end
274
+ query_string = original_env['QUERY_STRING'].to_s
275
+ path = original_env['SCRIPT_NAME'].to_s + original_env['PATH_INFO'].to_s
276
+
277
+ query_string.empty? ? path : "#{path}?#{query_string}"
278
+ else
279
+ # normally REQUEST_URI starts at the path, but it
280
+ # might contain the full URL in some cases (e.g WEBrick)
281
+ request_uri.delete_prefix(base_url)
282
+ end
281
283
 
282
284
  base_url + fullpath
283
285
  end
286
+ # rubocop:enable Metrics/AbcSize
287
+ # rubocop:enable Metrics/MethodLength
284
288
 
285
289
  def parse_user_agent_header(headers)
286
290
  headers.get(Tracing::Metadata::Ext::HTTP::HEADER_USER_AGENT)
@@ -45,7 +45,7 @@ module Datadog
45
45
  end
46
46
 
47
47
  def retain_middleware_name(middleware)
48
- return unless middleware && middleware.respond_to?(:call)
48
+ return unless middleware&.respond_to?(:call)
49
49
 
50
50
  middleware.singleton_class.class_eval do
51
51
  alias_method :__call, :call
@@ -24,6 +24,7 @@ module Datadog
24
24
  # nginx header is seconds in the format "t=1512379167.574"
25
25
  # apache header is microseconds in the format "t=1570633834463123"
26
26
  # heroku header is milliseconds in the format "1570634024294"
27
+ # @see https://github.com/heroku/vegur/blob/65d168f757e0ddb448f41cfb9e4b0281c747378d/README.md?plain=1#L383-L384
27
28
  time_string = header.to_s.delete('^0-9')
28
29
  return if time_string.nil?
29
30
 
@@ -34,8 +35,8 @@ module Datadog
34
35
  # return the request_start only if it's lesser than
35
36
  # current time, to avoid significant clock skew
36
37
  request_start = Time.at(time_value)
37
- request_start.utc > now ? nil : request_start
38
- rescue StandardError => e
38
+ (request_start.utc > now) ? nil : request_start
39
+ rescue => e
39
40
  # in case of an Exception we don't create a
40
41
  # `request.queuing` span
41
42
  Datadog.logger.debug("[rack] unable to parse request queue headers: #{e}")
@@ -43,7 +43,13 @@ module Datadog
43
43
  # excluding the time spent processing the request itself
44
44
  queue_span.finish
45
45
 
46
- yield.tap { request_span.finish }
46
+ yield
47
+ ensure
48
+ # Ensure that the spans are finished even if an exception is raised.
49
+ # **This is very important** to prevent the trace from leaking between requests,
50
+ # especially because `queue_span` is normally a root span.
51
+ queue_span&.finish
52
+ request_span&.finish
47
53
  end
48
54
  end
49
55
  end
@@ -13,7 +13,7 @@ module Datadog
13
13
  # @public_api
14
14
  class Settings < Contrib::Configuration::Settings
15
15
  def initialize(options = {})
16
- super(options)
16
+ super
17
17
 
18
18
  # NOTE: Eager load these
19
19
  # Rails integration is responsible for orchestrating other integrations.
@@ -12,7 +12,8 @@ module Datadog
12
12
  # @!visibility private
13
13
  ENV_ANALYTICS_ENABLED = 'DD_TRACE_RAILS_ANALYTICS_ENABLED'
14
14
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_RAILS_ANALYTICS_SAMPLE_RATE'
15
- ENV_DISABLE = 'DISABLE_DATADOG_RAILS'
15
+ # Note: Alias (previous name DISABLE_DATADOG_RAILS) defined in supported-configurations.json
16
+ ENV_DISABLE = 'DD_DISABLE_DATADOG_RAILS'
16
17
 
17
18
  SPAN_RUNNER_FILE = 'rails.runner.file'
18
19
  SPAN_RUNNER_INLINE = 'rails.runner.inline'
@@ -23,7 +23,7 @@ module Datadog
23
23
  register_as :rails, auto_patch: false
24
24
 
25
25
  def self.version
26
- Gem.loaded_specs['railties'] && Gem.loaded_specs['railties'].version
26
+ Gem.loaded_specs['railties']&.version
27
27
  end
28
28
 
29
29
  def self.loaded?
@@ -35,7 +35,7 @@ module Datadog
35
35
  end
36
36
 
37
37
  def self.patchable?
38
- super && !ENV.key?(Ext::ENV_DISABLE)
38
+ super && !DATADOG_ENV.key?(Ext::ENV_DISABLE)
39
39
  end
40
40
 
41
41
  def new_configuration
@@ -16,7 +16,7 @@ module Datadog
16
16
 
17
17
  app_config.log_tags ||= [] # Can be nil, we initialized it if so
18
18
  app_config.log_tags << proc { Tracing.log_correlation if Datadog.configuration.tracing.log_injection }
19
- rescue StandardError => e
19
+ rescue => e
20
20
  Datadog.logger.warn(
21
21
  "Unable to add Datadog Trace context to ActiveSupport::TaggedLogging: #{e.class.name} #{e.message}"
22
22
  )
@@ -34,7 +34,7 @@ module Datadog
34
34
  # Some exception gets handled by Rails middleware before it can be set on Rack middleware
35
35
  # The rack span is the root span of the request and should make sure it has the full exception
36
36
  # set on it.
37
- env[Contrib::Rack::Ext::RACK_ENV_REQUEST_SPAN].set_error(e) if env[Contrib::Rack::Ext::RACK_ENV_REQUEST_SPAN]
37
+ env[Contrib::Rack::Ext::RACK_ENV_REQUEST_SPAN]&.set_error(e)
38
38
  end
39
39
  raise e
40
40
  end
@@ -69,14 +69,15 @@ module Datadog
69
69
  end
70
70
  end
71
71
 
72
- def self.prepend(base)
73
- base.const_set(:Kernel, Kernel)
72
+ def self.prepended(base)
73
+ base.const_set(:Kernel, InstrumentedKernel)
74
74
  end
75
75
 
76
76
  # Instruments the `Kernel.load` method, but only for the
77
77
  # `Rails::Command::RunnerCommand` class.
78
- module Kernel
79
- def self.load(file, wrap = true)
78
+ module InstrumentedKernel
79
+ def self.load(*args)
80
+ file = args[0]
80
81
  name = Ext::SPAN_RUNNER_FILE
81
82
  resource = file
82
83
  operation = Ext::TAG_OPERATION_FILE
@@ -65,7 +65,7 @@ module Datadog
65
65
  span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_INVOKE)
66
66
  span.set_tag(Ext::TAG_TASK_ARG_NAMES, arg_names)
67
67
  span.set_tag(Ext::TAG_INVOKE_ARGS, quantize_args(args)) unless args.nil?
68
- rescue StandardError => e
68
+ rescue => e
69
69
  Datadog.logger.debug("Error while tracing Rake invoke: #{e.class.name} #{e.message}")
70
70
  end
71
71
 
@@ -74,7 +74,7 @@ module Datadog
74
74
  span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
75
75
  span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_EXECUTE)
76
76
  span.set_tag(Ext::TAG_EXECUTE_ARGS, quantize_args(args.to_hash)) unless args.nil?
77
- rescue StandardError => e
77
+ rescue => e
78
78
  Datadog.logger.debug("Error while tracing Rake execute: #{e.class.name} #{e.message}")
79
79
  end
80
80
 
@@ -84,12 +84,12 @@ module Datadog
84
84
  end
85
85
 
86
86
  def enabled?
87
- Datadog.configuration.tracing.enabled && \
87
+ Datadog.configuration.tracing.enabled &&
88
88
  configuration[:enabled] == true
89
89
  end
90
90
 
91
91
  def span_options
92
- { service: configuration[:service_name] }
92
+ {service: configuration[:service_name]}
93
93
  end
94
94
 
95
95
  def configuration
@@ -18,7 +18,7 @@ module Datadog
18
18
  register_as :rake
19
19
 
20
20
  def self.version
21
- Gem.loaded_specs['rake'] && Gem.loaded_specs['rake'].version
21
+ Gem.loaded_specs['rake']&.version
22
22
  end
23
23
 
24
24
  def self.loaded?
@@ -19,13 +19,13 @@ module Datadog
19
19
  protected
20
20
 
21
21
  def parse_matcher(matcher)
22
- matcher = { url: matcher } if matcher.is_a?(String)
22
+ matcher = {url: matcher} if matcher.is_a?(String)
23
23
 
24
24
  normalize(connection_resolver.resolve(matcher))
25
25
  end
26
26
 
27
27
  def normalize(hash)
28
- return { url: hash[:url] } if hash[:scheme] == UNIX_SCHEME
28
+ return {url: hash[:url]} if hash[:scheme] == UNIX_SCHEME
29
29
 
30
30
  # Connexion strings are always converted to host, port, db and scheme
31
31
  # but the host, port, db and scheme will generate the :url only after
@@ -24,10 +24,11 @@ module Datadog
24
24
  TAG_OPERATION_COMMAND = 'command'
25
25
  TAG_SYSTEM = 'redis'
26
26
  TAG_DATABASE_INDEX = 'db.redis.database_index'
27
- PEER_SERVICE_SOURCES = Array[
27
+ PEER_SERVICE_SOURCES = [
28
28
  Tracing::Metadata::Ext::TAG_PEER_HOSTNAME,
29
29
  Tracing::Metadata::Ext::NET::TAG_DESTINATION_NAME,
30
- Tracing::Metadata::Ext::NET::TAG_TARGET_HOST,].freeze
30
+ Tracing::Metadata::Ext::NET::TAG_TARGET_HOST,
31
+ ].freeze
31
32
  end
32
33
  end
33
34
  end
@@ -31,11 +31,11 @@ module Datadog
31
31
  end
32
32
 
33
33
  def self.redis_version
34
- Gem.loaded_specs['redis'] && Gem.loaded_specs['redis'].version
34
+ Gem.loaded_specs['redis']&.version
35
35
  end
36
36
 
37
37
  def self.redis_client_version
38
- Gem.loaded_specs['redis-client'] && Gem.loaded_specs['redis-client'].version
38
+ Gem.loaded_specs['redis-client']&.version
39
39
  end
40
40
 
41
41
  def self.loaded?
@@ -30,7 +30,7 @@ module Datadog
30
30
  # For `redis-rb` 3.x
31
31
  return client if respond_to?(:client)
32
32
 
33
- Datadog.logger.warn 'Fail to apply configuration on redis client instance with ' \
33
+ Datadog.logger.warn 'Fail to apply configuration on redis client instance with ' \
34
34
  '`Datadog.configure_onto(redis)`.'
35
35
 
36
36
  # Null object instead of raising error
@@ -49,8 +49,8 @@ module Datadog
49
49
  module InstanceMethods
50
50
  def datadog_pin=(_pin)
51
51
  Datadog.logger.warn \
52
- '`Datadog.configure_onto(redis)` is not supported on Redis 5+. To instrument '\
53
- "a redis instance with custom configuration, please initialize it with:\n"\
52
+ '`Datadog.configure_onto(redis)` is not supported on Redis 5+. To instrument ' \
53
+ "a redis instance with custom configuration, please initialize it with:\n" \
54
54
  " `Redis.new(..., custom: { datadog: { service_name: 'my-service' } })`.\n\n" \
55
55
  'See: https://github.com/DataDog/dd-trace-rb/blob/master/docs/GettingStarted.md#redis'
56
56
  end
@@ -61,7 +61,7 @@ module Datadog
61
61
 
62
62
  def default_tags
63
63
  [].tap do |tags|
64
- tags << "target_redis_version:#{Integration.redis_version}" if Integration.redis_version
64
+ tags << "target_redis_version:#{Integration.redis_version}" if Integration.redis_version
65
65
  tags << "target_redis_client_version:#{Integration.redis_client_version}" if Integration.redis_client_version
66
66
  end
67
67
  end
@@ -43,7 +43,7 @@ module Datadog
43
43
  return 'AUTH ?' if auth_command?(command_args)
44
44
 
45
45
  verb, *args = command_args.map { |x| format_arg(x) }
46
- Core::Utils.truncate("#{verb.upcase} #{args.join(' ')}", CMD_MAX_LEN, TOO_LONG_MARK)
46
+ Core::Utils.truncate("#{verb.upcase} #{args.join(" ")}", CMD_MAX_LEN, TOO_LONG_MARK)
47
47
  end
48
48
 
49
49
  def get_verb(command_args)
@@ -46,7 +46,7 @@ module Datadog
46
46
  span.set_tag Ext::TAG_RAW_COMMAND, raw_command
47
47
 
48
48
  Contrib::SpanAttributeSchema.set_peer_service!(span, Ext::PEER_SERVICE_SOURCES)
49
- rescue StandardError => e
49
+ rescue => e
50
50
  Datadog.logger.error(e.message)
51
51
  Datadog::Core::Telemetry::Logger.report(e)
52
52
  end
@@ -62,10 +62,10 @@ module Datadog
62
62
  # Quantizes a multi-command Redis pipeline execution
63
63
  def get_pipeline_commands(commands, command_args)
64
64
  list = if command_args
65
- commands.map { |c| Contrib::Redis::Quantize.format_command_args(c) }
66
- else
67
- commands.map { |c| Contrib::Redis::Quantize.get_verb(c) }
68
- end
65
+ commands.map { |c| Contrib::Redis::Quantize.format_command_args(c) }
66
+ else
67
+ commands.map { |c| Contrib::Redis::Quantize.get_verb(c) }
68
+ end
69
69
 
70
70
  list.empty? ? '(none)' : list.join("\n")
71
71
  end
@@ -35,7 +35,7 @@ module Datadog
35
35
  def [](name)
36
36
  @mutex.synchronize do
37
37
  entry = @data[name]
38
- entry.klass if entry
38
+ entry&.klass
39
39
  end
40
40
  end
41
41
 
@@ -18,7 +18,7 @@ module Datadog
18
18
  register_as :resque, auto_patch: true
19
19
 
20
20
  def self.version
21
- Gem.loaded_specs['resque'] && Gem.loaded_specs['resque'].version
21
+ Gem.loaded_specs['resque']&.version
22
22
  end
23
23
 
24
24
  def self.loaded?
@@ -76,7 +76,7 @@ module Datadog
76
76
  end
77
77
 
78
78
  def span_options
79
- { service: datadog_configuration[:service_name], on_error: datadog_configuration[:on_error] }
79
+ {service: datadog_configuration[:service_name], on_error: datadog_configuration[:on_error]}
80
80
  end
81
81
 
82
82
  def datadog_configuration
@@ -17,10 +17,11 @@ module Datadog
17
17
  SPAN_REQUEST = 'rest_client.request'
18
18
  TAG_COMPONENT = 'rest_client'
19
19
  TAG_OPERATION_REQUEST = 'request'
20
- PEER_SERVICE_SOURCES = Array[
20
+ PEER_SERVICE_SOURCES = [
21
21
  Tracing::Metadata::Ext::TAG_PEER_HOSTNAME,
22
22
  Tracing::Metadata::Ext::NET::TAG_DESTINATION_NAME,
23
- Tracing::Metadata::Ext::NET::TAG_TARGET_HOST,].freeze
23
+ Tracing::Metadata::Ext::NET::TAG_TARGET_HOST,
24
+ ].freeze
24
25
  end
25
26
  end
26
27
  end
@@ -21,7 +21,7 @@ module Datadog
21
21
  end
22
22
 
23
23
  def self.version
24
- Gem.loaded_specs['rest-client'] && Gem.loaded_specs['rest-client'].version
24
+ Gem.loaded_specs['rest-client']&.version
25
25
  end
26
26
 
27
27
  def self.loaded?
@@ -22,7 +22,7 @@ module Datadog
22
22
  def execute(&block)
23
23
  uri = URI.parse(url)
24
24
 
25
- return super(&block) unless Tracing.enabled?
25
+ return super unless Tracing.enabled?
26
26
 
27
27
  datadog_trace_request(uri) do |_span, trace|
28
28
  if Tracing::Distributed::PropagationPolicy.enabled?(
@@ -106,11 +106,11 @@ module Datadog
106
106
  # rubocop:disable Lint/RescueException
107
107
  rescue Exception => e
108
108
  # rubocop:enable Lint/RescueException
109
- span.set_error(e) if span
109
+ span&.set_error(e)
110
110
 
111
111
  raise e
112
112
  ensure
113
- span.finish if span
113
+ span&.finish
114
114
  end
115
115
 
116
116
  private
@@ -46,7 +46,7 @@ module Datadog
46
46
  ensure
47
47
  begin
48
48
  response = yield
49
- rescue StandardError
49
+ rescue
50
50
  # The status code is unknown to Roda and decided by the upstream web runner.
51
51
  # In this case, spans default to status code 500 rather than a blank status code.
52
52
  default_error_status = '500'
@@ -20,7 +20,7 @@ module Datadog
20
20
  register_as :roda
21
21
 
22
22
  def self.version
23
- Gem.loaded_specs['roda'] && Gem.loaded_specs['roda'].version
23
+ Gem.loaded_specs['roda']&.version
24
24
  end
25
25
 
26
26
  def self.loaded?
@@ -25,7 +25,7 @@ module Datadog
25
25
  # if the user already has conflicting log_tags
26
26
  # we want them to clobber ours, because we should allow them to override if needed.
27
27
  log.named_tags = correlation.to_h.merge(original_named_tags)
28
- super(log, message, progname, &block)
28
+ super
29
29
  end
30
30
  end
31
31
  end
@@ -21,7 +21,7 @@ module Datadog
21
21
  register_as :semantic_logger
22
22
 
23
23
  def self.version
24
- Gem.loaded_specs['semantic_logger'] && Gem.loaded_specs['semantic_logger'].version
24
+ Gem.loaded_specs['semantic_logger']&.version
25
25
  end
26
26
 
27
27
  def self.loaded?
@@ -23,7 +23,7 @@ module Datadog
23
23
  response = nil
24
24
 
25
25
  Tracing.trace(Ext::SPAN_QUERY) do |span|
26
- span.service = Datadog.configuration_for(self, :service_name) \
26
+ span.service = Datadog.configuration_for(self, :service_name) \
27
27
  || Datadog.configuration.tracing[:sequel][:service_name] \
28
28
  || Contrib::SpanAttributeSchema.fetch_service_name(
29
29
  '',
@@ -46,10 +46,10 @@ module Datadog
46
46
 
47
47
  def parse_opts(sql, opts)
48
48
  db_opts = if ::Sequel::VERSION < '3.41.0' && self.class.to_s !~ /Dataset$/
49
- @opts
50
- elsif instance_variable_defined?(:@pool) && @pool
51
- @pool.db.opts
52
- end
49
+ @opts
50
+ elsif instance_variable_defined?(:@pool) && @pool
51
+ @pool.db.opts
52
+ end
53
53
  sql = sql.is_a?(::Sequel::SQL::Expression) ? literal(sql) : sql.to_s
54
54
 
55
55
  Utils.parse_opts(sql, opts, db_opts)
@@ -40,7 +40,7 @@ module Datadog
40
40
  response = nil
41
41
 
42
42
  Tracing.trace(Ext::SPAN_QUERY) do |span|
43
- span.service = Datadog.configuration_for(db, :service_name) \
43
+ span.service = Datadog.configuration_for(db, :service_name) \
44
44
  || Datadog.configuration.tracing[:sequel][:service_name] \
45
45
  || Contrib::SpanAttributeSchema.fetch_service_name(
46
46
  '',
@@ -18,7 +18,7 @@ module Datadog
18
18
  register_as :sequel, auto_patch: false
19
19
 
20
20
  def self.version
21
- Gem.loaded_specs['sequel'] && Gem.loaded_specs['sequel'].version
21
+ Gem.loaded_specs['sequel']&.version
22
22
  end
23
23
 
24
24
  def self.loaded?
@@ -34,7 +34,7 @@ module Datadog
34
34
 
35
35
  def parse_opts(sql, opts, db_opts, dataset = nil)
36
36
  # Prepared statements don't provide their sql query in the +sql+ parameter.
37
- if !sql.is_a?(String) && (dataset && dataset.respond_to?(:prepared_sql) &&
37
+ if !sql.is_a?(String) && (dataset&.respond_to?(:prepared_sql) &&
38
38
  (resolved_sql = dataset.prepared_sql))
39
39
  # The dataset contains the resolved SQL query and prepared statement name.
40
40
  prepared_name = dataset.prepared_statement_name
@@ -19,7 +19,7 @@ module Datadog
19
19
  register_as :shoryuken
20
20
 
21
21
  def self.version
22
- Gem.loaded_specs['shoryuken'] && Gem.loaded_specs['shoryuken'].version
22
+ Gem.loaded_specs['shoryuken']&.version
23
23
  end
24
24
 
25
25
  def self.loaded?