datadog 2.46.0 → 2.48.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (286) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +56 -2
  3. data/LICENSE-3rdparty.csv +1 -0
  4. data/ext/datadog_profiling_native_extension/collectors_stack.c +143 -86
  5. data/ext/datadog_profiling_native_extension/collectors_stack.h +9 -1
  6. data/ext/datadog_profiling_native_extension/collectors_thread_context.c +6 -1
  7. data/ext/datadog_profiling_native_extension/extconf.rb +7 -13
  8. data/ext/datadog_profiling_native_extension/native_extension_helpers.rb +3 -3
  9. data/ext/datadog_profiling_native_extension/private_vm_api_access.c +67 -14
  10. data/ext/datadog_profiling_native_extension/private_vm_api_access.h +8 -1
  11. data/ext/datadog_profiling_native_extension/profiling.c +1 -1
  12. data/ext/libdatadog_api/extconf.rb +9 -7
  13. data/ext/libdatadog_api/trace_exporter.c +34 -7
  14. data/ext/libdatadog_extconf_helpers.rb +2 -2
  15. data/lib/datadog/ai_guard/component.rb +1 -1
  16. data/lib/datadog/ai_guard/contrib/rack/request_middleware.rb +1 -9
  17. data/lib/datadog/ai_guard/contrib/rails/patcher.rb +1 -1
  18. data/lib/datadog/ai_guard/contrib/ruby_llm/message_adapter.rb +1 -1
  19. data/lib/datadog/ai_guard/contrib/ruby_llm/redaction_change_set.rb +3 -3
  20. data/lib/datadog/ai_guard/evaluation/client.rb +3 -3
  21. data/lib/datadog/ai_guard/evaluation.rb +2 -2
  22. data/lib/datadog/ai_guard/http_client.rb +3 -2
  23. data/lib/datadog/ai_guard/redaction.rb +1 -1
  24. data/lib/datadog/appsec/api_security/endpoint_collection/rails_collector.rb +1 -1
  25. data/lib/datadog/appsec/assets/waf_rules/README.md +3 -3
  26. data/lib/datadog/appsec/assets/waf_rules/recommended.json +5366 -1517
  27. data/lib/datadog/appsec/assets/waf_rules/strict.json +2 -2
  28. data/lib/datadog/appsec/autoload.rb +1 -1
  29. data/lib/datadog/appsec/component.rb +1 -1
  30. data/lib/datadog/appsec/compressed_json.rb +1 -1
  31. data/lib/datadog/appsec/configuration.rb +3 -3
  32. data/lib/datadog/appsec/context.rb +1 -1
  33. data/lib/datadog/appsec/contrib/active_record/instrumentation.rb +11 -1
  34. data/lib/datadog/appsec/contrib/active_record/patcher.rb +12 -4
  35. data/lib/datadog/appsec/contrib/aws_lambda/gateway/watcher.rb +2 -2
  36. data/lib/datadog/appsec/contrib/aws_lambda/waf_addresses.rb +1 -1
  37. data/lib/datadog/appsec/contrib/devise/configuration.rb +1 -1
  38. data/lib/datadog/appsec/contrib/devise/patches/signin_tracking_patch.rb +1 -1
  39. data/lib/datadog/appsec/contrib/devise/patches/signup_tracking_patch.rb +1 -1
  40. data/lib/datadog/appsec/contrib/devise/tracking_middleware.rb +1 -1
  41. data/lib/datadog/appsec/contrib/excon/ssrf_detection_middleware.rb +1 -1
  42. data/lib/datadog/appsec/contrib/faraday/ssrf_detection_middleware.rb +1 -1
  43. data/lib/datadog/appsec/contrib/graphql/gateway/multiplex.rb +7 -7
  44. data/lib/datadog/appsec/contrib/graphql/gateway/watcher.rb +1 -1
  45. data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +3 -3
  46. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +5 -5
  47. data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +31 -4
  48. data/lib/datadog/appsec/contrib/rails/patcher.rb +2 -2
  49. data/lib/datadog/appsec/contrib/rails/patches/render_to_body_patch.rb +8 -7
  50. data/lib/datadog/appsec/contrib/rest_client/request_ssrf_detection_patch.rb +1 -1
  51. data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +17 -5
  52. data/lib/datadog/appsec/contrib/sinatra/patcher.rb +1 -1
  53. data/lib/datadog/appsec/contrib/sinatra/patches/json_patch.rb +8 -7
  54. data/lib/datadog/appsec/metrics/collector.rb +5 -5
  55. data/lib/datadog/appsec/metrics/telemetry_exporter.rb +3 -3
  56. data/lib/datadog/appsec/monitor/gateway/watcher.rb +2 -2
  57. data/lib/datadog/appsec/processor/rule_loader.rb +1 -1
  58. data/lib/datadog/appsec/response.rb +1 -1
  59. data/lib/datadog/appsec/security_engine/engine.rb +8 -7
  60. data/lib/datadog/appsec/security_engine/runner.rb +2 -2
  61. data/lib/datadog/appsec/trace_keeper.rb +1 -1
  62. data/lib/datadog/appsec.rb +1 -1
  63. data/lib/datadog/core/configuration/agent_settings_resolver.rb +14 -13
  64. data/lib/datadog/core/configuration/agentless_settings_resolver.rb +2 -2
  65. data/lib/datadog/core/configuration/components.rb +12 -11
  66. data/lib/datadog/core/configuration/components_state.rb +8 -1
  67. data/lib/datadog/core/configuration/settings.rb +5 -2
  68. data/lib/datadog/core/configuration/supported_configurations.rb +3 -0
  69. data/lib/datadog/core/configuration.rb +2 -2
  70. data/lib/datadog/core/crashtracking/component.rb +1 -1
  71. data/lib/datadog/core/diagnostics/environment_logger.rb +1 -1
  72. data/lib/datadog/core/environment/cgroup.rb +2 -2
  73. data/lib/datadog/core/environment/container.rb +3 -3
  74. data/lib/datadog/core/metrics/client.rb +6 -6
  75. data/lib/datadog/core/process_discovery.rb +1 -1
  76. data/lib/datadog/core/remote/client.rb +44 -3
  77. data/lib/datadog/core/remote/dispatcher.rb +34 -3
  78. data/lib/datadog/core/remote/tie/tracing.rb +4 -3
  79. data/lib/datadog/core/remote/transport/http.rb +2 -2
  80. data/lib/datadog/core/runtime/metrics.rb +14 -14
  81. data/lib/datadog/core/semaphore.rb +3 -1
  82. data/lib/datadog/core/telemetry/event/app_started.rb +9 -9
  83. data/lib/datadog/core/telemetry/logger.rb +1 -1
  84. data/lib/datadog/core/telemetry/logging.rb +1 -1
  85. data/lib/datadog/core/telemetry/request.rb +9 -3
  86. data/lib/datadog/core/telemetry/transport/http.rb +2 -2
  87. data/lib/datadog/core/telemetry/worker.rb +1 -1
  88. data/lib/datadog/core/transport/http/adapters/net.rb +1 -1
  89. data/lib/datadog/core/transport/http/adapters/unix_socket.rb +1 -1
  90. data/lib/datadog/core/transport/http/builder.rb +1 -1
  91. data/lib/datadog/core/transport/http.rb +3 -3
  92. data/lib/datadog/core/utils/at_fork_monkey_patch.rb +2 -2
  93. data/lib/datadog/core/workers/async.rb +1 -1
  94. data/lib/datadog/core/workers/runtime_metrics.rb +2 -2
  95. data/lib/datadog/data_streams/pathway_context.rb +1 -1
  96. data/lib/datadog/data_streams/processor.rb +48 -27
  97. data/lib/datadog/data_streams/transport/http.rb +1 -1
  98. data/lib/datadog/data_streams.rb +16 -0
  99. data/lib/datadog/di/capture_expression_evaluator.rb +48 -11
  100. data/lib/datadog/di/component.rb +73 -2
  101. data/lib/datadog/di/configuration.rb +19 -0
  102. data/lib/datadog/di/contrib/active_record.rb +1 -1
  103. data/lib/datadog/di/el/compiler.rb +4 -4
  104. data/lib/datadog/di/el/evaluator.rb +247 -43
  105. data/lib/datadog/di/el/expression.rb +36 -6
  106. data/lib/datadog/di/error.rb +16 -0
  107. data/lib/datadog/di/guardrails_telemetry/reason.rb +3 -2
  108. data/lib/datadog/di/instrumenter.rb +39 -10
  109. data/lib/datadog/di/probe_notification_builder.rb +58 -10
  110. data/lib/datadog/di/probe_notifier_worker.rb +1 -1
  111. data/lib/datadog/di/remote.rb +46 -2
  112. data/lib/datadog/di/serializer.rb +47 -13
  113. data/lib/datadog/di.rb +27 -0
  114. data/lib/datadog/error_tracking/component.rb +1 -1
  115. data/lib/datadog/error_tracking/configuration.rb +1 -1
  116. data/lib/datadog/kit/appsec/events/v2.rb +6 -6
  117. data/lib/datadog/kit/appsec/events.rb +1 -1
  118. data/lib/datadog/kit/enable_core_dumps.rb +1 -1
  119. data/lib/datadog/kit/identity.rb +1 -1
  120. data/lib/datadog/open_feature/activation.rb +26 -1
  121. data/lib/datadog/open_feature/agentless/configuration_source.rb +94 -15
  122. data/lib/datadog/open_feature/component.rb +22 -2
  123. data/lib/datadog/open_feature/configuration/agentless_endpoint.rb +6 -0
  124. data/lib/datadog/open_feature/configuration.rb +10 -4
  125. data/lib/datadog/open_feature/evaluation_engine.rb +62 -4
  126. data/lib/datadog/open_feature/exposures/buffer.rb +4 -0
  127. data/lib/datadog/open_feature/exposures/reporter.rb +17 -4
  128. data/lib/datadog/open_feature/exposures/worker.rb +37 -6
  129. data/lib/datadog/open_feature/flag_evaluation/aggregator.rb +5 -5
  130. data/lib/datadog/open_feature/flag_evaluation/writer.rb +1 -1
  131. data/lib/datadog/open_feature/hooks/debug_logging_hook.rb +56 -0
  132. data/lib/datadog/open_feature/hooks/evaluation_telemetry_opt_out_hook.rb +25 -0
  133. data/lib/datadog/open_feature/hooks/span_enrichment_hook.rb +2 -2
  134. data/lib/datadog/open_feature/metrics/flag_eval_metrics.rb +1 -1
  135. data/lib/datadog/open_feature/native_evaluator.rb +1 -1
  136. data/lib/datadog/open_feature/noop_evaluator.rb +1 -1
  137. data/lib/datadog/open_feature/provider.rb +69 -12
  138. data/lib/datadog/open_feature/remote.rb +8 -1
  139. data/lib/datadog/open_feature/resolution_details.rb +2 -2
  140. data/lib/datadog/open_feature/transport.rb +6 -6
  141. data/lib/datadog/opentelemetry/api/context.rb +3 -3
  142. data/lib/datadog/opentelemetry/logs.rb +5 -5
  143. data/lib/datadog/opentelemetry/metrics.rb +3 -3
  144. data/lib/datadog/opentelemetry/sdk/propagator.rb +3 -3
  145. data/lib/datadog/opentelemetry/sdk/span_processor.rb +2 -2
  146. data/lib/datadog/opentelemetry/sdk/trace/span.rb +1 -1
  147. data/lib/datadog/profiling/collectors/code_provenance.rb +3 -3
  148. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +4 -4
  149. data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +1 -1
  150. data/lib/datadog/profiling/collectors/info.rb +37 -6
  151. data/lib/datadog/profiling/collectors/thread_context.rb +1 -1
  152. data/lib/datadog/profiling/component.rb +41 -39
  153. data/lib/datadog/profiling/exporter.rb +4 -6
  154. data/lib/datadog/profiling/http_transport.rb +3 -3
  155. data/lib/datadog/profiling/profiler.rb +2 -2
  156. data/lib/datadog/profiling/scheduler.rb +2 -2
  157. data/lib/datadog/profiling/tag_builder.rb +1 -1
  158. data/lib/datadog/symbol_database/extractor.rb +8 -8
  159. data/lib/datadog/symbol_database/uploader.rb +1 -1
  160. data/lib/datadog/tracing/buffer.rb +3 -3
  161. data/lib/datadog/tracing/client_ip.rb +1 -1
  162. data/lib/datadog/tracing/component.rb +15 -10
  163. data/lib/datadog/tracing/configuration/dynamic/option.rb +2 -2
  164. data/lib/datadog/tracing/configuration/ext.rb +2 -0
  165. data/lib/datadog/tracing/configuration/settings.rb +14 -3
  166. data/lib/datadog/tracing/context.rb +1 -1
  167. data/lib/datadog/tracing/context_provider.rb +8 -0
  168. data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +2 -2
  169. data/lib/datadog/tracing/contrib/active_job/data_streams.rb +27 -2
  170. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +2 -2
  171. data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +1 -1
  172. data/lib/datadog/tracing/contrib/active_record/utils.rb +1 -1
  173. data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +1 -1
  174. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +1 -1
  175. data/lib/datadog/tracing/contrib/active_support/notifications/subscriber.rb +2 -2
  176. data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +2 -2
  177. data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +1 -1
  178. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +1 -1
  179. data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +1 -1
  180. data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +1 -1
  181. data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +2 -2
  182. data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +1 -1
  183. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +3 -3
  184. data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +1 -1
  185. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +17 -12
  186. data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +1 -1
  187. data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +1 -1
  188. data/lib/datadog/tracing/contrib/excon/middleware.rb +16 -9
  189. data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +1 -1
  190. data/lib/datadog/tracing/contrib/faraday/middleware.rb +14 -8
  191. data/lib/datadog/tracing/contrib/grape/endpoint.rb +4 -4
  192. data/lib/datadog/tracing/contrib/graphql/patcher.rb +1 -1
  193. data/lib/datadog/tracing/contrib/graphql/unified_trace.rb +3 -3
  194. data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +1 -1
  195. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +2 -2
  196. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +1 -1
  197. data/lib/datadog/tracing/contrib/grpc.rb +1 -1
  198. data/lib/datadog/tracing/contrib/hanami/action_tracer.rb +1 -1
  199. data/lib/datadog/tracing/contrib/hanami/plugin.rb +1 -1
  200. data/lib/datadog/tracing/contrib/hanami/renderer_policy_tracing.rb +1 -1
  201. data/lib/datadog/tracing/contrib/hanami/router_tracing.rb +1 -1
  202. data/lib/datadog/tracing/contrib/http/configuration/settings.rb +1 -1
  203. data/lib/datadog/tracing/contrib/http/instrumentation.rb +21 -6
  204. data/lib/datadog/tracing/contrib/http.rb +1 -1
  205. data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +1 -1
  206. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +14 -8
  207. data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +1 -1
  208. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +14 -8
  209. data/lib/datadog/tracing/contrib/kafka/instrumentation/consumer.rb +2 -2
  210. data/lib/datadog/tracing/contrib/kafka/instrumentation/producer.rb +2 -2
  211. data/lib/datadog/tracing/contrib/karafka/monitor.rb +1 -1
  212. data/lib/datadog/tracing/contrib/karafka/patcher.rb +1 -1
  213. data/lib/datadog/tracing/contrib/karafka.rb +1 -1
  214. data/lib/datadog/tracing/contrib/lograge/patcher.rb +1 -1
  215. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +1 -1
  216. data/lib/datadog/tracing/contrib/mongodb/parsers.rb +1 -1
  217. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +1 -1
  218. data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +1 -1
  219. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +3 -3
  220. data/lib/datadog/tracing/contrib/opensearch/configuration/settings.rb +2 -2
  221. data/lib/datadog/tracing/contrib/opensearch/patcher.rb +3 -3
  222. data/lib/datadog/tracing/contrib/pg/configuration/settings.rb +1 -1
  223. data/lib/datadog/tracing/contrib/pg/instrumentation.rb +4 -4
  224. data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +1 -1
  225. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +4 -4
  226. data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +1 -1
  227. data/lib/datadog/tracing/contrib/que/tracer.rb +1 -1
  228. data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +1 -1
  229. data/lib/datadog/tracing/contrib/racecar/events/batch.rb +1 -1
  230. data/lib/datadog/tracing/contrib/racecar/events/message.rb +1 -1
  231. data/lib/datadog/tracing/contrib/rack/middlewares.rb +3 -3
  232. data/lib/datadog/tracing/contrib/rack/patcher.rb +1 -1
  233. data/lib/datadog/tracing/contrib/rails/framework.rb +7 -7
  234. data/lib/datadog/tracing/contrib/rails/log_injection.rb +1 -1
  235. data/lib/datadog/tracing/contrib/rails/runner.rb +4 -4
  236. data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +1 -1
  237. data/lib/datadog/tracing/contrib/redis/quantize.rb +1 -1
  238. data/lib/datadog/tracing/contrib/redis/tags.rb +1 -1
  239. data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +1 -1
  240. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +17 -10
  241. data/lib/datadog/tracing/contrib/sequel/database.rb +1 -1
  242. data/lib/datadog/tracing/contrib/sequel/dataset.rb +1 -1
  243. data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +1 -1
  244. data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +2 -2
  245. data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +2 -2
  246. data/lib/datadog/tracing/contrib/sidekiq.rb +1 -1
  247. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +1 -1
  248. data/lib/datadog/tracing/contrib/status_range_env_parser.rb +1 -1
  249. data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +1 -1
  250. data/lib/datadog/tracing/contrib/trilogy/configuration/settings.rb +1 -1
  251. data/lib/datadog/tracing/contrib/trilogy/instrumentation.rb +3 -3
  252. data/lib/datadog/tracing/contrib/utils/quantization/http.rb +102 -0
  253. data/lib/datadog/tracing/contrib/waterdrop/middleware.rb +2 -2
  254. data/lib/datadog/tracing/contrib/waterdrop.rb +1 -1
  255. data/lib/datadog/tracing/diagnostics/environment_logger.rb +1 -1
  256. data/lib/datadog/tracing/distributed/b3_multi.rb +1 -1
  257. data/lib/datadog/tracing/distributed/b3_single.rb +1 -1
  258. data/lib/datadog/tracing/distributed/baggage.rb +3 -3
  259. data/lib/datadog/tracing/distributed/datadog.rb +3 -3
  260. data/lib/datadog/tracing/distributed/propagation.rb +7 -7
  261. data/lib/datadog/tracing/distributed/trace_context.rb +1 -1
  262. data/lib/datadog/tracing/distributed/trace_state/open_telemetry.rb +1 -1
  263. data/lib/datadog/tracing/otel_thread_context.rb +3 -3
  264. data/lib/datadog/tracing/pipeline.rb +1 -1
  265. data/lib/datadog/tracing/remote.rb +50 -19
  266. data/lib/datadog/tracing/sampling/priority_sampler.rb +1 -1
  267. data/lib/datadog/tracing/sampling/rule.rb +1 -1
  268. data/lib/datadog/tracing/sampling/rule_sampler.rb +1 -1
  269. data/lib/datadog/tracing/sampling/span/rule_parser.rb +2 -2
  270. data/lib/datadog/tracing/span_operation.rb +1 -1
  271. data/lib/datadog/tracing/trace_digest.rb +1 -1
  272. data/lib/datadog/tracing/trace_operation.rb +6 -6
  273. data/lib/datadog/tracing/tracer.rb +6 -6
  274. data/lib/datadog/tracing/transport/http/telemetry.rb +1 -1
  275. data/lib/datadog/tracing/transport/http.rb +2 -2
  276. data/lib/datadog/tracing/transport/io.rb +1 -1
  277. data/lib/datadog/tracing/transport/native.rb +3 -3
  278. data/lib/datadog/tracing/transport/statistics.rb +2 -2
  279. data/lib/datadog/tracing/transport/telemetry.rb +3 -1
  280. data/lib/datadog/tracing/transport/trace_formatter.rb +12 -12
  281. data/lib/datadog/tracing/transport/traces.rb +1 -1
  282. data/lib/datadog/tracing/utils.rb +1 -1
  283. data/lib/datadog/tracing/workers.rb +1 -1
  284. data/lib/datadog/version.rb +1 -1
  285. metadata +9 -8
  286. data/lib/datadog/appsec/utils/hash_coercion.rb +0 -23
@@ -37,7 +37,7 @@ module Datadog
37
37
  o.default do
38
38
  Contrib::SpanAttributeSchema.fetch_service_name(
39
39
  Ext::ENV_SERVICE_NAME,
40
- Ext::DEFAULT_PEER_SERVICE_NAME
40
+ Ext::DEFAULT_PEER_SERVICE_NAME,
41
41
  )
42
42
  end
43
43
  end
@@ -57,7 +57,7 @@ module Datadog
57
57
  Datadog.logger.warn(
58
58
  "Invalid resource pattern: #{value}. " \
59
59
  "Supported values are: #{Ext::VALID_RESOURCE_PATTERNS.join(" | ")}. " \
60
- "Using default value: #{Ext::DEFAULT_RESOURCE_PATTERN}."
60
+ "Using default value: #{Ext::DEFAULT_RESOURCE_PATTERN}.",
61
61
  )
62
62
 
63
63
  Ext::DEFAULT_RESOURCE_PATTERN
@@ -59,7 +59,7 @@ module Datadog
59
59
  if datadog_configuration[:peer_service]
60
60
  span.set_tag(
61
61
  Tracing::Metadata::Ext::TAG_PEER_SERVICE,
62
- datadog_configuration[:peer_service]
62
+ datadog_configuration[:peer_service],
63
63
  )
64
64
  end
65
65
 
@@ -99,7 +99,7 @@ module Datadog
99
99
  if response.respond_to?(:headers) && (response.headers || {})["content-length"]
100
100
  span.set_tag(
101
101
  OpenSearch::Ext::TAG_RESPONSE_CONTENT_LENGTH,
102
- response.headers["content-length"].to_i
102
+ response.headers["content-length"].to_i,
103
103
  )
104
104
  end
105
105
  end
@@ -123,7 +123,7 @@ module Datadog
123
123
  quantize_options = datadog_configuration[:quantize]
124
124
  quantized_body = OpenSearch::Quantize.format_body(
125
125
  body,
126
- quantize_options
126
+ quantize_options,
127
127
  )
128
128
  span.set_tag(OpenSearch::Ext::TAG_BODY, quantized_body)
129
129
  end
@@ -41,7 +41,7 @@ module Datadog
41
41
  o.default do
42
42
  Contrib::SpanAttributeSchema.fetch_service_name(
43
43
  Ext::ENV_SERVICE_NAME,
44
- Ext::DEFAULT_PEER_SERVICE_NAME
44
+ Ext::DEFAULT_PEER_SERVICE_NAME,
45
45
  )
46
46
  end
47
47
  end
@@ -107,7 +107,7 @@ module Datadog
107
107
  on_error: on_error,
108
108
  service: service,
109
109
  resource: resource,
110
- type: Tracing::Metadata::Ext::SQL::TYPE
110
+ type: Tracing::Metadata::Ext::SQL::TYPE,
111
111
  ) do |span, trace_op|
112
112
  span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
113
113
  annotate_span_with_query!(span, service)
@@ -118,14 +118,14 @@ module Datadog
118
118
  propagation_mode = Contrib::Propagation::SqlComment::Mode.new(
119
119
  comment_propagation,
120
120
  datadog_configuration[:append_comment],
121
- datadog_configuration[:inject_sql_basehash]
121
+ datadog_configuration[:inject_sql_basehash],
122
122
  )
123
123
  Contrib::Propagation::SqlComment.annotate!(span, propagation_mode)
124
124
  propagated_sql_statement = Contrib::Propagation::SqlComment.prepend_comment(
125
125
  sql,
126
126
  span,
127
127
  trace_op,
128
- propagation_mode
128
+ propagation_mode,
129
129
  )
130
130
  end
131
131
 
@@ -157,7 +157,7 @@ module Datadog
157
157
  if datadog_configuration[:peer_service]
158
158
  span.set_tag(
159
159
  Tracing::Metadata::Ext::TAG_PEER_SERVICE,
160
- datadog_configuration[:peer_service]
160
+ datadog_configuration[:peer_service],
161
161
  )
162
162
  end
163
163
 
@@ -35,7 +35,7 @@ module Datadog
35
35
  o.default do
36
36
  Contrib::SpanAttributeSchema.fetch_service_name(
37
37
  Ext::ENV_SERVICE_NAME,
38
- Ext::DEFAULT_PEER_SERVICE_NAME
38
+ Ext::DEFAULT_PEER_SERVICE_NAME,
39
39
  )
40
40
  end
41
41
  end
@@ -20,7 +20,7 @@ module Datadog
20
20
  def run(query)
21
21
  Tracing.trace(
22
22
  Ext::SPAN_QUERY,
23
- service: datadog_configuration[:service_name]
23
+ service: datadog_configuration[:service_name],
24
24
  ) do |span|
25
25
  begin
26
26
  span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
@@ -39,7 +39,7 @@ module Datadog
39
39
  def query(query, &blk)
40
40
  Tracing.trace(
41
41
  Ext::SPAN_QUERY,
42
- service: datadog_configuration[:service_name]
42
+ service: datadog_configuration[:service_name],
43
43
  ) do |span|
44
44
  begin
45
45
  span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
@@ -58,7 +58,7 @@ module Datadog
58
58
  def kill(query_id)
59
59
  Tracing.trace(
60
60
  Ext::SPAN_KILL,
61
- service: datadog_configuration[:service_name]
61
+ service: datadog_configuration[:service_name],
62
62
  ) do |span|
63
63
  begin
64
64
  span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
@@ -91,7 +91,7 @@ module Datadog
91
91
  if datadog_configuration[:peer_service]
92
92
  span.set_tag(
93
93
  Tracing::Metadata::Ext::TAG_PEER_SERVICE,
94
- datadog_configuration[:peer_service]
94
+ datadog_configuration[:peer_service],
95
95
  )
96
96
  end
97
97
 
@@ -67,7 +67,7 @@ module Datadog
67
67
  else
68
68
  Datadog.logger.warn(
69
69
  "Sql comment propagation with `full` mode is aborted, because tracing is disabled. " \
70
- "Please set `Datadog.configuration.tracing.enabled = true` to continue."
70
+ "Please set `Datadog.configuration.tracing.enabled = true` to continue.",
71
71
  )
72
72
  end
73
73
  end
@@ -49,7 +49,7 @@ module Datadog
49
49
  if Contrib::Analytics.enabled?(configuration[:analytics_enabled])
50
50
  Contrib::Analytics.set_sample_rate(
51
51
  request_span,
52
- configuration[:analytics_sample_rate]
52
+ configuration[:analytics_sample_rate],
53
53
  )
54
54
  end
55
55
  end
@@ -35,7 +35,7 @@ module Datadog
35
35
  o.default do
36
36
  Contrib::SpanAttributeSchema.fetch_service_name(
37
37
  "",
38
- Ext::DEFAULT_PEER_SERVICE_NAME
38
+ Ext::DEFAULT_PEER_SERVICE_NAME,
39
39
  )
40
40
  end
41
41
  end
@@ -27,7 +27,7 @@ module Datadog
27
27
  def span_options
28
28
  super.merge(
29
29
  tags: {Tracing::Metadata::Ext::TAG_OPERATION => Ext::TAG_OPERATION_BATCH,
30
- Tracing::Metadata::Ext::TAG_KIND => Tracing::Metadata::Ext::SpanKind::TAG_CONSUMER}
30
+ Tracing::Metadata::Ext::TAG_KIND => Tracing::Metadata::Ext::SpanKind::TAG_CONSUMER},
31
31
  )
32
32
  end
33
33
  end
@@ -27,7 +27,7 @@ module Datadog
27
27
  def span_options
28
28
  super.merge(
29
29
  tags: {Tracing::Metadata::Ext::TAG_OPERATION => Ext::TAG_OPERATION_MESSAGE,
30
- Tracing::Metadata::Ext::TAG_KIND => Tracing::Metadata::Ext::SpanKind::TAG_CONSUMER}
30
+ Tracing::Metadata::Ext::TAG_KIND => Tracing::Metadata::Ext::SpanKind::TAG_CONSUMER},
31
31
  )
32
32
  end
33
33
  end
@@ -164,7 +164,7 @@ module Datadog
164
164
 
165
165
  request_span.set_tag(
166
166
  Tracing::Metadata::Ext::HTTP::TAG_URL,
167
- Contrib::Utils::Quantization::HTTP.url(url, options)
167
+ Contrib::Utils::Quantization::HTTP.url(url, options),
168
168
  )
169
169
  end
170
170
 
@@ -177,7 +177,7 @@ module Datadog
177
177
  unless base_url.empty?
178
178
  request_span.set_tag(
179
179
  Tracing::Metadata::Ext::HTTP::TAG_BASE_URL,
180
- base_url
180
+ base_url,
181
181
  )
182
182
  end
183
183
  end
@@ -187,7 +187,7 @@ module Datadog
187
187
  Tracing::ClientIp.set_client_ip_tag(
188
188
  request_span,
189
189
  headers: request_header_collection,
190
- remote_ip: env["REMOTE_ADDR"]
190
+ remote_ip: env["REMOTE_ADDR"],
191
191
  )
192
192
  end
193
193
 
@@ -95,7 +95,7 @@ module Datadog
95
95
  %(
96
96
  Rack :middleware_names requires you to also pass :application.
97
97
  Middleware names have NOT been patched; please provide :application.
98
- e.g. use: :rack, middleware_names: true, application: my_rack_app)
98
+ e.g. use: :rack, middleware_names: true, application: my_rack_app),
99
99
  )
100
100
  end
101
101
  end
@@ -64,7 +64,7 @@ module Datadog
64
64
  service_name: rails_config[:service_name],
65
65
  middleware_names: rails_config[:middleware_names],
66
66
  distributed_tracing: rails_config[:distributed_tracing],
67
- request_queuing: rails_config[:request_queuing]
67
+ request_queuing: rails_config[:request_queuing],
68
68
  )
69
69
  end
70
70
 
@@ -85,7 +85,7 @@ module Datadog
85
85
 
86
86
  datadog_config.tracing.instrument(
87
87
  :action_mailer,
88
- service_name: rails_config[:service_name]
88
+ service_name: rails_config[:service_name],
89
89
  )
90
90
  end
91
91
 
@@ -94,7 +94,7 @@ module Datadog
94
94
 
95
95
  datadog_config.tracing.instrument(
96
96
  :action_pack,
97
- service_name: rails_config[:service_name]
97
+ service_name: rails_config[:service_name],
98
98
  )
99
99
  end
100
100
 
@@ -103,7 +103,7 @@ module Datadog
103
103
 
104
104
  datadog_config.tracing.instrument(
105
105
  :action_view,
106
- service_name: rails_config[:service_name]
106
+ service_name: rails_config[:service_name],
107
107
  )
108
108
  end
109
109
 
@@ -112,7 +112,7 @@ module Datadog
112
112
 
113
113
  datadog_config.tracing.instrument(
114
114
  :active_job,
115
- service_name: rails_config[:service_name]
115
+ service_name: rails_config[:service_name],
116
116
  )
117
117
  end
118
118
 
@@ -127,7 +127,7 @@ module Datadog
127
127
 
128
128
  if datadog_config.tracing.log_injection
129
129
  datadog_config.tracing.instrument(
130
- :lograge
130
+ :lograge,
131
131
  )
132
132
  end
133
133
  end
@@ -137,7 +137,7 @@ module Datadog
137
137
 
138
138
  if datadog_config.tracing.log_injection
139
139
  datadog_config.tracing.instrument(
140
- :semantic_logger
140
+ :semantic_logger,
141
141
  )
142
142
  end
143
143
  end
@@ -18,7 +18,7 @@ module Datadog
18
18
  app_config.log_tags << proc { Tracing.log_correlation if Datadog.configuration.tracing.log_injection }
19
19
  rescue => e
20
20
  Datadog.logger.warn(
21
- "Unable to add Datadog Trace context to ActiveSupport::TaggedLogging: #{e.class}: #{e.message}"
21
+ "Unable to add Datadog Trace context to ActiveSupport::TaggedLogging: #{e.class}: #{e.message}",
22
22
  )
23
23
  false
24
24
  end
@@ -56,12 +56,12 @@ module Datadog
56
56
  Tracing::Metadata::Ext::TAG_SVC_SRC => Ext::TAG_COMPONENT,
57
57
  Tracing::Metadata::Ext::TAG_COMPONENT => Ext::TAG_COMPONENT,
58
58
  Tracing::Metadata::Ext::TAG_OPERATION => operation,
59
- }
59
+ },
60
60
  ) do |span|
61
61
  if source
62
62
  span.set_tag(
63
63
  Ext::TAG_RUNNER_SOURCE,
64
- Core::Utils.truncate(source, MAX_TAG_VALUE_SIZE)
64
+ Core::Utils.truncate(source, MAX_TAG_VALUE_SIZE),
65
65
  )
66
66
  end
67
67
  Contrib::Analytics.set_rate!(span, Datadog.configuration.tracing[:rails])
@@ -98,12 +98,12 @@ module Datadog
98
98
  Tracing::Metadata::Ext::TAG_SVC_SRC => Ext::TAG_COMPONENT,
99
99
  Tracing::Metadata::Ext::TAG_COMPONENT => Ext::TAG_COMPONENT,
100
100
  Tracing::Metadata::Ext::TAG_OPERATION => operation,
101
- }
101
+ },
102
102
  ) do |span|
103
103
  if source
104
104
  span.set_tag(
105
105
  Ext::TAG_RUNNER_SOURCE,
106
- Core::Utils.truncate(source, MAX_TAG_VALUE_SIZE)
106
+ Core::Utils.truncate(source, MAX_TAG_VALUE_SIZE),
107
107
  )
108
108
  end
109
109
  Contrib::Analytics.set_rate!(span, Datadog.configuration.tracing[:rails])
@@ -40,7 +40,7 @@ module Datadog
40
40
  o.default do
41
41
  Contrib::SpanAttributeSchema.fetch_service_name(
42
42
  Ext::ENV_SERVICE_NAME,
43
- Ext::DEFAULT_PEER_SERVICE_NAME
43
+ Ext::DEFAULT_PEER_SERVICE_NAME,
44
44
  )
45
45
  end
46
46
  end
@@ -28,7 +28,7 @@ module Datadog
28
28
  DEBUG
29
29
  LATENCY
30
30
  MEMORY
31
- ]
31
+ ],
32
32
  ).freeze
33
33
 
34
34
  module_function
@@ -17,7 +17,7 @@ module Datadog
17
17
  if datadog_configuration[:peer_service]
18
18
  span.set_tag(
19
19
  Tracing::Metadata::Ext::TAG_PEER_SERVICE,
20
- datadog_configuration[:peer_service]
20
+ datadog_configuration[:peer_service],
21
21
  )
22
22
  end
23
23
 
@@ -39,7 +39,7 @@ module Datadog
39
39
  o.default do
40
40
  Contrib::SpanAttributeSchema.fetch_service_name(
41
41
  Ext::ENV_SERVICE_NAME,
42
- Ext::DEFAULT_PEER_SERVICE_NAME
42
+ Ext::DEFAULT_PEER_SERVICE_NAME,
43
43
  )
44
44
  end
45
45
  end
@@ -6,6 +6,7 @@ require_relative "../../metadata/ext"
6
6
  require_relative "../http"
7
7
  require_relative "../analytics"
8
8
  require_relative "ext"
9
+ require_relative "../utils/quantization/http"
9
10
 
10
11
  module Datadog
11
12
  module Tracing
@@ -27,7 +28,7 @@ module Datadog
27
28
  datadog_trace_request(uri) do |_span, trace|
28
29
  if Tracing::Distributed::PropagationPolicy.enabled?(
29
30
  global_config: datadog_configuration,
30
- trace: trace
31
+ trace: trace,
31
32
  )
32
33
  Contrib::HTTP.inject(trace, processed_headers)
33
34
  end
@@ -38,12 +39,18 @@ module Datadog
38
39
 
39
40
  def datadog_tag_request(uri, span)
40
41
  span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
41
- span.resource = method.to_s.upcase
42
+ http_method = method.to_s.upcase
43
+ path = uri.path
44
+ span.resource = Contrib::Utils::Quantization::HTTP.client_resource(
45
+ http_method,
46
+ path,
47
+ enabled: Datadog.configuration.tracing.http_client_resource_name_quantize,
48
+ )
42
49
 
43
50
  if datadog_configuration[:peer_service]
44
51
  span.set_tag(
45
52
  Tracing::Metadata::Ext::TAG_PEER_SERVICE,
46
- datadog_configuration[:peer_service]
53
+ datadog_configuration[:peer_service],
47
54
  )
48
55
  end
49
56
 
@@ -57,14 +64,14 @@ module Datadog
57
64
  # Set analytics sample rate
58
65
  Contrib::Analytics.set_sample_rate(span, analytics_sample_rate) if analytics_enabled?
59
66
 
60
- span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_URL, uri.path)
61
- span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_METHOD, method.to_s.upcase)
67
+ span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_URL, path)
68
+ span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_METHOD, http_method)
62
69
  span.set_tag(Tracing::Metadata::Ext::NET::TAG_TARGET_HOST, uri.host)
63
70
  span.set_tag(Tracing::Metadata::Ext::NET::TAG_TARGET_PORT, uri.port)
64
71
  span.set_tags(
65
72
  Datadog.configuration.tracing.header_tags.request_tags(
66
- Core::Utils::Hash::CaseInsensitiveWrapper.new(processed_headers)
67
- )
73
+ Core::Utils::Hash::CaseInsensitiveWrapper.new(processed_headers),
74
+ ),
68
75
  )
69
76
 
70
77
  Contrib::SpanAttributeSchema.set_peer_service!(span, Ext::PEER_SERVICE_SOURCES)
@@ -74,7 +81,7 @@ module Datadog
74
81
  span = Tracing.trace(
75
82
  Ext::SPAN_REQUEST,
76
83
  service: datadog_configuration[:split_by_domain] ? uri.host : datadog_configuration[:service_name],
77
- type: Tracing::Metadata::Ext::HTTP::TYPE_OUTBOUND
84
+ type: Tracing::Metadata::Ext::HTTP::TYPE_OUTBOUND,
78
85
  )
79
86
 
80
87
  trace = Tracing.active_trace
@@ -89,8 +96,8 @@ module Datadog
89
96
 
90
97
  span.set_tags(
91
98
  Datadog.configuration.tracing.header_tags.response_tags(
92
- Core::Utils::Hash::CaseInsensitiveWrapper.new(response.net_http_res.to_hash)
93
- )
99
+ Core::Utils::Hash::CaseInsensitiveWrapper.new(response.net_http_res.to_hash),
100
+ ),
94
101
  )
95
102
  end
96
103
  end
@@ -27,7 +27,7 @@ module Datadog
27
27
  || Datadog.configuration.tracing[:sequel][:service_name] \
28
28
  || Contrib::SpanAttributeSchema.fetch_service_name(
29
29
  "",
30
- adapter_name
30
+ adapter_name,
31
31
  )
32
32
  span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
33
33
  span.resource = opts[:query]
@@ -44,7 +44,7 @@ module Datadog
44
44
  || Datadog.configuration.tracing[:sequel][:service_name] \
45
45
  || Contrib::SpanAttributeSchema.fetch_service_name(
46
46
  "",
47
- adapter_name
47
+ adapter_name,
48
48
  )
49
49
  span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
50
50
  span.resource = opts[:query]
@@ -18,7 +18,7 @@ module Datadog
18
18
  Ext::SPAN_JOB,
19
19
  service: @shoryuken_service,
20
20
  type: Tracing::Metadata::Ext::AppTypes::TYPE_WORKER,
21
- on_error: @on_error
21
+ on_error: @on_error,
22
22
  ) do |span|
23
23
  span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
24
24
  span.set_tag(Contrib::Ext::Messaging::TAG_SYSTEM, Ext::TAG_MESSAGING_SYSTEM)
@@ -27,7 +27,7 @@ module Datadog
27
27
  span.set_tag(Datadog::Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
28
28
  if Tracing::Distributed::PropagationPolicy.enabled?(
29
29
  global_config: configuration,
30
- trace: trace_op
30
+ trace: trace_op,
31
31
  )
32
32
  Sidekiq.inject(trace_op, job)
33
33
  end
@@ -41,7 +41,7 @@ module Datadog
41
41
 
42
42
  span.set_tag(
43
43
  Datadog::Tracing::Metadata::Ext::TAG_KIND,
44
- Datadog::Tracing::Metadata::Ext::SpanKind::TAG_PRODUCER
44
+ Datadog::Tracing::Metadata::Ext::SpanKind::TAG_PRODUCER,
45
45
  )
46
46
 
47
47
  # Set analytics sample rate
@@ -34,7 +34,7 @@ module Datadog
34
34
  Ext::SPAN_JOB,
35
35
  service: @sidekiq_service,
36
36
  type: Datadog::Tracing::Metadata::Ext::AppTypes::TYPE_WORKER,
37
- on_error: @on_error
37
+ on_error: @on_error,
38
38
  ) do |span|
39
39
  span.set_tag(Datadog::Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
40
40
  span.resource = resource
@@ -46,7 +46,7 @@ module Datadog
46
46
 
47
47
  span.set_tag(
48
48
  Datadog::Tracing::Metadata::Ext::TAG_KIND,
49
- Datadog::Tracing::Metadata::Ext::SpanKind::TAG_CONSUMER
49
+ Datadog::Tracing::Metadata::Ext::SpanKind::TAG_CONSUMER,
50
50
  )
51
51
 
52
52
  # Set analytics sample rate
@@ -29,7 +29,7 @@ module Datadog
29
29
  propagation_style_inject: tracing.propagation_style_inject,
30
30
  propagation_style_extract: tracing.propagation_style_extract,
31
31
  propagation_behavior_extract: tracing.propagation_behavior_extract,
32
- propagation_extract_first: tracing.propagation_extract_first
32
+ propagation_extract_first: tracing.propagation_extract_first,
33
33
  )
34
34
  end
35
35
  end
@@ -26,7 +26,7 @@ module Datadog
26
26
  Tracing.trace(
27
27
  Ext::SPAN_REQUEST,
28
28
  service: configuration[:service_name],
29
- type: Tracing::Metadata::Ext::HTTP::TYPE_INBOUND
29
+ type: Tracing::Metadata::Ext::HTTP::TYPE_INBOUND,
30
30
  ) do |span|
31
31
  span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
32
32
  # this is kept nil until we set a correct one (either in the route or with a fallback in the ensure below)
@@ -19,7 +19,7 @@ module Datadog
19
19
  when 2 then array << (Integer(v.first)..Integer(v.last))
20
20
  else
21
21
  Datadog.logger.debug(
22
- "Invalid error_status_codes configuration: Unable to parse #{value}, containing #{v}."
22
+ "Invalid error_status_codes configuration: Unable to parse #{value}, containing #{v}.",
23
23
  )
24
24
  next
25
25
  end
@@ -32,7 +32,7 @@ module Datadog
32
32
  if Datadog::Tracing::Contrib::Analytics.enabled?(datadog_configuration[:analytics_enabled])
33
33
  Datadog::Tracing::Contrib::Analytics.set_sample_rate(
34
34
  span,
35
- datadog_configuration[:analytics_sample_rate]
35
+ datadog_configuration[:analytics_sample_rate],
36
36
  )
37
37
  end
38
38
 
@@ -35,7 +35,7 @@ module Datadog
35
35
  o.default do
36
36
  Contrib::SpanAttributeSchema.fetch_service_name(
37
37
  Ext::ENV_SERVICE_NAME,
38
- Ext::DEFAULT_PEER_SERVICE_NAME
38
+ Ext::DEFAULT_PEER_SERVICE_NAME,
39
39
  )
40
40
  end
41
41
  end
@@ -30,7 +30,7 @@ module Datadog
30
30
  if datadog_configuration[:peer_service]
31
31
  span.set_tag(
32
32
  Tracing::Metadata::Ext::TAG_PEER_SERVICE,
33
- datadog_configuration[:peer_service]
33
+ datadog_configuration[:peer_service],
34
34
  )
35
35
  end
36
36
 
@@ -55,7 +55,7 @@ module Datadog
55
55
  propagation_mode = Contrib::Propagation::SqlComment::Mode.new(
56
56
  comment_propagation,
57
57
  datadog_configuration[:append_comment],
58
- datadog_configuration[:inject_sql_basehash]
58
+ datadog_configuration[:inject_sql_basehash],
59
59
  )
60
60
 
61
61
  Contrib::Propagation::SqlComment.annotate!(span, propagation_mode)
@@ -63,7 +63,7 @@ module Datadog
63
63
  sql,
64
64
  span,
65
65
  trace_op,
66
- propagation_mode
66
+ propagation_mode,
67
67
  )
68
68
 
69
69
  super(sql)