ddtrace 1.14.0 → 1.16.2

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 (282) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +165 -2
  3. data/ext/ddtrace_profiling_native_extension/NativeExtensionDesign.md +3 -5
  4. data/ext/ddtrace_profiling_native_extension/clock_id.h +0 -3
  5. data/ext/ddtrace_profiling_native_extension/clock_id_from_pthread.c +0 -22
  6. data/ext/ddtrace_profiling_native_extension/clock_id_noop.c +0 -1
  7. data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +41 -6
  8. data/ext/ddtrace_profiling_native_extension/collectors_idle_sampling_helper.c +3 -0
  9. data/ext/ddtrace_profiling_native_extension/collectors_stack.c +76 -24
  10. data/ext/ddtrace_profiling_native_extension/collectors_stack.h +1 -1
  11. data/ext/ddtrace_profiling_native_extension/collectors_thread_context.c +207 -32
  12. data/ext/ddtrace_profiling_native_extension/collectors_thread_context.h +1 -1
  13. data/ext/ddtrace_profiling_native_extension/extconf.rb +8 -2
  14. data/ext/ddtrace_profiling_native_extension/http_transport.c +26 -10
  15. data/ext/ddtrace_profiling_native_extension/libdatadog_helpers.c +42 -0
  16. data/ext/ddtrace_profiling_native_extension/libdatadog_helpers.h +6 -0
  17. data/ext/ddtrace_profiling_native_extension/native_extension_helpers.rb +1 -16
  18. data/ext/ddtrace_profiling_native_extension/pid_controller.c +57 -0
  19. data/ext/ddtrace_profiling_native_extension/pid_controller.h +45 -0
  20. data/ext/ddtrace_profiling_native_extension/private_vm_api_access.c +17 -12
  21. data/ext/ddtrace_profiling_native_extension/profiling.c +0 -2
  22. data/ext/ddtrace_profiling_native_extension/stack_recorder.c +74 -37
  23. data/ext/ddtrace_profiling_native_extension/stack_recorder.h +13 -3
  24. data/lib/datadog/appsec/assets/waf_rules/processors.json +92 -0
  25. data/lib/datadog/appsec/assets/waf_rules/recommended.json +698 -75
  26. data/lib/datadog/appsec/assets/waf_rules/scanners.json +114 -0
  27. data/lib/datadog/appsec/assets/waf_rules/strict.json +98 -8
  28. data/lib/datadog/appsec/assets.rb +8 -0
  29. data/lib/datadog/appsec/component.rb +9 -2
  30. data/lib/datadog/appsec/configuration/settings.rb +61 -2
  31. data/lib/datadog/appsec/contrib/rack/gateway/request.rb +6 -2
  32. data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +8 -6
  33. data/lib/datadog/appsec/contrib/rack/reactive/request.rb +2 -7
  34. data/lib/datadog/appsec/contrib/rack/reactive/request_body.rb +2 -5
  35. data/lib/datadog/appsec/contrib/rack/reactive/response.rb +2 -5
  36. data/lib/datadog/appsec/contrib/rack/request_body_middleware.rb +3 -2
  37. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +24 -10
  38. data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +3 -2
  39. data/lib/datadog/appsec/contrib/rails/patcher.rb +9 -3
  40. data/lib/datadog/appsec/contrib/rails/reactive/action.rb +2 -5
  41. data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +6 -4
  42. data/lib/datadog/appsec/contrib/sinatra/patcher.rb +13 -7
  43. data/lib/datadog/appsec/contrib/sinatra/reactive/routed.rb +2 -5
  44. data/lib/datadog/appsec/event.rb +106 -50
  45. data/lib/datadog/appsec/monitor/gateway/watcher.rb +3 -3
  46. data/lib/datadog/appsec/monitor/reactive/set_user.rb +2 -5
  47. data/lib/datadog/appsec/processor/actions.rb +49 -0
  48. data/lib/datadog/appsec/processor/rule_merger.rb +22 -2
  49. data/lib/datadog/appsec/processor.rb +34 -6
  50. data/lib/datadog/appsec/remote.rb +4 -1
  51. data/lib/datadog/appsec/response.rb +82 -4
  52. data/lib/datadog/appsec/sample_rate.rb +21 -0
  53. data/lib/datadog/appsec.rb +2 -2
  54. data/lib/datadog/core/configuration/agent_settings_resolver.rb +29 -24
  55. data/lib/datadog/core/configuration/base.rb +1 -11
  56. data/lib/datadog/core/configuration/components.rb +7 -2
  57. data/lib/datadog/core/configuration/ext.rb +21 -0
  58. data/lib/datadog/core/configuration/option.rb +2 -4
  59. data/lib/datadog/core/configuration/option_definition.rb +17 -41
  60. data/lib/datadog/core/configuration/options.rb +5 -5
  61. data/lib/datadog/core/configuration/settings.rb +47 -45
  62. data/lib/datadog/core/environment/execution.rb +47 -9
  63. data/lib/datadog/core/environment/variable_helpers.rb +0 -69
  64. data/lib/datadog/core/error.rb +1 -0
  65. data/lib/datadog/core/git/ext.rb +2 -0
  66. data/lib/datadog/core/remote/client/capabilities.rb +1 -1
  67. data/lib/datadog/core/remote/component.rb +2 -2
  68. data/lib/datadog/core/remote/negotiation.rb +2 -2
  69. data/lib/datadog/core/remote/transport/config.rb +60 -0
  70. data/lib/datadog/core/remote/transport/http/api/instance.rb +39 -0
  71. data/lib/datadog/core/remote/transport/http/api/spec.rb +21 -0
  72. data/lib/datadog/core/remote/transport/http/api.rb +58 -0
  73. data/lib/datadog/core/remote/transport/http/builder.rb +219 -0
  74. data/lib/datadog/core/remote/transport/http/client.rb +48 -0
  75. data/lib/datadog/core/remote/transport/http/config.rb +280 -0
  76. data/lib/datadog/core/remote/transport/http/negotiation.rb +146 -0
  77. data/lib/datadog/core/remote/transport/http.rb +179 -0
  78. data/lib/datadog/core/{transport → remote/transport}/negotiation.rb +25 -23
  79. data/lib/datadog/core/remote/worker.rb +3 -1
  80. data/lib/datadog/core/telemetry/collector.rb +3 -2
  81. data/lib/datadog/core/telemetry/http/transport.rb +2 -1
  82. data/lib/datadog/core/transport/ext.rb +47 -0
  83. data/lib/datadog/core/transport/http/adapters/net.rb +168 -0
  84. data/lib/datadog/core/transport/http/adapters/registry.rb +29 -0
  85. data/lib/datadog/core/transport/http/adapters/test.rb +89 -0
  86. data/lib/datadog/core/transport/http/adapters/unix_socket.rb +83 -0
  87. data/lib/datadog/core/transport/http/api/endpoint.rb +31 -0
  88. data/lib/datadog/core/transport/http/api/fallbacks.rb +26 -0
  89. data/lib/datadog/core/transport/http/api/map.rb +18 -0
  90. data/lib/datadog/core/transport/http/env.rb +62 -0
  91. data/lib/datadog/core/transport/http/response.rb +60 -0
  92. data/lib/datadog/core/transport/parcel.rb +22 -0
  93. data/lib/datadog/core/transport/request.rb +17 -0
  94. data/lib/datadog/core/transport/response.rb +64 -0
  95. data/lib/datadog/core/workers/polling.rb +2 -2
  96. data/lib/datadog/opentelemetry/api/context.rb +10 -3
  97. data/lib/datadog/opentelemetry/sdk/propagator.rb +2 -1
  98. data/lib/datadog/opentelemetry/sdk/span_processor.rb +14 -2
  99. data/lib/datadog/opentelemetry/sdk/trace/span.rb +68 -0
  100. data/lib/datadog/opentelemetry/trace.rb +58 -0
  101. data/lib/datadog/opentelemetry.rb +1 -0
  102. data/lib/datadog/opentracer.rb +9 -0
  103. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +14 -19
  104. data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +1 -1
  105. data/lib/datadog/profiling/collectors/thread_context.rb +9 -1
  106. data/lib/datadog/profiling/component.rb +24 -99
  107. data/lib/datadog/profiling/ext.rb +0 -12
  108. data/lib/datadog/profiling/flush.rb +0 -3
  109. data/lib/datadog/profiling/http_transport.rb +6 -3
  110. data/lib/datadog/profiling/native_extension.rb +0 -21
  111. data/lib/datadog/profiling/profiler.rb +36 -13
  112. data/lib/datadog/profiling/scheduler.rb +16 -9
  113. data/lib/datadog/profiling.rb +8 -81
  114. data/lib/datadog/tracing/component.rb +10 -4
  115. data/lib/datadog/tracing/configuration/agent_settings_resolver.rb +13 -0
  116. data/lib/datadog/tracing/configuration/ext.rb +4 -2
  117. data/lib/datadog/tracing/configuration/settings.rb +14 -7
  118. data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +1 -1
  119. data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +1 -1
  120. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +4 -0
  121. data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +106 -197
  122. data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +3 -0
  123. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +7 -0
  124. data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +14 -14
  125. data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +3 -10
  126. data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +2 -1
  127. data/lib/datadog/tracing/contrib/concurrent_ruby/patcher.rb +8 -1
  128. data/lib/datadog/tracing/contrib/concurrent_ruby/promises_future_patch.rb +22 -0
  129. data/lib/datadog/tracing/contrib/configuration/settings.rb +1 -1
  130. data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +6 -0
  131. data/lib/datadog/tracing/contrib/dalli/ext.rb +7 -0
  132. data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +9 -2
  133. data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +1 -1
  134. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +5 -0
  135. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +5 -0
  136. data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +8 -0
  137. data/lib/datadog/tracing/contrib/excon/middleware.rb +5 -0
  138. data/lib/datadog/tracing/contrib/ext.rb +3 -0
  139. data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +1 -1
  140. data/lib/datadog/tracing/contrib/faraday/middleware.rb +5 -0
  141. data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +21 -1
  142. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +11 -1
  143. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +18 -0
  144. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb +0 -4
  145. data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +3 -3
  146. data/lib/datadog/tracing/contrib/http/instrumentation.rb +5 -0
  147. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +5 -0
  148. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +5 -0
  149. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +7 -0
  150. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +13 -3
  151. data/lib/datadog/tracing/contrib/opensearch/integration.rb +2 -2
  152. data/lib/datadog/tracing/contrib/opensearch/patcher.rb +7 -0
  153. data/lib/datadog/tracing/contrib/pg/instrumentation.rb +5 -0
  154. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +5 -0
  155. data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +1 -1
  156. data/lib/datadog/tracing/contrib/que/configuration/settings.rb +1 -1
  157. data/lib/datadog/tracing/contrib/racecar/event.rb +5 -0
  158. data/lib/datadog/tracing/contrib/rack/header_tagging.rb +14 -4
  159. data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +4 -4
  160. data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +1 -1
  161. data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +1 -1
  162. data/lib/datadog/tracing/contrib/redis/instrumentation.rb +3 -38
  163. data/lib/datadog/tracing/contrib/redis/tags.rb +7 -2
  164. data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +46 -33
  165. data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +1 -1
  166. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +5 -0
  167. data/lib/datadog/tracing/contrib/sequel/utils.rb +5 -0
  168. data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +1 -1
  169. data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +1 -1
  170. data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +1 -1
  171. data/lib/datadog/tracing/contrib/utils/quantization/http.rb +2 -2
  172. data/lib/datadog/tracing/diagnostics/environment_logger.rb +6 -0
  173. data/lib/datadog/tracing/distributed/propagation.rb +13 -33
  174. data/lib/datadog/tracing/metadata/tagging.rb +3 -3
  175. data/lib/datadog/tracing/sync_writer.rb +3 -3
  176. data/lib/datadog/tracing/tracer.rb +2 -0
  177. data/lib/datadog/{core → tracing}/transport/http/api/instance.rb +1 -1
  178. data/lib/datadog/{core → tracing}/transport/http/api/spec.rb +1 -1
  179. data/lib/datadog/tracing/transport/http/api.rb +43 -0
  180. data/lib/datadog/{core → tracing}/transport/http/builder.rb +13 -68
  181. data/lib/datadog/tracing/transport/http/client.rb +57 -0
  182. data/lib/datadog/tracing/transport/http/statistics.rb +47 -0
  183. data/lib/datadog/tracing/transport/http/traces.rb +152 -0
  184. data/lib/datadog/tracing/transport/http.rb +124 -0
  185. data/lib/datadog/tracing/transport/io/client.rb +89 -0
  186. data/lib/datadog/tracing/transport/io/response.rb +27 -0
  187. data/lib/datadog/tracing/transport/io/traces.rb +101 -0
  188. data/lib/datadog/tracing/transport/io.rb +30 -0
  189. data/lib/datadog/tracing/transport/serializable_trace.rb +126 -0
  190. data/lib/datadog/tracing/transport/statistics.rb +77 -0
  191. data/lib/datadog/tracing/transport/trace_formatter.rb +209 -0
  192. data/lib/datadog/tracing/transport/traces.rb +224 -0
  193. data/lib/datadog/tracing/workers/trace_writer.rb +5 -3
  194. data/lib/datadog/tracing/workers.rb +3 -2
  195. data/lib/datadog/tracing/writer.rb +5 -2
  196. data/lib/ddtrace/transport/ext.rb +17 -15
  197. data/lib/ddtrace/version.rb +2 -2
  198. data/lib/ddtrace.rb +1 -1
  199. metadata +73 -96
  200. data/lib/datadog/ci/configuration/components.rb +0 -32
  201. data/lib/datadog/ci/configuration/settings.rb +0 -51
  202. data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +0 -35
  203. data/lib/datadog/ci/contrib/cucumber/ext.rb +0 -22
  204. data/lib/datadog/ci/contrib/cucumber/formatter.rb +0 -94
  205. data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +0 -28
  206. data/lib/datadog/ci/contrib/cucumber/integration.rb +0 -47
  207. data/lib/datadog/ci/contrib/cucumber/patcher.rb +0 -27
  208. data/lib/datadog/ci/contrib/minitest/configuration/settings.rb +0 -35
  209. data/lib/datadog/ci/contrib/minitest/ext.rb +0 -21
  210. data/lib/datadog/ci/contrib/minitest/integration.rb +0 -49
  211. data/lib/datadog/ci/contrib/minitest/patcher.rb +0 -27
  212. data/lib/datadog/ci/contrib/minitest/test_helper.rb +0 -68
  213. data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +0 -35
  214. data/lib/datadog/ci/contrib/rspec/example.rb +0 -68
  215. data/lib/datadog/ci/contrib/rspec/ext.rb +0 -21
  216. data/lib/datadog/ci/contrib/rspec/integration.rb +0 -48
  217. data/lib/datadog/ci/contrib/rspec/patcher.rb +0 -27
  218. data/lib/datadog/ci/ext/app_types.rb +0 -9
  219. data/lib/datadog/ci/ext/environment.rb +0 -575
  220. data/lib/datadog/ci/ext/settings.rb +0 -10
  221. data/lib/datadog/ci/ext/test.rb +0 -35
  222. data/lib/datadog/ci/extensions.rb +0 -19
  223. data/lib/datadog/ci/flush.rb +0 -38
  224. data/lib/datadog/ci/test.rb +0 -81
  225. data/lib/datadog/ci.rb +0 -21
  226. data/lib/datadog/core/configuration/dependency_resolver.rb +0 -28
  227. data/lib/datadog/core/configuration/option_definition_set.rb +0 -22
  228. data/lib/datadog/core/configuration/option_set.rb +0 -10
  229. data/lib/datadog/core/transport/config.rb +0 -58
  230. data/lib/datadog/core/transport/http/api.rb +0 -57
  231. data/lib/datadog/core/transport/http/client.rb +0 -45
  232. data/lib/datadog/core/transport/http/config.rb +0 -278
  233. data/lib/datadog/core/transport/http/negotiation.rb +0 -144
  234. data/lib/datadog/core/transport/http.rb +0 -169
  235. data/lib/datadog/core/utils/object_set.rb +0 -43
  236. data/lib/datadog/core/utils/string_table.rb +0 -47
  237. data/lib/datadog/profiling/backtrace_location.rb +0 -34
  238. data/lib/datadog/profiling/buffer.rb +0 -43
  239. data/lib/datadog/profiling/collectors/old_stack.rb +0 -301
  240. data/lib/datadog/profiling/encoding/profile.rb +0 -41
  241. data/lib/datadog/profiling/event.rb +0 -15
  242. data/lib/datadog/profiling/events/stack.rb +0 -82
  243. data/lib/datadog/profiling/old_recorder.rb +0 -107
  244. data/lib/datadog/profiling/pprof/builder.rb +0 -125
  245. data/lib/datadog/profiling/pprof/converter.rb +0 -102
  246. data/lib/datadog/profiling/pprof/message_set.rb +0 -16
  247. data/lib/datadog/profiling/pprof/payload.rb +0 -20
  248. data/lib/datadog/profiling/pprof/pprof.proto +0 -212
  249. data/lib/datadog/profiling/pprof/pprof_pb.rb +0 -81
  250. data/lib/datadog/profiling/pprof/stack_sample.rb +0 -139
  251. data/lib/datadog/profiling/pprof/string_table.rb +0 -12
  252. data/lib/datadog/profiling/pprof/template.rb +0 -118
  253. data/lib/datadog/profiling/trace_identifiers/ddtrace.rb +0 -43
  254. data/lib/datadog/profiling/trace_identifiers/helper.rb +0 -45
  255. data/lib/ddtrace/transport/http/adapters/net.rb +0 -168
  256. data/lib/ddtrace/transport/http/adapters/registry.rb +0 -27
  257. data/lib/ddtrace/transport/http/adapters/test.rb +0 -85
  258. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +0 -77
  259. data/lib/ddtrace/transport/http/api/endpoint.rb +0 -29
  260. data/lib/ddtrace/transport/http/api/fallbacks.rb +0 -24
  261. data/lib/ddtrace/transport/http/api/instance.rb +0 -35
  262. data/lib/ddtrace/transport/http/api/map.rb +0 -16
  263. data/lib/ddtrace/transport/http/api/spec.rb +0 -17
  264. data/lib/ddtrace/transport/http/api.rb +0 -39
  265. data/lib/ddtrace/transport/http/builder.rb +0 -176
  266. data/lib/ddtrace/transport/http/client.rb +0 -52
  267. data/lib/ddtrace/transport/http/env.rb +0 -58
  268. data/lib/ddtrace/transport/http/response.rb +0 -58
  269. data/lib/ddtrace/transport/http/statistics.rb +0 -43
  270. data/lib/ddtrace/transport/http/traces.rb +0 -144
  271. data/lib/ddtrace/transport/http.rb +0 -117
  272. data/lib/ddtrace/transport/io/client.rb +0 -85
  273. data/lib/ddtrace/transport/io/response.rb +0 -25
  274. data/lib/ddtrace/transport/io/traces.rb +0 -99
  275. data/lib/ddtrace/transport/io.rb +0 -28
  276. data/lib/ddtrace/transport/parcel.rb +0 -20
  277. data/lib/ddtrace/transport/request.rb +0 -15
  278. data/lib/ddtrace/transport/response.rb +0 -60
  279. data/lib/ddtrace/transport/serializable_trace.rb +0 -122
  280. data/lib/ddtrace/transport/statistics.rb +0 -75
  281. data/lib/ddtrace/transport/trace_formatter.rb +0 -207
  282. data/lib/ddtrace/transport/traces.rb +0 -216
@@ -20,7 +20,8 @@ module Datadog
20
20
  end
21
21
 
22
22
  def self.loaded?
23
- !defined?(::Concurrent::Future).nil?
23
+ # Concurrent::Future is deprecated in favour of Concurrent::Promises::Future
24
+ !defined?(::Concurrent::Promises::Future).nil? || !defined?(::Concurrent::Future).nil?
24
25
  end
25
26
 
26
27
  def self.compatible?
@@ -19,11 +19,18 @@ module Datadog
19
19
  def patch
20
20
  require_relative 'future_patch'
21
21
  patch_future
22
+ require_relative 'promises_future_patch'
23
+ patch_promises_future
22
24
  end
23
25
 
24
26
  # Propagate tracing context in Concurrent::Future
25
27
  def patch_future
26
- ::Concurrent::Future.include(FuturePatch)
28
+ ::Concurrent::Future.prepend(FuturePatch) if defined?(::Concurrent::Future)
29
+ end
30
+
31
+ # Propagate tracing context in Concurrent::Promises::Future
32
+ def patch_promises_future
33
+ ::Concurrent::Promises.singleton_class.prepend(PromisesFuturePatch) if defined?(::Concurrent::Promises::Future)
27
34
  end
28
35
  end
29
36
  end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'context_composite_executor_service'
4
+
5
+ module Datadog
6
+ module Tracing
7
+ module Contrib
8
+ module ConcurrentRuby
9
+ # This patches the Future - to wrap executor service using ContextCompositeExecutorService
10
+ module PromisesFuturePatch
11
+ def future_on(default_executor, *args, &task)
12
+ unless default_executor.is_a?(ContextCompositeExecutorService)
13
+ default_executor = ContextCompositeExecutorService.new(default_executor)
14
+ end
15
+
16
+ super(default_executor, *args, &task)
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -18,7 +18,7 @@ module Datadog
18
18
  option :service_name
19
19
 
20
20
  def configure(options = {})
21
- self.class.options.dependency_order.each do |name|
21
+ self.class.options.each do |name, _value|
22
22
  self[name] = options[name] if options.key?(name)
23
23
  end
24
24
 
@@ -42,6 +42,12 @@ module Datadog
42
42
  o.type :string, nilable: true
43
43
  o.env Ext::ENV_PEER_SERVICE
44
44
  end
45
+
46
+ option :command_enabled do |o|
47
+ o.type :bool
48
+ o.env Ext::ENV_COMMAND_ENABLED
49
+ o.default false
50
+ end
45
51
  end
46
52
  end
47
53
  end
@@ -7,9 +7,16 @@ module Datadog
7
7
  # Dalli integration constants
8
8
  # @public_api Changing resource names, tag names, or environment variables creates breaking changes.
9
9
  module Ext
10
+ # DEV: Even though this is the dalli integration, all spans are named `memcached.*`.
11
+ # DEV: This happens because such spans have special treatment in backend, with memcached-specific handling.
12
+ # DEV: If add support for the `memcached` gem (not popular as of 2023), we'll have issues with span naming
13
+ # DEV: conflicts.
10
14
  ENV_ENABLED = 'DD_TRACE_DALLI_ENABLED'
11
15
  ENV_ANALYTICS_ENABLED = 'DD_TRACE_DALLI_ANALYTICS_ENABLED'
12
16
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_DALLI_ANALYTICS_SAMPLE_RATE'
17
+ # DEV: This is named `*_MEMCACHED_*` because the spans it refer to are `memcached.*` and this variable
18
+ # DEV: is a global flag that affects all memcached spans generated by any Datadog product.
19
+ ENV_COMMAND_ENABLED = 'DD_TRACE_MEMCACHED_COMMAND_ENABLED'
13
20
  ENV_SERVICE_NAME = 'DD_TRACE_DALLI_SERVICE_NAME'
14
21
  ENV_PEER_SERVICE = 'DD_TRACE_DALLI_PEER_SERVICE'
15
22
 
@@ -29,6 +29,11 @@ module Datadog
29
29
  )
30
30
  end
31
31
 
32
+ # Tag original global service name if not used
33
+ if span.service != Datadog.configuration.service
34
+ span.set_tag(Tracing::Contrib::Ext::Metadata::TAG_BASE_SERVICE, Datadog.configuration.service)
35
+ end
36
+
32
37
  span.set_tag(Tracing::Metadata::Ext::TAG_KIND, Tracing::Metadata::Ext::SpanKind::TAG_CLIENT)
33
38
 
34
39
  span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
@@ -45,8 +50,10 @@ module Datadog
45
50
 
46
51
  span.set_tag(Contrib::Ext::DB::TAG_SYSTEM, Ext::TAG_SYSTEM)
47
52
 
48
- cmd = Quantize.format_command(op, args)
49
- span.set_tag(Ext::TAG_COMMAND, cmd)
53
+ if datadog_configuration[:command_enabled]
54
+ cmd = Quantize.format_command(op, args)
55
+ span.set_tag(Ext::TAG_COMMAND, cmd)
56
+ end
50
57
 
51
58
  Contrib::SpanAttributeSchema.set_peer_service!(span, Ext::PEER_SERVICE_SOURCES)
52
59
  super
@@ -34,7 +34,7 @@ module Datadog
34
34
  option :client_service_name
35
35
  option :error_handler do |o|
36
36
  o.type :proc
37
- o.experimental_default_proc(&Tracing::SpanOperation::Events::DEFAULT_ON_ERROR)
37
+ o.default_proc(&Tracing::SpanOperation::Events::DEFAULT_ON_ERROR)
38
38
  end
39
39
  end
40
40
  end
@@ -77,6 +77,11 @@ module Datadog
77
77
  )
78
78
  end
79
79
 
80
+ # Tag original global service name if not used
81
+ if span.service != Datadog.configuration.service
82
+ span.set_tag(Tracing::Contrib::Ext::Metadata::TAG_BASE_SERVICE, Datadog.configuration.service)
83
+ end
84
+
80
85
  span.span_type = Datadog::Tracing::Contrib::Elasticsearch::Ext::SPAN_TYPE_QUERY
81
86
 
82
87
  span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
@@ -136,6 +136,11 @@ module Datadog
136
136
  )
137
137
  end
138
138
 
139
+ # Tag original global service name if not used
140
+ if span.service != Datadog.configuration.service
141
+ span.set_tag(Tracing::Contrib::Ext::Metadata::TAG_BASE_SERVICE, Datadog.configuration.service)
142
+ end
143
+
139
144
  # Set analytics sample rate
140
145
  Contrib::Analytics.set_sample_rate(span, analytics_sample_rate) if analytics_enabled?
141
146
 
@@ -69,6 +69,14 @@ module Datadog
69
69
 
70
70
  @datadog_multi_span.set_tag(Tracing::Metadata::Ext::TAG_KIND, Tracing::Metadata::Ext::SpanKind::TAG_CLIENT)
71
71
 
72
+ # Tag original global service name if not used
73
+ if @datadog_multi_span.service != Datadog.configuration.service
74
+ @datadog_multi_span.set_tag(
75
+ Tracing::Contrib::Ext::Metadata::TAG_BASE_SERVICE,
76
+ Datadog.configuration.service
77
+ )
78
+ end
79
+
72
80
  # Set analytics sample rate
73
81
  Contrib::Analytics.set_sample_rate(@datadog_multi_span, analytics_sample_rate) if analytics_enabled?
74
82
 
@@ -121,6 +121,11 @@ module Datadog
121
121
  )
122
122
  end
123
123
 
124
+ # Tag original global service name if not used
125
+ if span.service != Datadog.configuration.service
126
+ span.set_tag(Tracing::Contrib::Ext::Metadata::TAG_BASE_SERVICE, Datadog.configuration.service)
127
+ end
128
+
124
129
  span.set_tag(Tracing::Metadata::Ext::TAG_KIND, Tracing::Metadata::Ext::SpanKind::TAG_CLIENT)
125
130
 
126
131
  span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
@@ -45,6 +45,9 @@ module Datadog
45
45
 
46
46
  # Value of tag from which peer.service value was remapped from
47
47
  TAG_PEER_SERVICE_REMAP = '_dd.peer.service.remapped_from'
48
+
49
+ # Set equal to the global service when contrib span.service is overriden
50
+ TAG_BASE_SERVICE = '_dd.base_service'
48
51
  end
49
52
  end
50
53
  end
@@ -36,7 +36,7 @@ module Datadog
36
36
  option :distributed_tracing, default: true, type: :bool
37
37
  option :error_handler do |o|
38
38
  o.type :proc
39
- o.experimental_default_proc(&DEFAULT_ERROR_HANDLER)
39
+ o.default_proc(&DEFAULT_ERROR_HANDLER)
40
40
  end
41
41
  option :split_by_domain, default: false, type: :bool
42
42
 
@@ -47,6 +47,11 @@ module Datadog
47
47
  )
48
48
  end
49
49
 
50
+ # Tag original global service name if not used
51
+ if span.service != Datadog.configuration.service
52
+ span.set_tag(Tracing::Contrib::Ext::Metadata::TAG_BASE_SERVICE, Datadog.configuration.service)
53
+ end
54
+
50
55
  span.set_tag(Tracing::Metadata::Ext::TAG_KIND, Tracing::Metadata::Ext::SpanKind::TAG_CLIENT)
51
56
 
52
57
  span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
@@ -48,7 +48,27 @@ module Datadog
48
48
 
49
49
  option :error_handler do |o|
50
50
  o.type :proc
51
- o.experimental_default_proc(&Tracing::SpanOperation::Events::DEFAULT_ON_ERROR)
51
+ o.default_proc(&Tracing::SpanOperation::Events::DEFAULT_ON_ERROR)
52
+ o.after_set do |value|
53
+ if value != Tracing::SpanOperation::Events::DEFAULT_ON_ERROR
54
+ Datadog.logger.warn(
55
+ 'The gRPC `error_handler` setting has been deprecated for removal. Please replace ' \
56
+ 'it with `server_error_handler` which is explicit about only handling errors from ' \
57
+ 'server interceptors. Alternatively, to handle errors from client interceptors use ' \
58
+ 'the `client_error_handler` setting instead.'
59
+ )
60
+ end
61
+ end
62
+ end
63
+
64
+ option :server_error_handler do |o|
65
+ o.type :proc
66
+ o.default_proc(&Tracing::SpanOperation::Events::DEFAULT_ON_ERROR)
67
+ end
68
+
69
+ option :client_error_handler do |o|
70
+ o.type :proc
71
+ o.default_proc(&Tracing::SpanOperation::Events::DEFAULT_ON_ERROR)
52
72
  end
53
73
  end
54
74
  end
@@ -22,7 +22,8 @@ module Datadog
22
22
  options = {
23
23
  span_type: Tracing::Metadata::Ext::HTTP::TYPE_OUTBOUND,
24
24
  service: service_name, # Maintain client-side service name configuration
25
- resource: formatter.resource_name
25
+ resource: formatter.resource_name,
26
+ on_error: error_handler
26
27
  }
27
28
 
28
29
  Tracing.trace(Ext::SPAN_CLIENT, **options) do |span, trace|
@@ -56,6 +57,11 @@ module Datadog
56
57
  )
57
58
  end
58
59
 
60
+ # Tag original global service name if not used
61
+ if span.service != Datadog.configuration.service
62
+ span.set_tag(Tracing::Contrib::Ext::Metadata::TAG_BASE_SERVICE, Datadog.configuration.service)
63
+ end
64
+
59
65
  span.set_tag(Tracing::Metadata::Ext::TAG_KIND, Tracing::Metadata::Ext::SpanKind::TAG_CLIENT)
60
66
  span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
61
67
  span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_CLIENT)
@@ -101,6 +107,10 @@ module Datadog
101
107
  Datadog.logger.debug { "Could not parse host:port from #{call}: #{e}" }
102
108
  nil
103
109
  end
110
+
111
+ def error_handler
112
+ Datadog.configuration_for(self, :error_handler) || datadog_configuration[:client_error_handler]
113
+ end
104
114
  end
105
115
  end
106
116
  end
@@ -64,6 +64,11 @@ module Datadog
64
64
  span.set_tag(header, value)
65
65
  end
66
66
 
67
+ # Tag original global service name if not used
68
+ if span.service != Datadog.configuration.service
69
+ span.set_tag(Tracing::Contrib::Ext::Metadata::TAG_BASE_SERVICE, Datadog.configuration.service)
70
+ end
71
+
67
72
  span.set_tag(Tracing::Metadata::Ext::TAG_KIND, Tracing::Metadata::Ext::SpanKind::TAG_SERVER)
68
73
  span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
69
74
  span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_SERVICE)
@@ -81,6 +86,19 @@ module Datadog
81
86
  rescue StandardError => e
82
87
  Datadog.logger.debug("GRPC server trace failed: #{e}")
83
88
  end
89
+
90
+ def error_handler
91
+ self_handler = Datadog.configuration_for(self, :error_handler)
92
+ return self_handler if self_handler
93
+
94
+ unless datadog_configuration.using_default?(:server_error_handler)
95
+ return datadog_configuration[:server_error_handler]
96
+ end
97
+
98
+ # As a last resort, fallback to the deprecated error_handler
99
+ # configuration option.
100
+ datadog_configuration[:error_handler]
101
+ end
84
102
  end
85
103
  end
86
104
  end
@@ -58,10 +58,6 @@ module Datadog
58
58
  datadog_configuration[:analytics_sample_rate]
59
59
  end
60
60
 
61
- def error_handler
62
- datadog_configuration[:error_handler]
63
- end
64
-
65
61
  # Allows interceptors to define settings using methods instead of `[]`
66
62
  class PinAdapter
67
63
  OPTIONS = Configuration::Settings.instance_methods(false).freeze
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative '../../../../ddtrace/transport/ext'
3
+ require_relative '../../../core/transport/ext'
4
4
 
5
5
  module Datadog
6
6
  module Tracing
@@ -24,8 +24,8 @@ module Datadog
24
24
  # TODO: We don't want this kind of soft-check on HTTP requests.
25
25
  # Remove this when transport implements its own "skip tracing" mechanism.
26
26
  def internal_request?(request)
27
- !!(request[Datadog::Transport::Ext::HTTP::HEADER_META_TRACER_VERSION] ||
28
- request[Transport::Ext::HTTP::HEADER_DD_INTERNAL_UNTRACED_REQUEST])
27
+ !!(request[Datadog::Core::Transport::Ext::HTTP::HEADER_META_TRACER_VERSION] ||
28
+ request[Datadog::Core::Transport::Ext::HTTP::HEADER_DD_INTERNAL_UNTRACED_REQUEST])
29
29
  end
30
30
 
31
31
  def should_skip_distributed_tracing?(client_config)
@@ -76,6 +76,11 @@ module Datadog
76
76
  )
77
77
  end
78
78
 
79
+ # Tag original global service name if not used
80
+ if span.service != Datadog.configuration.service
81
+ span.set_tag(Tracing::Contrib::Ext::Metadata::TAG_BASE_SERVICE, Datadog.configuration.service)
82
+ end
83
+
79
84
  span.set_tag(Tracing::Metadata::Ext::TAG_KIND, Tracing::Metadata::Ext::SpanKind::TAG_CLIENT)
80
85
 
81
86
  span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
@@ -58,6 +58,11 @@ module Datadog
58
58
  )
59
59
  end
60
60
 
61
+ # Tag original global service name if not used
62
+ if span.service != Datadog.configuration.service
63
+ span.set_tag(Tracing::Contrib::Ext::Metadata::TAG_BASE_SERVICE, Datadog.configuration.service)
64
+ end
65
+
61
66
  span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
62
67
  span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_REQUEST)
63
68
 
@@ -58,6 +58,11 @@ module Datadog
58
58
  )
59
59
  end
60
60
 
61
+ # Tag original global service name if not used
62
+ if span.service != Datadog.configuration.service
63
+ span.set_tag(Tracing::Contrib::Ext::Metadata::TAG_BASE_SERVICE, Datadog.configuration.service)
64
+ end
65
+
61
66
  span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
62
67
  span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_REQUEST)
63
68
 
@@ -11,6 +11,7 @@ module Datadog
11
11
  # `MongoCommandSubscriber` listens to all events from the `Monitoring`
12
12
  # system available in the Mongo driver.
13
13
  class MongoCommandSubscriber
14
+ # rubocop:disable Metrics/AbcSize
14
15
  def started(event)
15
16
  return unless Tracing.enabled?
16
17
 
@@ -36,6 +37,11 @@ module Datadog
36
37
  )
37
38
  end
38
39
 
40
+ # Tag original global service name if not used
41
+ if span.service != Datadog.configuration.service
42
+ span.set_tag(Tracing::Contrib::Ext::Metadata::TAG_BASE_SERVICE, Datadog.configuration.service)
43
+ end
44
+
39
45
  span.set_tag(Contrib::Ext::DB::TAG_SYSTEM, Ext::TAG_SYSTEM)
40
46
 
41
47
  span.set_tag(Tracing::Metadata::Ext::TAG_KIND, Tracing::Metadata::Ext::SpanKind::TAG_CLIENT)
@@ -63,6 +69,7 @@ module Datadog
63
69
  # set the resource with the quantized query
64
70
  span.resource = serialized_query
65
71
  end
72
+ # rubocop:enable Metrics/AbcSize
66
73
 
67
74
  def failed(event)
68
75
  span = get_span(event)
@@ -33,6 +33,11 @@ module Datadog
33
33
  )
34
34
  end
35
35
 
36
+ # Tag original global service name if not used
37
+ if span.service != Datadog.configuration.service
38
+ span.set_tag(Tracing::Contrib::Ext::Metadata::TAG_BASE_SERVICE, Datadog.configuration.service)
39
+ end
40
+
36
41
  span.set_tag(Contrib::Ext::DB::TAG_SYSTEM, Ext::TAG_SYSTEM)
37
42
  span.set_tag(Tracing::Metadata::Ext::TAG_KIND, Tracing::Metadata::Ext::SpanKind::TAG_CLIENT)
38
43
 
@@ -48,12 +53,17 @@ module Datadog
48
53
  span.set_tag(Tracing::Metadata::Ext::NET::TAG_TARGET_HOST, query_options[:host])
49
54
  span.set_tag(Tracing::Metadata::Ext::NET::TAG_TARGET_PORT, query_options[:port])
50
55
 
56
+ Contrib::SpanAttributeSchema.set_peer_service!(span, Ext::PEER_SERVICE_SOURCES)
57
+
51
58
  propagation_mode = Contrib::Propagation::SqlComment::Mode.new(comment_propagation)
52
59
 
53
60
  Contrib::Propagation::SqlComment.annotate!(span, propagation_mode)
54
- sql = Contrib::Propagation::SqlComment.prepend_comment(sql, span, trace_op, propagation_mode)
55
-
56
- Contrib::SpanAttributeSchema.set_peer_service!(span, Ext::PEER_SERVICE_SOURCES)
61
+ sql = Contrib::Propagation::SqlComment.prepend_comment(
62
+ sql,
63
+ span,
64
+ trace_op,
65
+ propagation_mode
66
+ )
57
67
 
58
68
  super(sql, options)
59
69
  end
@@ -18,8 +18,8 @@ module Datadog
18
18
  register_as :opensearch, auto_patch: true
19
19
 
20
20
  def self.version
21
- Gem.loaded_specs['opensearch-transport'] \
22
- && Gem.loaded_specs['opensearch-transport'].version
21
+ Gem.loaded_specs['opensearch-ruby'] \
22
+ && Gem.loaded_specs['opensearch-ruby'].version
23
23
  end
24
24
 
25
25
  def self.loaded?
@@ -28,6 +28,7 @@ module Datadog
28
28
  # Patches OpenSearch::Transport::Client module
29
29
  module Client
30
30
  # rubocop:disable Metrics/MethodLength
31
+ # rubocop:disable Metrics/AbcSize
31
32
  def perform_request(method, path, params = {}, body = nil, headers = nil)
32
33
  response = nil
33
34
  # rubocop:disable Metrics/BlockLength
@@ -61,6 +62,11 @@ module Datadog
61
62
  )
62
63
  end
63
64
 
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
69
+
64
70
  # Set url tags
65
71
  span.set_tag(OpenSearch::Ext::TAG_URL, url)
66
72
  span.set_tag(OpenSearch::Ext::TAG_HOST, host)
@@ -94,6 +100,7 @@ module Datadog
94
100
  end
95
101
  end
96
102
  # rubocop:enable Metrics/BlockLength
103
+ # rubocop:enable Metrics/AbcSize
97
104
  response
98
105
  end
99
106
 
@@ -129,6 +129,11 @@ module Datadog
129
129
  )
130
130
  end
131
131
 
132
+ # Tag original global service name if not used
133
+ if span.service != Datadog.configuration.service
134
+ span.set_tag(Tracing::Contrib::Ext::Metadata::TAG_BASE_SERVICE, Datadog.configuration.service)
135
+ end
136
+
132
137
  span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
133
138
  span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_QUERY)
134
139
  span.set_tag(Tracing::Metadata::Ext::TAG_KIND, Tracing::Metadata::Ext::SpanKind::TAG_CLIENT)
@@ -90,6 +90,11 @@ module Datadog
90
90
  )
91
91
  end
92
92
 
93
+ # Tag original global service name if not used
94
+ if span.service != Datadog.configuration.service
95
+ span.set_tag(Tracing::Contrib::Ext::Metadata::TAG_BASE_SERVICE, Datadog.configuration.service)
96
+ end
97
+
93
98
  if (host_port = @options[:server])
94
99
  host, port = Core::Utils.extract_host_port(host_port)
95
100
  if host && port
@@ -21,7 +21,7 @@ module Datadog
21
21
  return sql unless mode.enabled?
22
22
 
23
23
  tags = {
24
- Ext::KEY_DATABASE_SERVICE => span_op.service,
24
+ Ext::KEY_DATABASE_SERVICE => span_op.get_tag(Tracing::Metadata::Ext::TAG_PEER_SERVICE) || span_op.service,
25
25
  Ext::KEY_ENVIRONMENT => datadog_configuration.env,
26
26
  Ext::KEY_PARENT_SERVICE => datadog_configuration.service,
27
27
  Ext::KEY_VERSION => datadog_configuration.version
@@ -46,7 +46,7 @@ module Datadog
46
46
 
47
47
  option :error_handler do |o|
48
48
  o.type :proc
49
- o.experimental_default_proc(&Tracing::SpanOperation::Events::DEFAULT_ON_ERROR)
49
+ o.default_proc(&Tracing::SpanOperation::Events::DEFAULT_ON_ERROR)
50
50
  end
51
51
  end
52
52
  end
@@ -48,6 +48,11 @@ module Datadog
48
48
  # Measure service stats
49
49
  Contrib::Analytics.set_measured(span)
50
50
 
51
+ # Tag original global service name if not used
52
+ if span.service != Datadog.configuration.service
53
+ span.set_tag(Tracing::Contrib::Ext::Metadata::TAG_BASE_SERVICE, Datadog.configuration.service)
54
+ end
55
+
51
56
  span.set_tag(Ext::TAG_TOPIC, payload[:topic])
52
57
  span.set_tag(Ext::TAG_CONSUMER, payload[:consumer_class])
53
58
  span.set_tag(Ext::TAG_PARTITION, payload[:partition])
@@ -37,10 +37,20 @@ module Datadog
37
37
  whitelist = configuration[:headers][:response] || []
38
38
  whitelist.each_with_object({}) do |header, result|
39
39
  header_value = headers[header]
40
- unless header_value.nil?
41
- header_tag = Tracing::Metadata::Ext::HTTP::ResponseHeaders.to_tag(header)
42
- result[header_tag] = header_value
43
- end
40
+
41
+ next if header_value.nil?
42
+
43
+ header_tag = Tracing::Metadata::Ext::HTTP::ResponseHeaders.to_tag(header)
44
+
45
+ # Maintain the value format between Rack 2 and 3
46
+ #
47
+ # Rack 2.x => { 'foo' => 'bar,baz' }
48
+ # Rack 3.x => { 'foo' => ['bar', 'baz'] }
49
+ result[header_tag] = if header_value.is_a? Array
50
+ header_value.join(',')
51
+ else
52
+ header_value
53
+ end
44
54
  end
45
55
  end
46
56
 
@@ -32,7 +32,7 @@ module Datadog
32
32
  option :analytics_enabled do |o|
33
33
  o.type :bool, nilable: true
34
34
  o.env Ext::ENV_ANALYTICS_ENABLED
35
- o.on_set do |value|
35
+ o.after_set do |value|
36
36
  # Update ActionPack analytics too
37
37
  Datadog.configuration.tracing[:action_pack][:analytics_enabled] = value
38
38
  end
@@ -42,7 +42,7 @@ module Datadog
42
42
  o.type :float
43
43
  o.env Ext::ENV_ANALYTICS_SAMPLE_RATE
44
44
  o.default 1.0
45
- o.on_set do |value|
45
+ o.after_set do |value|
46
46
  # Update ActionPack analytics too
47
47
  Datadog.configuration.tracing[:action_pack][:analytics_sample_rate] = value
48
48
  end
@@ -55,7 +55,7 @@ module Datadog
55
55
  end
56
56
  # DEV-2.0: Breaking changes for removal.
57
57
  option :exception_controller do |o|
58
- o.on_set do |value|
58
+ o.after_set do |value|
59
59
  if value
60
60
  Datadog::Core.log_deprecation do
61
61
  'The error controller is now automatically detected. '\
@@ -70,7 +70,7 @@ module Datadog
70
70
  option :template_base_path do |o|
71
71
  o.type :string
72
72
  o.default 'views/'
73
- o.on_set do |value|
73
+ o.after_set do |value|
74
74
  # Update ActionView template base path too
75
75
  Datadog.configuration.tracing[:action_view][:template_base_path] = value
76
76
  end
@@ -41,7 +41,7 @@ module Datadog
41
41
  option :tasks do |o|
42
42
  o.type :array
43
43
  o.default []
44
- o.on_set do |value|
44
+ o.after_set do |value|
45
45
  # DEV: It should be possible to modify the value after it's set. E.g. for normalization.
46
46
  options[:tasks].instance_variable_set(:@value, value.map(&:to_s).to_set)
47
47
  end
@@ -32,7 +32,7 @@ module Datadog
32
32
  option :command_args do |o|
33
33
  o.type :bool
34
34
  o.env Ext::ENV_COMMAND_ARGS
35
- o.default true
35
+ o.default false
36
36
  end
37
37
 
38
38
  option :service_name do |o|