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
@@ -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?
@@ -20,7 +20,7 @@ module Datadog
20
20
  register_as :sidekiq
21
21
 
22
22
  def self.version
23
- Gem.loaded_specs['sidekiq'] && Gem.loaded_specs['sidekiq'].version
23
+ Gem.loaded_specs['sidekiq']&.version
24
24
  end
25
25
 
26
26
  def self.loaded?
@@ -25,7 +25,7 @@ module Datadog
25
25
  job['class'].to_s
26
26
  end
27
27
  rescue => e
28
- Datadog.logger.debug { "Error retrieving Sidekiq job class name (jid:#{job['jid']}): #{e}" }
28
+ Datadog.logger.debug { "Error retrieving Sidekiq job class name (jid:#{job["jid"]}): #{e}" }
29
29
 
30
30
  job['class'].to_s
31
31
  end
@@ -18,7 +18,7 @@ module Datadog
18
18
  register_as :sinatra
19
19
 
20
20
  def self.version
21
- Gem.loaded_specs['sinatra'] && Gem.loaded_specs['sinatra'].version
21
+ Gem.loaded_specs['sinatra']&.version
22
22
  end
23
23
 
24
24
  def self.loaded?
@@ -28,63 +28,61 @@ module Datadog
28
28
  service: configuration[:service_name],
29
29
  type: Tracing::Metadata::Ext::HTTP::TYPE_INBOUND
30
30
  ) do |span|
31
- begin
32
- # this is kept nil until we set a correct one (either in the route or with a fallback in the ensure below)
33
- # the nil signals that there's no good one yet and is also seen by profiler, when sampling the resource
34
- span.resource = nil
31
+ # this is kept nil until we set a correct one (either in the route or with a fallback in the ensure below)
32
+ # the nil signals that there's no good one yet and is also seen by profiler, when sampling the resource
33
+ span.resource = nil
35
34
 
36
- Sinatra::Env.set_datadog_span(env, span)
35
+ Sinatra::Env.set_datadog_span(env, span)
37
36
 
38
- response = @app.call(env)
39
- ensure
40
- Contrib::Rack::HeaderTagging.tag_request_headers(span, env, configuration)
37
+ response = @app.call(env)
38
+ ensure
39
+ Contrib::Rack::HeaderTagging.tag_request_headers(span, env, configuration)
41
40
 
42
- span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
43
- span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_REQUEST)
41
+ span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
42
+ span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_REQUEST)
44
43
 
45
- request = ::Sinatra::Request.new(env)
44
+ request = ::Sinatra::Request.new(env)
46
45
 
47
- span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_URL, request.path)
48
- span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_METHOD, request.request_method)
46
+ span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_URL, request.path)
47
+ span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_METHOD, request.request_method)
49
48
 
50
- datadog_route = Sinatra::Env.route_path(env)
49
+ datadog_route = Sinatra::Env.route_path(env)
51
50
 
52
- span.set_tag(Ext::TAG_ROUTE_PATH, datadog_route) if datadog_route
51
+ span.set_tag(Ext::TAG_ROUTE_PATH, datadog_route) if datadog_route
53
52
 
54
- if request.script_name && !request.script_name.empty?
55
- span.set_tag(Ext::TAG_SCRIPT_NAME, request.script_name)
56
- end
53
+ if request.script_name && !request.script_name.empty?
54
+ span.set_tag(Ext::TAG_SCRIPT_NAME, request.script_name)
55
+ end
57
56
 
58
- # If this app handled the request, then Contrib::Sinatra::Tracer OR Contrib::Sinatra::Base set the
59
- # resource; if no resource was set, let's use a fallback
60
- span.resource = env['REQUEST_METHOD'] if span.resource.nil?
57
+ # If this app handled the request, then Contrib::Sinatra::Tracer OR Contrib::Sinatra::Base set the
58
+ # resource; if no resource was set, let's use a fallback
59
+ span.resource = env['REQUEST_METHOD'] if span.resource.nil?
61
60
 
62
- rack_request_span = env[Contrib::Rack::Ext::RACK_ENV_REQUEST_SPAN]
61
+ rack_request_span = env[Contrib::Rack::Ext::RACK_ENV_REQUEST_SPAN]
63
62
 
64
- # This propagates the Sinatra resource to the Rack span,
65
- # since the latter is unaware of what the resource might be
66
- # and would fallback to a generic resource name when unset
67
- rack_request_span.resource ||= span.resource if rack_request_span
63
+ # This propagates the Sinatra resource to the Rack span,
64
+ # since the latter is unaware of what the resource might be
65
+ # and would fallback to a generic resource name when unset
66
+ rack_request_span.resource ||= span.resource if rack_request_span
68
67
 
69
- if response
70
- if (status = response[0])
71
- sinatra_response = ::Sinatra::Response.new([], status) # Build object to use status code helpers
68
+ if response
69
+ if (status = response[0])
70
+ sinatra_response = ::Sinatra::Response.new([], status) # Build object to use status code helpers
72
71
 
73
- span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_STATUS_CODE, sinatra_response.status)
74
- span.set_error(env['sinatra.error']) if sinatra_response.server_error?
75
- end
72
+ span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_STATUS_CODE, sinatra_response.status)
73
+ span.set_error(env['sinatra.error']) if sinatra_response.server_error?
74
+ end
76
75
 
77
- if (headers = response[1])
78
- Contrib::Rack::HeaderTagging.tag_response_headers(span, headers, configuration)
79
- end
76
+ if (headers = response[1])
77
+ Contrib::Rack::HeaderTagging.tag_response_headers(span, headers, configuration)
80
78
  end
79
+ end
81
80
 
82
- # Set analytics sample rate
83
- Contrib::Analytics.set_sample_rate(span, analytics_sample_rate) if analytics_enabled?
81
+ # Set analytics sample rate
82
+ Contrib::Analytics.set_sample_rate(span, analytics_sample_rate) if analytics_enabled?
84
83
 
85
- # Measure service stats
86
- Contrib::Analytics.set_measured(span)
87
- end
84
+ # Measure service stats
85
+ Contrib::Analytics.set_measured(span)
88
86
  end
89
87
  end
90
88
  # rubocop:enable Metrics/MethodLength
@@ -19,7 +19,7 @@ module Datadog
19
19
  register_as :sneakers, auto_patch: true
20
20
 
21
21
  def self.version
22
- Gem.loaded_specs['sneakers'] && Gem.loaded_specs['sneakers'].version
22
+ Gem.loaded_specs['sneakers']&.version
23
23
  end
24
24
 
25
25
  def self.loaded?
@@ -18,7 +18,7 @@ module Datadog
18
18
  register_as :stripe
19
19
 
20
20
  def self.version
21
- Gem.loaded_specs['stripe'] && Gem.loaded_specs['stripe'].version
21
+ Gem.loaded_specs['stripe']&.version
22
22
  end
23
23
 
24
24
  def self.loaded?
@@ -54,7 +54,7 @@ module Datadog
54
54
  span.set_tag(Ext::TAG_REQUEST_METHOD, event.method)
55
55
  span.set_tag(Ext::TAG_REQUEST_PATH, event.path)
56
56
  span.set_tag(Ext::TAG_REQUEST_NUM_RETRIES, event.num_retries.to_s)
57
- rescue StandardError => e
57
+ rescue => e
58
58
  Datadog.logger.debug(e.message)
59
59
  end
60
60
 
@@ -18,7 +18,7 @@ module Datadog
18
18
  register_as :sucker_punch, auto_patch: true
19
19
 
20
20
  def self.version
21
- Gem.loaded_specs['sucker_punch'] && Gem.loaded_specs['sucker_punch'].version
21
+ Gem.loaded_specs['sucker_punch']&.version
22
22
  end
23
23
 
24
24
  def self.loaded?
@@ -19,7 +19,7 @@ module Datadog
19
19
  TAG_COMPONENT = 'trilogy'
20
20
  TAG_OPERATION_QUERY = 'query'
21
21
  TAG_SYSTEM = 'mysql'
22
- PEER_SERVICE_SOURCES = (Array[Ext::TAG_DB_NAME] + Contrib::Ext::DB::PEER_SERVICE_SOURCES).freeze
22
+ PEER_SERVICE_SOURCES = ([Ext::TAG_DB_NAME] + Contrib::Ext::DB::PEER_SERVICE_SOURCES).freeze
23
23
  end
24
24
  end
25
25
  end
@@ -18,7 +18,7 @@ module Datadog
18
18
  register_as :trilogy
19
19
 
20
20
  def self.version
21
- Gem.loaded_specs['trilogy'] && Gem.loaded_specs['trilogy'].version
21
+ Gem.loaded_specs['trilogy']&.version
22
22
  end
23
23
 
24
24
  def self.loaded?
@@ -21,7 +21,7 @@ module Datadog
21
21
  def format(hash_obj, options = {})
22
22
  options ||= {}
23
23
  format!(hash_obj, options)
24
- rescue StandardError
24
+ rescue
25
25
  options[:placeholder] || PLACEHOLDER
26
26
  end
27
27
 
@@ -66,7 +66,7 @@ module Datadog
66
66
  def format_array(value, options)
67
67
  if value.any? { |v| v.class <= ::Hash || v.class <= Array }
68
68
  first_entry = format_value(value.first, options)
69
- value.size > 1 ? [first_entry, options[:placeholder]] : [first_entry]
69
+ (value.size > 1) ? [first_entry, options[:placeholder]] : [first_entry]
70
70
  # Otherwise short-circuit and return single placeholder
71
71
  else
72
72
  [options[:placeholder]]
@@ -77,19 +77,19 @@ module Datadog
77
77
  {}.tap do |options|
78
78
  # Show
79
79
  # If either is :all, value becomes :all
80
- options[:show] = if original[:show] == :all || additional[:show] == :all
81
- :all
82
- else
83
- (original[:show] || []).dup.concat(additional[:show] || []).uniq
84
- end
80
+ options[:show] = if original[:show] == :all || additional[:show] == :all
81
+ :all
82
+ else
83
+ (original[:show] || []).dup.concat(additional[:show] || []).uniq
84
+ end
85
85
 
86
86
  # Exclude
87
87
  # If either is :all, value becomes :all
88
88
  options[:exclude] = if original[:exclude] == :all || additional[:exclude] == :all
89
- :all
90
- else
91
- (original[:exclude] || []).dup.concat(additional[:exclude] || []).uniq
92
- end
89
+ :all
90
+ else
91
+ (original[:exclude] || []).dup.concat(additional[:exclude] || []).uniq
92
+ end
93
93
 
94
94
  options[:placeholder] = additional[:placeholder] || original[:placeholder]
95
95
  end
@@ -16,16 +16,16 @@ module Datadog
16
16
  # but adjusted to parse only <scheme>://<host>:<port>/ components
17
17
  # and stop there, since we don't care about the path, query string,
18
18
  # and fragment components
19
- RFC3986_URL_BASE = /\A(?<URI>(?<scheme>[A-Za-z][+\-.0-9A-Za-z]*+):(?<hier-part>\/\/(?<authority>(?:(?<userinfo>(?:%\h\h|[!$&-.0-;=A-Z_a-z~])*+)@)?(?<host>(?<IP-literal>\[(?:(?<IPv6address>(?:\h{1,4}:){6}(?<ls32>\h{1,4}:\h{1,4}|(?<IPv4address>(?<dec-octet>[1-9]\d|1\d{2}|2[0-4]\d|25[0-5]|\d)\.\g<dec-octet>\.\g<dec-octet>\.\g<dec-octet>))|::(?:\h{1,4}:){5}\g<ls32>|\h{1,4}?::(?:\h{1,4}:){4}\g<ls32>|(?:(?:\h{1,4}:)?\h{1,4})?::(?:\h{1,4}:){3}\g<ls32>|(?:(?:\h{1,4}:){,2}\h{1,4})?::(?:\h{1,4}:){2}\g<ls32>|(?:(?:\h{1,4}:){,3}\h{1,4})?::\h{1,4}:\g<ls32>|(?:(?:\h{1,4}:){,4}\h{1,4})?::\g<ls32>|(?:(?:\h{1,4}:){,5}\h{1,4})?::\h{1,4}|(?:(?:\h{1,4}:){,6}\h{1,4})?::)|(?<IPvFuture>v\h++\.[!$&-.0-;=A-Z_a-z~]++))\])|\g<IPv4address>|(?<reg-name>(?:%\h\h|[!$&-.0-9;=A-Z_a-z~])*+))(?::(?<port>\d*+))?)))(?:\/|\z)/.freeze # rubocop:disable Style/RegexpLiteral, Layout/LineLength
19
+ RFC3986_URL_BASE = /\A(?<URI>(?<scheme>[A-Za-z][+\-.0-9A-Za-z]*+):(?<hier-part>\/\/(?<authority>(?:(?<userinfo>(?:%\h\h|[!$&-.0-;=A-Z_a-z~])*+)@)?(?<host>(?<IP-literal>\[(?:(?<IPv6address>(?:\h{1,4}:){6}(?<ls32>\h{1,4}:\h{1,4}|(?<IPv4address>(?<dec-octet>[1-9]\d|1\d{2}|2[0-4]\d|25[0-5]|\d)\.\g<dec-octet>\.\g<dec-octet>\.\g<dec-octet>))|::(?:\h{1,4}:){5}\g<ls32>|\h{1,4}?::(?:\h{1,4}:){4}\g<ls32>|(?:(?:\h{1,4}:)?\h{1,4})?::(?:\h{1,4}:){3}\g<ls32>|(?:(?:\h{1,4}:){,2}\h{1,4})?::(?:\h{1,4}:){2}\g<ls32>|(?:(?:\h{1,4}:){,3}\h{1,4})?::\h{1,4}:\g<ls32>|(?:(?:\h{1,4}:){,4}\h{1,4})?::\g<ls32>|(?:(?:\h{1,4}:){,5}\h{1,4})?::\h{1,4}|(?:(?:\h{1,4}:){,6}\h{1,4})?::)|(?<IPvFuture>v\h++\.[!$&-.0-;=A-Z_a-z~]++))\])|\g<IPv4address>|(?<reg-name>(?:%\h\h|[!$&-.0-9;=A-Z_a-z~])*+))(?::(?<port>\d*+))?)))(?:\/|\z)/.freeze # rubocop:disable Layout/LineLength
20
20
 
21
21
  module_function
22
22
 
23
23
  def url(url, options = {})
24
24
  url!(url, options)
25
- rescue StandardError
25
+ rescue
26
26
  placeholder = options[:placeholder] || PLACEHOLDER
27
27
 
28
- options[:base] == :exclude ? placeholder : "#{base_url(url)}/#{placeholder}"
28
+ (options[:base] == :exclude) ? placeholder : "#{base_url(url)}/#{placeholder}"
29
29
  end
30
30
 
31
31
  def base_url(url, options = {})
@@ -43,7 +43,7 @@ module Datadog
43
43
  # Format the query string
44
44
  if uri.query
45
45
  query = query(uri.query, options[:query])
46
- uri.query = (!query.nil? && query.empty? ? nil : query)
46
+ uri.query = ((!query.nil? && query.empty?) ? nil : query)
47
47
  end
48
48
 
49
49
  # Remove any URI fragments
@@ -59,7 +59,7 @@ module Datadog
59
59
 
60
60
  def query(query, options = {})
61
61
  query!(query, options)
62
- rescue StandardError
62
+ rescue
63
63
  options[:placeholder] || PLACEHOLDER
64
64
  end
65
65
 
@@ -78,7 +78,7 @@ module Datadog
78
78
  if options[:exclude].include?(key)
79
79
  [nil, nil]
80
80
  else
81
- value = options[:show] == :all || options[:show].include?(key) ? value : nil
81
+ value = (options[:show] == :all || options[:show].include?(key)) ? value : nil
82
82
  [key, value]
83
83
  end
84
84
  end
@@ -84,9 +84,13 @@ module Datadog
84
84
  # @return [Numeric, nil] tracer sample rate configured
85
85
  def sample_rate
86
86
  sampler = Datadog.configuration.tracing.sampler
87
- return nil unless sampler
87
+ return Datadog.configuration.tracing.sampling.default_rate unless sampler
88
88
 
89
- sampler.sample_rate(nil) rescue nil
89
+ begin
90
+ sampler.sample_rate(nil)
91
+ rescue
92
+ nil
93
+ end
90
94
  end
91
95
 
92
96
  # DEV: We currently only support SimpleRule instances.
@@ -97,6 +101,8 @@ module Datadog
97
101
  # @return [Hash, nil] sample rules configured
98
102
  def sampling_rules
99
103
  sampler = Datadog.configuration.tracing.sampler
104
+ return Datadog.configuration.tracing.sampling.rules unless sampler
105
+
100
106
  return nil unless sampler.is_a?(Tracing::Sampling::PrioritySampler) &&
101
107
  sampler.priority_sampler.is_a?(Tracing::Sampling::RuleSampler)
102
108
 
@@ -28,7 +28,7 @@ module Datadog
28
28
  span_id = digest.span_id || 0 # Fall back to zero (invalid) if not present
29
29
 
30
30
  # DEV: We need these to be hex encoded
31
- value = "#{format('%032x', digest.trace_id)}-#{format('%016x', span_id)}"
31
+ value = "#{format("%032x", digest.trace_id)}-#{format("%016x", span_id)}"
32
32
 
33
33
  if digest.trace_sampling_priority
34
34
  sampling_priority = Helpers.clamp_sampling_priority(