datadog 2.18.0 → 2.20.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 (297) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +73 -1
  3. data/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +51 -10
  4. data/ext/datadog_profiling_native_extension/collectors_stack.c +58 -49
  5. data/ext/datadog_profiling_native_extension/collectors_stack.h +2 -1
  6. data/ext/datadog_profiling_native_extension/collectors_thread_context.c +5 -6
  7. data/ext/datadog_profiling_native_extension/collectors_thread_context.h +1 -1
  8. data/ext/datadog_profiling_native_extension/private_vm_api_access.c +37 -26
  9. data/ext/datadog_profiling_native_extension/private_vm_api_access.h +0 -1
  10. data/ext/datadog_profiling_native_extension/ruby_helpers.h +1 -1
  11. data/ext/libdatadog_api/extconf.rb +3 -1
  12. data/ext/libdatadog_extconf_helpers.rb +13 -3
  13. data/lib/datadog/appsec/api_security/route_extractor.rb +7 -1
  14. data/lib/datadog/appsec/component.rb +3 -13
  15. data/lib/datadog/appsec/context.rb +23 -0
  16. data/lib/datadog/appsec/contrib/devise/patches/signin_tracking_patch.rb +2 -1
  17. data/lib/datadog/appsec/contrib/devise/patches/signup_tracking_patch.rb +2 -1
  18. data/lib/datadog/appsec/contrib/excon/ssrf_detection_middleware.rb +0 -1
  19. data/lib/datadog/appsec/contrib/faraday/ssrf_detection_middleware.rb +0 -1
  20. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +14 -22
  21. data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +23 -2
  22. data/lib/datadog/appsec/contrib/rails/patcher.rb +14 -26
  23. data/lib/datadog/appsec/contrib/rails/patches/process_action_patch.rb +27 -0
  24. data/lib/datadog/appsec/contrib/rails/patches/render_to_body_patch.rb +33 -0
  25. data/lib/datadog/appsec/contrib/rest_client/request_ssrf_detection_patch.rb +0 -1
  26. data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +23 -0
  27. data/lib/datadog/appsec/contrib/sinatra/patcher.rb +8 -18
  28. data/lib/datadog/appsec/contrib/sinatra/patches/json_patch.rb +31 -0
  29. data/lib/datadog/appsec/event.rb +3 -18
  30. data/lib/datadog/appsec/instrumentation/gateway/argument.rb +17 -1
  31. data/lib/datadog/appsec/metrics/collector.rb +7 -3
  32. data/lib/datadog/appsec/metrics/telemetry.rb +1 -1
  33. data/lib/datadog/appsec/metrics/telemetry_exporter.rb +28 -0
  34. data/lib/datadog/appsec/metrics.rb +1 -0
  35. data/lib/datadog/appsec/security_engine/engine.rb +14 -32
  36. data/lib/datadog/appsec/security_engine/result.rb +16 -0
  37. data/lib/datadog/appsec/security_engine/runner.rb +18 -4
  38. data/lib/datadog/appsec/thread_safe_ref.rb +61 -0
  39. data/lib/datadog/appsec/trace_keeper.rb +24 -0
  40. data/lib/datadog/appsec/utils/hash_coercion.rb +23 -0
  41. data/lib/datadog/appsec.rb +0 -7
  42. data/lib/datadog/auto_instrument_base.rb +2 -1
  43. data/lib/datadog/core/configuration/option.rb +29 -20
  44. data/lib/datadog/core/configuration/option_definition.rb +2 -2
  45. data/lib/datadog/core/configuration/options.rb +13 -7
  46. data/lib/datadog/core/configuration/settings.rb +20 -0
  47. data/lib/datadog/core/telemetry/component.rb +8 -4
  48. data/lib/datadog/core/telemetry/event/app_started.rb +21 -3
  49. data/lib/datadog/di/boot.rb +7 -0
  50. data/lib/datadog/di/component.rb +7 -0
  51. data/lib/datadog/di/instrumenter.rb +11 -18
  52. data/lib/datadog/di/probe_file_loader/railtie.rb +15 -0
  53. data/lib/datadog/di/probe_file_loader.rb +82 -0
  54. data/lib/datadog/di/probe_notification_builder.rb +21 -16
  55. data/lib/datadog/di/remote.rb +3 -5
  56. data/lib/datadog/di/serializer.rb +6 -2
  57. data/lib/datadog/di.rb +0 -7
  58. data/lib/datadog/kit/appsec/events/v2.rb +196 -0
  59. data/lib/datadog/kit/appsec/events.rb +11 -10
  60. data/lib/datadog/kit/identity.rb +17 -11
  61. data/lib/datadog/opentelemetry/api/baggage.rb +2 -2
  62. data/lib/datadog/opentelemetry/api/context.rb +10 -9
  63. data/lib/datadog/opentelemetry/sdk/propagator.rb +4 -4
  64. data/lib/datadog/opentelemetry/sdk/span_processor.rb +8 -8
  65. data/lib/datadog/opentelemetry/sdk/trace/span.rb +14 -10
  66. data/lib/datadog/opentelemetry/trace.rb +4 -4
  67. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +2 -0
  68. data/lib/datadog/profiling/collectors/info.rb +41 -0
  69. data/lib/datadog/profiling/component.rb +1 -0
  70. data/lib/datadog/profiling/exporter.rb +9 -3
  71. data/lib/datadog/profiling/sequence_tracker.rb +44 -0
  72. data/lib/datadog/profiling/tag_builder.rb +2 -0
  73. data/lib/datadog/profiling.rb +7 -8
  74. data/lib/datadog/single_step_instrument.rb +9 -0
  75. data/lib/datadog/tracing/analytics.rb +1 -1
  76. data/lib/datadog/tracing/buffer.rb +7 -7
  77. data/lib/datadog/tracing/configuration/dynamic.rb +4 -6
  78. data/lib/datadog/tracing/configuration/ext.rb +3 -2
  79. data/lib/datadog/tracing/configuration/settings.rb +17 -0
  80. data/lib/datadog/tracing/context.rb +2 -2
  81. data/lib/datadog/tracing/contrib/action_cable/event.rb +1 -1
  82. data/lib/datadog/tracing/contrib/action_cable/integration.rb +1 -1
  83. data/lib/datadog/tracing/contrib/action_mailer/integration.rb +1 -1
  84. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +4 -4
  85. data/lib/datadog/tracing/contrib/action_pack/integration.rb +1 -1
  86. data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +1 -1
  87. data/lib/datadog/tracing/contrib/active_job/event.rb +8 -8
  88. data/lib/datadog/tracing/contrib/active_job/events/discard.rb +1 -1
  89. data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +1 -1
  90. data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +1 -1
  91. data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +1 -1
  92. data/lib/datadog/tracing/contrib/active_job/events/perform.rb +1 -1
  93. data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +1 -1
  94. data/lib/datadog/tracing/contrib/active_job/integration.rb +1 -1
  95. data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +1 -1
  96. data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +3 -3
  97. data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +1 -2
  98. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +1 -1
  99. data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +1 -1
  100. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +5 -5
  101. data/lib/datadog/tracing/contrib/active_record/integration.rb +1 -1
  102. data/lib/datadog/tracing/contrib/active_record/utils.rb +15 -15
  103. data/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb +13 -7
  104. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +13 -0
  105. data/lib/datadog/tracing/contrib/active_support/integration.rb +1 -1
  106. data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +2 -1
  107. data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +7 -9
  108. data/lib/datadog/tracing/contrib/aws/ext.rb +1 -1
  109. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +2 -2
  110. data/lib/datadog/tracing/contrib/aws/parsed_context.rb +3 -1
  111. data/lib/datadog/tracing/contrib/aws/patcher.rb +5 -1
  112. data/lib/datadog/tracing/contrib/aws/service/base.rb +2 -1
  113. data/lib/datadog/tracing/contrib/aws/service/dynamodb.rb +1 -1
  114. data/lib/datadog/tracing/contrib/aws/service/eventbridge.rb +1 -1
  115. data/lib/datadog/tracing/contrib/aws/service/kinesis.rb +1 -1
  116. data/lib/datadog/tracing/contrib/aws/service/s3.rb +1 -1
  117. data/lib/datadog/tracing/contrib/aws/service/sns.rb +1 -1
  118. data/lib/datadog/tracing/contrib/aws/service/sqs.rb +1 -1
  119. data/lib/datadog/tracing/contrib/aws/service/states.rb +1 -1
  120. data/lib/datadog/tracing/contrib/aws/services.rb +7 -7
  121. data/lib/datadog/tracing/contrib/concurrent_ruby/async_patch.rb +1 -1
  122. data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +1 -1
  123. data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +1 -1
  124. data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +1 -1
  125. data/lib/datadog/tracing/contrib/concurrent_ruby/promises_future_patch.rb +1 -1
  126. data/lib/datadog/tracing/contrib/configurable.rb +6 -6
  127. data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +4 -4
  128. data/lib/datadog/tracing/contrib/dalli/ext.rb +3 -2
  129. data/lib/datadog/tracing/contrib/dalli/integration.rb +1 -1
  130. data/lib/datadog/tracing/contrib/delayed_job/integration.rb +1 -1
  131. data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +3 -2
  132. data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +4 -4
  133. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +51 -53
  134. data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +5 -5
  135. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +2 -2
  136. data/lib/datadog/tracing/contrib/ethon/ext.rb +3 -2
  137. data/lib/datadog/tracing/contrib/ethon/integration.rb +1 -1
  138. data/lib/datadog/tracing/contrib/excon/ext.rb +3 -2
  139. data/lib/datadog/tracing/contrib/excon/integration.rb +1 -1
  140. data/lib/datadog/tracing/contrib/excon/middleware.rb +2 -2
  141. data/lib/datadog/tracing/contrib/ext.rb +3 -3
  142. data/lib/datadog/tracing/contrib/extensions.rb +9 -9
  143. data/lib/datadog/tracing/contrib/faraday/ext.rb +3 -2
  144. data/lib/datadog/tracing/contrib/faraday/integration.rb +1 -1
  145. data/lib/datadog/tracing/contrib/faraday/middleware.rb +4 -2
  146. data/lib/datadog/tracing/contrib/grape/endpoint.rb +8 -8
  147. data/lib/datadog/tracing/contrib/grape/integration.rb +1 -1
  148. data/lib/datadog/tracing/contrib/graphql/integration.rb +1 -1
  149. data/lib/datadog/tracing/contrib/graphql/patcher.rb +2 -2
  150. data/lib/datadog/tracing/contrib/graphql/unified_trace.rb +24 -24
  151. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +8 -8
  152. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +3 -3
  153. data/lib/datadog/tracing/contrib/grpc/distributed/fetcher.rb +1 -1
  154. data/lib/datadog/tracing/contrib/grpc/integration.rb +1 -1
  155. data/lib/datadog/tracing/contrib/hanami/ext.rb +2 -2
  156. data/lib/datadog/tracing/contrib/hanami/integration.rb +1 -1
  157. data/lib/datadog/tracing/contrib/hanami/renderer_policy_tracing.rb +1 -1
  158. data/lib/datadog/tracing/contrib/hanami/router_tracing.rb +9 -11
  159. data/lib/datadog/tracing/contrib/http/distributed/fetcher.rb +4 -4
  160. data/lib/datadog/tracing/contrib/http/ext.rb +3 -2
  161. data/lib/datadog/tracing/contrib/http/instrumentation.rb +5 -5
  162. data/lib/datadog/tracing/contrib/httpclient/ext.rb +3 -2
  163. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +3 -3
  164. data/lib/datadog/tracing/contrib/httpclient/integration.rb +1 -1
  165. data/lib/datadog/tracing/contrib/httprb/ext.rb +3 -2
  166. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +4 -4
  167. data/lib/datadog/tracing/contrib/httprb/integration.rb +1 -1
  168. data/lib/datadog/tracing/contrib/kafka/event.rb +1 -1
  169. data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +1 -1
  170. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +1 -1
  171. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +1 -1
  172. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +1 -1
  173. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +1 -1
  174. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +1 -1
  175. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +1 -1
  176. data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +1 -1
  177. data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +1 -1
  178. data/lib/datadog/tracing/contrib/kafka/integration.rb +1 -1
  179. data/lib/datadog/tracing/contrib/karafka/monitor.rb +13 -13
  180. data/lib/datadog/tracing/contrib/karafka/patcher.rb +4 -4
  181. data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +1 -1
  182. data/lib/datadog/tracing/contrib/lograge/integration.rb +1 -1
  183. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +1 -1
  184. data/lib/datadog/tracing/contrib/mongodb/ext.rb +1 -1
  185. data/lib/datadog/tracing/contrib/mongodb/integration.rb +1 -1
  186. data/lib/datadog/tracing/contrib/mongodb/parsers.rb +1 -1
  187. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +6 -6
  188. data/lib/datadog/tracing/contrib/mysql2/ext.rb +1 -1
  189. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +16 -6
  190. data/lib/datadog/tracing/contrib/mysql2/integration.rb +1 -1
  191. data/lib/datadog/tracing/contrib/opensearch/configuration/settings.rb +1 -1
  192. data/lib/datadog/tracing/contrib/opensearch/ext.rb +3 -2
  193. data/lib/datadog/tracing/contrib/opensearch/integration.rb +1 -2
  194. data/lib/datadog/tracing/contrib/opensearch/patcher.rb +68 -70
  195. data/lib/datadog/tracing/contrib/opensearch/quantize.rb +5 -5
  196. data/lib/datadog/tracing/contrib/patcher.rb +7 -9
  197. data/lib/datadog/tracing/contrib/pg/integration.rb +1 -1
  198. data/lib/datadog/tracing/contrib/presto/ext.rb +1 -1
  199. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +3 -3
  200. data/lib/datadog/tracing/contrib/presto/integration.rb +1 -1
  201. data/lib/datadog/tracing/contrib/propagation/sql_comment/comment.rb +1 -1
  202. data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +1 -1
  203. data/lib/datadog/tracing/contrib/que/integration.rb +1 -1
  204. data/lib/datadog/tracing/contrib/racecar/event.rb +1 -1
  205. data/lib/datadog/tracing/contrib/racecar/events/batch.rb +2 -2
  206. data/lib/datadog/tracing/contrib/racecar/events/consume.rb +1 -1
  207. data/lib/datadog/tracing/contrib/racecar/events/message.rb +2 -2
  208. data/lib/datadog/tracing/contrib/racecar/integration.rb +1 -1
  209. data/lib/datadog/tracing/contrib/rack/header_collection.rb +1 -1
  210. data/lib/datadog/tracing/contrib/rack/header_tagging.rb +32 -32
  211. data/lib/datadog/tracing/contrib/rack/integration.rb +1 -1
  212. data/lib/datadog/tracing/contrib/rack/middlewares.rb +21 -17
  213. data/lib/datadog/tracing/contrib/rack/patcher.rb +1 -1
  214. data/lib/datadog/tracing/contrib/rack/request_queue.rb +2 -2
  215. data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +1 -1
  216. data/lib/datadog/tracing/contrib/rails/integration.rb +1 -1
  217. data/lib/datadog/tracing/contrib/rails/log_injection.rb +1 -1
  218. data/lib/datadog/tracing/contrib/rails/middlewares.rb +1 -1
  219. data/lib/datadog/tracing/contrib/rails/patcher.rb +4 -1
  220. data/lib/datadog/tracing/contrib/rails/runner.rb +62 -40
  221. data/lib/datadog/tracing/contrib/rake/instrumentation.rb +4 -4
  222. data/lib/datadog/tracing/contrib/rake/integration.rb +1 -1
  223. data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +2 -2
  224. data/lib/datadog/tracing/contrib/redis/ext.rb +3 -2
  225. data/lib/datadog/tracing/contrib/redis/integration.rb +2 -2
  226. data/lib/datadog/tracing/contrib/redis/patcher.rb +4 -4
  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/redis/trace_middleware.rb +4 -4
  230. data/lib/datadog/tracing/contrib/registry.rb +1 -1
  231. data/lib/datadog/tracing/contrib/resque/integration.rb +1 -1
  232. data/lib/datadog/tracing/contrib/resque/resque_job.rb +1 -1
  233. data/lib/datadog/tracing/contrib/rest_client/ext.rb +3 -2
  234. data/lib/datadog/tracing/contrib/rest_client/integration.rb +1 -1
  235. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +3 -3
  236. data/lib/datadog/tracing/contrib/roda/instrumentation.rb +1 -1
  237. data/lib/datadog/tracing/contrib/roda/integration.rb +1 -1
  238. data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +1 -1
  239. data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +1 -1
  240. data/lib/datadog/tracing/contrib/sequel/database.rb +5 -5
  241. data/lib/datadog/tracing/contrib/sequel/dataset.rb +1 -1
  242. data/lib/datadog/tracing/contrib/sequel/integration.rb +1 -1
  243. data/lib/datadog/tracing/contrib/sequel/utils.rb +1 -1
  244. data/lib/datadog/tracing/contrib/shoryuken/integration.rb +1 -1
  245. data/lib/datadog/tracing/contrib/sidekiq/integration.rb +1 -1
  246. data/lib/datadog/tracing/contrib/sidekiq/utils.rb +1 -1
  247. data/lib/datadog/tracing/contrib/sinatra/integration.rb +1 -1
  248. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +38 -40
  249. data/lib/datadog/tracing/contrib/sneakers/integration.rb +1 -1
  250. data/lib/datadog/tracing/contrib/stripe/integration.rb +1 -1
  251. data/lib/datadog/tracing/contrib/stripe/request.rb +1 -1
  252. data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +1 -1
  253. data/lib/datadog/tracing/contrib/trilogy/ext.rb +1 -1
  254. data/lib/datadog/tracing/contrib/trilogy/integration.rb +1 -1
  255. data/lib/datadog/tracing/contrib/utils/quantization/hash.rb +11 -11
  256. data/lib/datadog/tracing/contrib/utils/quantization/http.rb +6 -6
  257. data/lib/datadog/tracing/diagnostics/environment_logger.rb +8 -2
  258. data/lib/datadog/tracing/distributed/b3_single.rb +1 -1
  259. data/lib/datadog/tracing/distributed/baggage.rb +73 -8
  260. data/lib/datadog/tracing/distributed/datadog.rb +4 -5
  261. data/lib/datadog/tracing/distributed/datadog_tags_codec.rb +11 -13
  262. data/lib/datadog/tracing/distributed/helpers.rb +1 -1
  263. data/lib/datadog/tracing/distributed/none.rb +4 -2
  264. data/lib/datadog/tracing/distributed/propagation.rb +4 -1
  265. data/lib/datadog/tracing/distributed/propagation_policy.rb +1 -1
  266. data/lib/datadog/tracing/distributed/trace_context.rb +22 -16
  267. data/lib/datadog/tracing/event.rb +5 -7
  268. data/lib/datadog/tracing/flush.rb +1 -1
  269. data/lib/datadog/tracing/metadata/analytics.rb +1 -1
  270. data/lib/datadog/tracing/metadata/tagging.rb +4 -4
  271. data/lib/datadog/tracing/pipeline/span_filter.rb +3 -1
  272. data/lib/datadog/tracing/pipeline/span_processor.rb +3 -1
  273. data/lib/datadog/tracing/pipeline.rb +1 -1
  274. data/lib/datadog/tracing/sampling/ext.rb +0 -2
  275. data/lib/datadog/tracing/sampling/rule_sampler.rb +30 -30
  276. data/lib/datadog/tracing/sampling/span/rule_parser.rb +1 -1
  277. data/lib/datadog/tracing/sampling/span/sampler.rb +0 -7
  278. data/lib/datadog/tracing/span.rb +1 -1
  279. data/lib/datadog/tracing/span_event.rb +10 -10
  280. data/lib/datadog/tracing/span_link.rb +12 -12
  281. data/lib/datadog/tracing/span_operation.rb +31 -11
  282. data/lib/datadog/tracing/trace_digest.rb +21 -23
  283. data/lib/datadog/tracing/trace_operation.rb +84 -88
  284. data/lib/datadog/tracing/trace_segment.rb +2 -2
  285. data/lib/datadog/tracing/tracer.rb +36 -38
  286. data/lib/datadog/tracing/transport/http/client.rb +1 -1
  287. data/lib/datadog/tracing/transport/http/traces.rb +2 -2
  288. data/lib/datadog/tracing/transport/io/client.rb +5 -5
  289. data/lib/datadog/tracing/transport/io/traces.rb +4 -4
  290. data/lib/datadog/tracing/transport/statistics.rb +1 -1
  291. data/lib/datadog/tracing/transport/traces.rb +5 -5
  292. data/lib/datadog/tracing/workers/trace_writer.rb +12 -12
  293. data/lib/datadog/tracing/workers.rb +2 -2
  294. data/lib/datadog/tracing.rb +2 -2
  295. data/lib/datadog/version.rb +1 -1
  296. data/lib/datadog.rb +7 -0
  297. metadata +17 -6
@@ -40,7 +40,7 @@ module Datadog
40
40
 
41
41
  # Add additional request specific tags to the span.
42
42
  annotate_span_with_request!(span, req, request_options)
43
- rescue StandardError => e
43
+ rescue => e
44
44
  logger.error("error preparing span for http.rb request: #{e}, Source: #{e.backtrace}")
45
45
  Datadog::Core::Telemetry::Logger.report(e)
46
46
  ensure
@@ -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_REQUEST)
76
76
 
77
- if req.verb && req.verb.is_a?(String) || req.verb.is_a?(Symbol)
77
+ if req.verb&.is_a?(String) || req.verb.is_a?(Symbol)
78
78
  http_method = req.verb.to_s.upcase
79
79
  span.resource = http_method
80
80
  span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_METHOD, http_method)
@@ -103,7 +103,7 @@ module Datadog
103
103
  end
104
104
 
105
105
  def annotate_span_with_response!(span, response, request_options)
106
- return unless response && response.code
106
+ return unless response&.code
107
107
 
108
108
  span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_STATUS_CODE, response.code)
109
109
 
@@ -116,7 +116,7 @@ module Datadog
116
116
  span.set_tags(
117
117
  Datadog.configuration.tracing.header_tags.response_tags(response.headers)
118
118
  )
119
- rescue StandardError => e
119
+ rescue => e
120
120
  logger.error("error preparing span from http.rb response: #{e}, Source: #{e.backtrace}")
121
121
  Datadog::Core::Telemetry::Logger.report(e)
122
122
  end
@@ -22,7 +22,7 @@ module Datadog
22
22
  end
23
23
 
24
24
  def self.version
25
- Gem.loaded_specs['http'] && Gem.loaded_specs['http'].version
25
+ Gem.loaded_specs['http']&.version
26
26
  end
27
27
 
28
28
  def self.loaded?
@@ -22,7 +22,7 @@ module Datadog
22
22
  end
23
23
 
24
24
  def span_options
25
- { service: configuration[:service_name] }
25
+ {service: configuration[:service_name]}
26
26
  end
27
27
 
28
28
  def configuration
@@ -31,7 +31,7 @@ module Datadog
31
31
  end
32
32
 
33
33
  def span_options
34
- super.merge({ tags: { Tracing::Metadata::Ext::TAG_OPERATION => Ext::TAG_OPERATION_CONNECTION_REQUEST } })
34
+ super.merge({tags: {Tracing::Metadata::Ext::TAG_OPERATION => Ext::TAG_OPERATION_CONNECTION_REQUEST}})
35
35
  end
36
36
  end
37
37
  end
@@ -38,7 +38,7 @@ module Datadog
38
38
  end
39
39
 
40
40
  def span_options
41
- super.merge({ tags: { Tracing::Metadata::Ext::TAG_OPERATION => Ext::TAG_OPERATION_PROCESS_BATCH } })
41
+ super.merge({tags: {Tracing::Metadata::Ext::TAG_OPERATION => Ext::TAG_OPERATION_PROCESS_BATCH}})
42
42
  end
43
43
  end
44
44
  end
@@ -36,7 +36,7 @@ module Datadog
36
36
  end
37
37
 
38
38
  def span_options
39
- super.merge({ tags: { Tracing::Metadata::Ext::TAG_OPERATION => Ext::TAG_OPERATION_PROCESS_MESSAGE } })
39
+ super.merge({tags: {Tracing::Metadata::Ext::TAG_OPERATION => Ext::TAG_OPERATION_PROCESS_MESSAGE}})
40
40
  end
41
41
  end
42
42
  end
@@ -36,7 +36,7 @@ module Datadog
36
36
  end
37
37
 
38
38
  def span_options
39
- super.merge({ tags: { Tracing::Metadata::Ext::TAG_OPERATION => Ext::TAG_OPERATION_CONSUMER_HEARTBEAT } })
39
+ super.merge({tags: {Tracing::Metadata::Ext::TAG_OPERATION => Ext::TAG_OPERATION_CONSUMER_HEARTBEAT}})
40
40
  end
41
41
  end
42
42
  end
@@ -26,7 +26,7 @@ module Datadog
26
26
  end
27
27
 
28
28
  def span_options
29
- super.merge({ tags: { Tracing::Metadata::Ext::TAG_OPERATION => Ext::TAG_OPERATION_CONSUMER_JOIN_GROUP } })
29
+ super.merge({tags: {Tracing::Metadata::Ext::TAG_OPERATION => Ext::TAG_OPERATION_CONSUMER_JOIN_GROUP}})
30
30
  end
31
31
  end
32
32
  end
@@ -26,7 +26,7 @@ module Datadog
26
26
  end
27
27
 
28
28
  def span_options
29
- super.merge({ tags: { Tracing::Metadata::Ext::TAG_OPERATION => Ext::TAG_OPERATION_CONSUMER_LEAVE_GROUP } })
29
+ super.merge({tags: {Tracing::Metadata::Ext::TAG_OPERATION => Ext::TAG_OPERATION_CONSUMER_LEAVE_GROUP}})
30
30
  end
31
31
  end
32
32
  end
@@ -26,7 +26,7 @@ module Datadog
26
26
  end
27
27
 
28
28
  def span_options
29
- super.merge({ tags: { Tracing::Metadata::Ext::TAG_OPERATION => Ext::TAG_OPERATION_CONSUMER_SYNC_GROUP } })
29
+ super.merge({tags: {Tracing::Metadata::Ext::TAG_OPERATION => Ext::TAG_OPERATION_CONSUMER_SYNC_GROUP}})
30
30
  end
31
31
  end
32
32
  end
@@ -30,7 +30,7 @@ module Datadog
30
30
  end
31
31
 
32
32
  def span_options
33
- super.merge({ tags: { Tracing::Metadata::Ext::TAG_OPERATION => Ext::TAG_OPERATION_SEND_MESSAGES } })
33
+ super.merge({tags: {Tracing::Metadata::Ext::TAG_OPERATION => Ext::TAG_OPERATION_SEND_MESSAGES}})
34
34
  end
35
35
  end
36
36
  end
@@ -33,7 +33,7 @@ module Datadog
33
33
  end
34
34
 
35
35
  def span_options
36
- super.merge({ tags: { Tracing::Metadata::Ext::TAG_OPERATION => Ext::TAG_OPERATION_DELIVER_MESSAGES } })
36
+ super.merge({tags: {Tracing::Metadata::Ext::TAG_OPERATION => Ext::TAG_OPERATION_DELIVER_MESSAGES}})
37
37
  end
38
38
  end
39
39
  end
@@ -21,7 +21,7 @@ module Datadog
21
21
  end
22
22
 
23
23
  def self.version
24
- Gem.loaded_specs['ruby-kafka'] && Gem.loaded_specs['ruby-kafka'].version
24
+ Gem.loaded_specs['ruby-kafka']&.version
25
25
  end
26
26
 
27
27
  def self.loaded?
@@ -24,19 +24,19 @@ module Datadog
24
24
  consumer = job.executor.topic.consumer
25
25
 
26
26
  action = case job_type
27
- when 'Periodic', 'PeriodicNonBlocking'
28
- 'tick'
29
- when 'Shutdown'
30
- 'shutdown'
31
- when 'Revoked', 'RevokedNonBlocking'
32
- 'revoked'
33
- when 'Idle'
34
- 'idle'
35
- when 'Eofed', 'EofedNonBlocking'
36
- 'eofed'
37
- else
38
- 'consume'
39
- end
27
+ when 'Periodic', 'PeriodicNonBlocking'
28
+ 'tick'
29
+ when 'Shutdown'
30
+ 'shutdown'
31
+ when 'Revoked', 'RevokedNonBlocking'
32
+ 'revoked'
33
+ when 'Idle'
34
+ 'idle'
35
+ when 'Eofed', 'EofedNonBlocking'
36
+ 'eofed'
37
+ else
38
+ 'consume'
39
+ end
40
40
 
41
41
  span.resource = "#{consumer}##{action}"
42
42
 
@@ -27,10 +27,10 @@ module Datadog
27
27
  @messages_array.each do |message|
28
28
  if configuration[:distributed_tracing]
29
29
  headers = if message.metadata.respond_to?(:raw_headers)
30
- message.metadata.raw_headers
31
- else
32
- message.metadata.headers
33
- end
30
+ message.metadata.raw_headers
31
+ else
32
+ message.metadata.headers
33
+ end
34
34
  trace_digest = Karafka.extract(headers)
35
35
  Datadog::Tracing.continue_trace!(trace_digest) if trace_digest
36
36
  end
@@ -16,7 +16,7 @@ module Datadog
16
16
  return super unless Datadog.configuration.tracing.log_injection
17
17
  return super unless Datadog.configuration.tracing[:lograge].enabled
18
18
 
19
- original_custom_options = super(event)
19
+ original_custom_options = super
20
20
 
21
21
  # Retrieves trace information for current thread
22
22
  correlation = Tracing.correlation
@@ -18,7 +18,7 @@ module Datadog
18
18
  register_as :lograge
19
19
 
20
20
  def self.version
21
- Gem.loaded_specs['lograge'] && Gem.loaded_specs['lograge'].version
21
+ Gem.loaded_specs['lograge']&.version
22
22
  end
23
23
 
24
24
  def self.loaded?
@@ -11,7 +11,7 @@ module Datadog
11
11
  # Custom settings for the MongoDB integration
12
12
  # @public_api
13
13
  class Settings < Contrib::Configuration::Settings
14
- DEFAULT_QUANTIZE = { show: [:collection, :database, :operation] }.freeze
14
+ DEFAULT_QUANTIZE = {show: [:collection, :database, :operation]}.freeze
15
15
 
16
16
  option :enabled do |o|
17
17
  o.type :bool
@@ -25,7 +25,7 @@ module Datadog
25
25
  TAG_COMPONENT = 'mongodb'
26
26
  TAG_OPERATION_COMMAND = 'command'
27
27
  TAG_SYSTEM = 'mongodb'
28
- PEER_SERVICE_SOURCES = (Array[Ext::TAG_DB] + Contrib::Ext::DB::PEER_SERVICE_SOURCES).freeze
28
+ PEER_SERVICE_SOURCES = ([Ext::TAG_DB] + Contrib::Ext::DB::PEER_SERVICE_SOURCES).freeze
29
29
 
30
30
  # Temporary namespace to accommodate unified tags which has naming collision, before
31
31
  # making breaking changes
@@ -22,7 +22,7 @@ module Datadog
22
22
  end
23
23
 
24
24
  def self.version
25
- Gem.loaded_specs['mongo'] && Gem.loaded_specs['mongo'].version
25
+ Gem.loaded_specs['mongo']&.version
26
26
  end
27
27
 
28
28
  def self.loaded?
@@ -9,7 +9,7 @@ module Datadog
9
9
  module MongoDB
10
10
  EXCLUDE_KEYS = [:_id].freeze
11
11
  SHOW_KEYS = [].freeze
12
- DEFAULT_OPTIONS = { exclude: EXCLUDE_KEYS, show: SHOW_KEYS }.freeze
12
+ DEFAULT_OPTIONS = {exclude: EXCLUDE_KEYS, show: SHOW_KEYS}.freeze
13
13
 
14
14
  module_function
15
15
 
@@ -72,7 +72,7 @@ module Datadog
72
72
 
73
73
  # set the resource with the quantized query
74
74
  span.resource = serialized_query
75
- rescue StandardError => e
75
+ rescue => e
76
76
  Datadog.logger.debug("error when handling MongoDB 'started' event: #{e}")
77
77
  end
78
78
  # rubocop:enable Metrics/AbcSize
@@ -84,12 +84,12 @@ module Datadog
84
84
  # the failure is not a real exception because it's handled by
85
85
  # the framework itself, so we set only the error and the message
86
86
  span.set_error(event)
87
- rescue StandardError => e
87
+ rescue => e
88
88
  Datadog.logger.debug("error when handling MongoDB 'failed' event: #{e}")
89
89
  ensure
90
90
  # whatever happens, the Span must be removed from the local storage and
91
91
  # it must be finished to prevent any leak
92
- span.finish unless span.nil?
92
+ span&.finish
93
93
  clear_span(event)
94
94
  end
95
95
 
@@ -100,12 +100,12 @@ module Datadog
100
100
  # add fields that are available only after executing the query
101
101
  rows = event.reply.fetch('n', nil)
102
102
  span.set_tag(Ext::TAG_ROWS, rows) unless rows.nil?
103
- rescue StandardError => e
103
+ rescue => e
104
104
  Datadog.logger.debug("error when handling MongoDB 'succeeded' event: #{e}")
105
105
  ensure
106
106
  # whatever happens, the Span must be removed from the local storage and
107
107
  # it must be finished to prevent any leak
108
- span.finish unless span.nil?
108
+ span&.finish
109
109
  clear_span(event)
110
110
  end
111
111
 
@@ -118,7 +118,7 @@ module Datadog
118
118
  # Incorrect Hash#to_s serialization. The Mongo command should only be encoded as JSON.
119
119
  # This code path should be removed, and is only kept to avoid a breaking change.
120
120
  Datadog::Core.log_deprecation(key: :mongo_json_command) do
121
- 'MongoDB integration: `json_command: false` causes invalid command serialization. '\
121
+ 'MongoDB integration: `json_command: false` causes invalid command serialization. ' \
122
122
  'Use `json_command: true` or `DD_TRACE_MONGO_JSON_COMMAND=1` instead.'
123
123
  end
124
124
 
@@ -20,7 +20,7 @@ module Datadog
20
20
  TAG_COMPONENT = 'mysql2'
21
21
  TAG_OPERATION_QUERY = 'query'
22
22
  TAG_SYSTEM = 'mysql'
23
- PEER_SERVICE_SOURCES = (Array[Ext::TAG_DB_NAME] + Contrib::Ext::DB::PEER_SERVICE_SOURCES).freeze
23
+ PEER_SERVICE_SOURCES = ([Ext::TAG_DB_NAME] + Contrib::Ext::DB::PEER_SERVICE_SOURCES).freeze
24
24
  end
25
25
  end
26
26
  end
@@ -45,16 +45,13 @@ module Datadog
45
45
  span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
46
46
  span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_QUERY)
47
47
 
48
- span.set_tag(Tracing::Metadata::Ext::TAG_PEER_HOSTNAME, query_options[:host])
48
+ tag_database_instance(span, query_options[:database])
49
+
50
+ set_span_tags(span, query_options)
49
51
 
50
52
  # Set analytics sample rate
51
53
  Contrib::Analytics.set_sample_rate(span, analytics_sample_rate) if analytics_enabled?
52
54
 
53
- span.set_tag(Contrib::Ext::DB::TAG_INSTANCE, query_options[:database])
54
- span.set_tag(Ext::TAG_DB_NAME, query_options[:database])
55
- span.set_tag(Tracing::Metadata::Ext::NET::TAG_TARGET_HOST, query_options[:host])
56
- span.set_tag(Tracing::Metadata::Ext::NET::TAG_TARGET_PORT, query_options[:port])
57
-
58
55
  Contrib::SpanAttributeSchema.set_peer_service!(span, Ext::PEER_SERVICE_SOURCES)
59
56
 
60
57
  sql = inject_propagation(span, sql, trace_op)
@@ -91,6 +88,19 @@ module Datadog
91
88
  def analytics_sample_rate
92
89
  datadog_configuration[:analytics_sample_rate]
93
90
  end
91
+
92
+ def tag_database_instance(span, database)
93
+ return if database.nil? || database.empty?
94
+
95
+ span.set_tag(Contrib::Ext::DB::TAG_INSTANCE, database)
96
+ span.set_tag(Ext::TAG_DB_NAME, database)
97
+ end
98
+
99
+ def set_span_tags(span, query_options)
100
+ span.set_tag(Tracing::Metadata::Ext::NET::TAG_TARGET_HOST, query_options[:host])
101
+ span.set_tag(Tracing::Metadata::Ext::NET::TAG_TARGET_PORT, query_options[:port])
102
+ span.set_tag(Tracing::Metadata::Ext::TAG_PEER_HOSTNAME, query_options[:host])
103
+ end
94
104
  end
95
105
  end
96
106
  end
@@ -18,7 +18,7 @@ module Datadog
18
18
  register_as :mysql2
19
19
 
20
20
  def self.version
21
- Gem.loaded_specs['mysql2'] && Gem.loaded_specs['mysql2'].version
21
+ Gem.loaded_specs['mysql2']&.version
22
22
  end
23
23
 
24
24
  def self.loaded?
@@ -56,7 +56,7 @@ module Datadog
56
56
 
57
57
  Datadog.logger.warn(
58
58
  "Invalid resource pattern: #{value}. " \
59
- "Supported values are: #{Ext::VALID_RESOURCE_PATTERNS.join(' | ')}. " \
59
+ "Supported values are: #{Ext::VALID_RESOURCE_PATTERNS.join(" | ")}. " \
60
60
  "Using default value: #{Ext::DEFAULT_RESOURCE_PATTERN}."
61
61
  )
62
62
 
@@ -36,10 +36,11 @@ module Datadog
36
36
  TAG_PORT = 'http.url_details.port'
37
37
  TAG_SCHEME = 'http.url_details.scheme'
38
38
  TAG_RESPONSE_CONTENT_LENGTH = 'http.response.content_length'
39
- PEER_SERVICE_SOURCES = Array[
39
+ PEER_SERVICE_SOURCES = [
40
40
  Tracing::Metadata::Ext::TAG_PEER_HOSTNAME,
41
41
  Tracing::Metadata::Ext::NET::TAG_DESTINATION_NAME,
42
- Tracing::Metadata::Ext::NET::TAG_TARGET_HOST,].freeze
42
+ Tracing::Metadata::Ext::NET::TAG_TARGET_HOST,
43
+ ].freeze
43
44
  end
44
45
  end
45
46
  end
@@ -21,8 +21,7 @@ module Datadog
21
21
  end
22
22
 
23
23
  def self.version
24
- Gem.loaded_specs['opensearch-ruby'] \
25
- && Gem.loaded_specs['opensearch-ruby'].version
24
+ Gem.loaded_specs['opensearch-ruby']&.version
26
25
  end
27
26
 
28
27
  def self.loaded?
@@ -34,79 +34,77 @@ module Datadog
34
34
  response = nil
35
35
  # rubocop:disable Metrics/BlockLength
36
36
  Tracing.trace('opensearch.query', service: datadog_configuration[:service_name]) do |span|
37
- begin
38
- # Set generic tags
39
- span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
40
- span.set_tag(Tracing::Metadata::Ext::TAG_KIND, Tracing::Metadata::Ext::SpanKind::TAG_CLIENT)
41
- span.set_tag(Contrib::Ext::DB::TAG_SYSTEM, Ext::TAG_SYSTEM)
42
-
43
- # Set argument tags
44
- span.set_tag(OpenSearch::Ext::TAG_METHOD, method)
45
- span.set_tag(OpenSearch::Ext::TAG_PATH, path)
46
-
47
- tag_params(params, span)
48
- tag_body(body, span)
49
-
50
- # Parse url
51
- original_url = transport.get_connection.full_url(path, {})
52
- url = URI.parse(original_url)
53
- host = url.host
54
- port = url.port
55
- scheme = url.scheme
56
- # Set url.user to nil to remove sensitive information (i.e. user's username and password)
57
- url.user = nil
58
-
59
- if datadog_configuration[:peer_service]
60
- span.set_tag(
61
- Tracing::Metadata::Ext::TAG_PEER_SERVICE,
62
- datadog_configuration[:peer_service]
63
- )
64
- end
37
+ # Set generic tags
38
+ span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
39
+ span.set_tag(Tracing::Metadata::Ext::TAG_KIND, Tracing::Metadata::Ext::SpanKind::TAG_CLIENT)
40
+ span.set_tag(Contrib::Ext::DB::TAG_SYSTEM, Ext::TAG_SYSTEM)
41
+
42
+ # Set argument tags
43
+ span.set_tag(OpenSearch::Ext::TAG_METHOD, method)
44
+ span.set_tag(OpenSearch::Ext::TAG_PATH, path)
45
+
46
+ tag_params(params, span)
47
+ tag_body(body, span)
48
+
49
+ # Parse url
50
+ original_url = transport.get_connection.full_url(path, {})
51
+ url = URI.parse(original_url)
52
+ host = url.host
53
+ port = url.port
54
+ scheme = url.scheme
55
+ # Set url.user to nil to remove sensitive information (i.e. user's username and password)
56
+ url.user = nil
57
+
58
+ if datadog_configuration[:peer_service]
59
+ span.set_tag(
60
+ Tracing::Metadata::Ext::TAG_PEER_SERVICE,
61
+ datadog_configuration[:peer_service]
62
+ )
63
+ end
65
64
 
66
- # Tag original global service name if not used
67
- if span.service != Datadog.configuration.service
68
- span.set_tag(Tracing::Contrib::Ext::Metadata::TAG_BASE_SERVICE, Datadog.configuration.service)
69
- end
65
+ # Tag original global service name if not used
66
+ if span.service != Datadog.configuration.service
67
+ span.set_tag(Tracing::Contrib::Ext::Metadata::TAG_BASE_SERVICE, Datadog.configuration.service)
68
+ end
70
69
 
71
- # Set url tags
72
- span.set_tag(OpenSearch::Ext::TAG_URL, url)
73
- span.set_tag(OpenSearch::Ext::TAG_HOST, host)
74
- span.set_tag(OpenSearch::Ext::TAG_PORT, port)
75
- span.set_tag(OpenSearch::Ext::TAG_SCHEME, scheme)
76
-
77
- span.set_tag(Tracing::Metadata::Ext::TAG_PEER_HOSTNAME, host) if host
78
-
79
- # Define span resource
80
- quantized_url = if datadog_configuration[:resource_pattern] == Ext::RELATIVE_RESOURCE_PATTERN
81
- OpenSearch::Quantize.format_url(url.path)
82
- else # Default to Ext::ABSOLUTE_RESOURCE_PATTERN
83
- OpenSearch::Quantize.format_url(url)
84
- end
85
- span.resource = "#{method} #{quantized_url}"
86
- Contrib::SpanAttributeSchema.set_peer_service!(span, Ext::PEER_SERVICE_SOURCES)
87
- rescue StandardError => e
88
- Datadog.logger.error(e.message)
89
- Datadog::Core::Telemetry::Logger.report(e)
90
- # TODO: Refactor the code to streamline the execution without ensure
91
- ensure
92
- begin
93
- response = super
94
- rescue => e
95
- status_code = ::OpenSearch::Transport::Transport::ERRORS.key(e.class)
96
- span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_STATUS_CODE, status_code) if status_code
97
- raise
70
+ # Set url tags
71
+ span.set_tag(OpenSearch::Ext::TAG_URL, url)
72
+ span.set_tag(OpenSearch::Ext::TAG_HOST, host)
73
+ span.set_tag(OpenSearch::Ext::TAG_PORT, port)
74
+ span.set_tag(OpenSearch::Ext::TAG_SCHEME, scheme)
75
+
76
+ span.set_tag(Tracing::Metadata::Ext::TAG_PEER_HOSTNAME, host) if host
77
+
78
+ # Define span resource
79
+ quantized_url = if datadog_configuration[:resource_pattern] == Ext::RELATIVE_RESOURCE_PATTERN
80
+ OpenSearch::Quantize.format_url(url.path)
81
+ else # Default to Ext::ABSOLUTE_RESOURCE_PATTERN
82
+ OpenSearch::Quantize.format_url(url)
83
+ end
84
+ span.resource = "#{method} #{quantized_url}"
85
+ Contrib::SpanAttributeSchema.set_peer_service!(span, Ext::PEER_SERVICE_SOURCES)
86
+ rescue => e
87
+ Datadog.logger.error(e.message)
88
+ Datadog::Core::Telemetry::Logger.report(e)
89
+ # TODO: Refactor the code to streamline the execution without ensure
90
+ ensure
91
+ begin
92
+ response = super
93
+ rescue => e
94
+ status_code = ::OpenSearch::Transport::Transport::ERRORS.key(e.class)
95
+ span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_STATUS_CODE, status_code) if status_code
96
+ raise
97
+ end
98
+ # Set post-response tags
99
+ if response
100
+ if response.respond_to?(:status)
101
+ span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_STATUS_CODE, response.status)
98
102
  end
99
- # Set post-response tags
100
- if response
101
- if response.respond_to?(:status)
102
- span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_STATUS_CODE, response.status)
103
- end
104
- if response.respond_to?(:headers) && (response.headers || {})['content-length']
105
- span.set_tag(
106
- OpenSearch::Ext::TAG_RESPONSE_CONTENT_LENGTH,
107
- response.headers['content-length'].to_i
108
- )
109
- end
103
+ if response.respond_to?(:headers) && (response.headers || {})['content-length']
104
+ span.set_tag(
105
+ OpenSearch::Ext::TAG_RESPONSE_CONTENT_LENGTH,
106
+ response.headers['content-length'].to_i
107
+ )
110
108
  end
111
109
  end
112
110
  end
@@ -28,7 +28,7 @@ module Datadog
28
28
  # Use Elasticsearch implementation
29
29
  def format_body(body, options = {})
30
30
  format_body!(body, options)
31
- rescue StandardError
31
+ rescue
32
32
  options[:placeholder] || DEFAULT_PLACEHOLDER
33
33
  end
34
34
 
@@ -51,10 +51,10 @@ module Datadog
51
51
  # Show
52
52
  # If either is :all, value becomes :all
53
53
  options[:show] = if original[:show] == :all || additional[:show] == :all
54
- :all
55
- else
56
- (original[:show] || []).dup.concat(additional[:show] || []).uniq
57
- end
54
+ :all
55
+ else
56
+ (original[:show] || []).dup.concat(additional[:show] || []).uniq
57
+ end
58
58
 
59
59
  # Exclude
60
60
  options[:exclude] = (original[:exclude] || []).dup.concat(additional[:exclude] || []).uniq
@@ -27,7 +27,7 @@ module Datadog
27
27
  end
28
28
 
29
29
  def patch_name
30
- self.class != Class && self.class != Module ? self.class.name : name
30
+ (self.class != Class && self.class != Module) ? self.class.name : name
31
31
  end
32
32
 
33
33
  def patched?
@@ -38,15 +38,13 @@ module Datadog
38
38
  return unless defined?(super)
39
39
 
40
40
  patch_only_once.run do
41
- begin
42
- super.tap do
43
- # Emit a metric
44
- Datadog.health_metrics.instrumentation_patched(1, tags: default_tags)
45
- @patch_successful = true
46
- end
47
- rescue StandardError => e
48
- on_patch_error(e)
41
+ super.tap do
42
+ # Emit a metric
43
+ Datadog.health_metrics.instrumentation_patched(1, tags: default_tags)
44
+ @patch_successful = true
49
45
  end
46
+ rescue => e
47
+ on_patch_error(e)
50
48
  end
51
49
  end
52
50
 
@@ -18,7 +18,7 @@ module Datadog
18
18
  register_as :pg
19
19
 
20
20
  def self.version
21
- Gem.loaded_specs['pg'] && Gem.loaded_specs['pg'].version
21
+ Gem.loaded_specs['pg']&.version
22
22
  end
23
23
 
24
24
  def self.loaded?
@@ -29,7 +29,7 @@ module Datadog
29
29
  TAG_OPERATION_QUERY = 'query'
30
30
  TAG_OPERATION_KILL = 'kill'
31
31
  TAG_SYSTEM = 'presto'
32
- PEER_SERVICE_SOURCES = (Array[Ext::TAG_SCHEMA_NAME] +
32
+ PEER_SERVICE_SOURCES = ([Ext::TAG_SCHEMA_NAME] +
33
33
  Contrib::Ext::DB::PEER_SERVICE_SOURCES).freeze
34
34
  end
35
35
  end