datadog 2.31.0 → 2.33.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 (202) hide show
  1. checksums.yaml +4 -4
  2. data/ext/datadog_profiling_native_extension/clock_id.h +9 -1
  3. data/ext/datadog_profiling_native_extension/clock_id_from_mach.c +73 -0
  4. data/ext/datadog_profiling_native_extension/clock_id_from_pthread.c +1 -1
  5. data/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +17 -7
  6. data/ext/datadog_profiling_native_extension/collectors_thread_context.c +16 -5
  7. data/ext/datadog_profiling_native_extension/collectors_thread_context.h +6 -0
  8. data/ext/datadog_profiling_native_extension/extconf.rb +8 -4
  9. data/ext/datadog_profiling_native_extension/http_transport.c +10 -5
  10. data/ext/datadog_profiling_native_extension/stack_recorder.c +3 -9
  11. data/ext/datadog_profiling_native_extension/time_helpers.h +1 -0
  12. data/ext/libdatadog_api/crashtracker.c +2 -0
  13. data/ext/libdatadog_api/di.c +48 -0
  14. data/ext/libdatadog_api/extconf.rb +7 -4
  15. data/ext/libdatadog_extconf_helpers.rb +38 -1
  16. data/lib/datadog/ai_guard/autoload.rb +10 -0
  17. data/lib/datadog/ai_guard/component.rb +1 -1
  18. data/lib/datadog/ai_guard/configuration.rb +105 -2
  19. data/lib/datadog/ai_guard/contrib/auto_instrument.rb +24 -0
  20. data/lib/datadog/ai_guard/contrib/rack/integration.rb +42 -0
  21. data/lib/datadog/ai_guard/contrib/rack/patcher.rb +26 -0
  22. data/lib/datadog/ai_guard/contrib/rack/request_middleware.rb +83 -0
  23. data/lib/datadog/ai_guard/contrib/rails/integration.rb +41 -0
  24. data/lib/datadog/ai_guard/contrib/rails/patcher.rb +97 -0
  25. data/lib/datadog/ai_guard/evaluation.rb +2 -0
  26. data/lib/datadog/ai_guard/ext.rb +2 -0
  27. data/lib/datadog/ai_guard.rb +8 -0
  28. data/lib/datadog/appsec/autoload.rb +1 -1
  29. data/lib/datadog/appsec/component.rb +1 -1
  30. data/lib/datadog/appsec/configuration.rb +414 -1
  31. data/lib/datadog/appsec/contrib/aws_lambda/gateway/watcher.rb +75 -0
  32. data/lib/datadog/appsec/contrib/aws_lambda/integration.rb +39 -0
  33. data/lib/datadog/appsec/contrib/aws_lambda/patcher.rb +30 -0
  34. data/lib/datadog/appsec/contrib/aws_lambda/waf_addresses.rb +111 -0
  35. data/lib/datadog/appsec/contrib/devise/patches/signin_tracking_patch.rb +2 -1
  36. data/lib/datadog/appsec/contrib/rack/gateway/request.rb +1 -1
  37. data/lib/datadog/appsec/contrib/rails/patcher.rb +2 -2
  38. data/lib/datadog/appsec/metrics/telemetry.rb +13 -1
  39. data/lib/datadog/appsec/security_engine/runner.rb +1 -1
  40. data/lib/datadog/appsec/trace_keeper.rb +18 -6
  41. data/lib/datadog/appsec/utils/http/url_encoded.rb +2 -2
  42. data/lib/datadog/appsec.rb +1 -0
  43. data/lib/datadog/core/configuration/components.rb +1 -1
  44. data/lib/datadog/core/configuration/settings.rb +13 -0
  45. data/lib/datadog/core/configuration/supported_configurations.rb +4 -0
  46. data/lib/datadog/core/configuration.rb +1 -1
  47. data/lib/datadog/core/contrib/rails/utils.rb +1 -1
  48. data/lib/datadog/core/crashtracking/component.rb +3 -3
  49. data/lib/datadog/core/diagnostics/environment_logger.rb +3 -1
  50. data/lib/datadog/core/environment/container.rb +2 -2
  51. data/lib/datadog/core/environment/ext.rb +1 -0
  52. data/lib/datadog/core/environment/socket.rb +13 -0
  53. data/lib/datadog/core/feature_flags.rb +1 -1
  54. data/lib/datadog/core/metrics/client.rb +5 -5
  55. data/lib/datadog/core/remote/client.rb +1 -1
  56. data/lib/datadog/core/remote/component.rb +2 -2
  57. data/lib/datadog/core/runtime/metrics.rb +1 -1
  58. data/lib/datadog/core/telemetry/emitter.rb +1 -1
  59. data/lib/datadog/core/telemetry/event/app_started.rb +2 -2
  60. data/lib/datadog/core/transport/http.rb +2 -0
  61. data/lib/datadog/core/utils.rb +1 -1
  62. data/lib/datadog/core/workers/async.rb +1 -1
  63. data/lib/datadog/core.rb +1 -1
  64. data/lib/datadog/data_streams/configuration.rb +40 -1
  65. data/lib/datadog/data_streams/pathway_context.rb +1 -1
  66. data/lib/datadog/data_streams/processor.rb +1 -1
  67. data/lib/datadog/data_streams.rb +1 -1
  68. data/lib/datadog/di/base.rb +8 -5
  69. data/lib/datadog/di/code_tracker.rb +179 -1
  70. data/lib/datadog/di/component.rb +1 -1
  71. data/lib/datadog/di/configuration.rb +235 -2
  72. data/lib/datadog/di/instrumenter.rb +46 -26
  73. data/lib/datadog/di/probe_builder.rb +1 -1
  74. data/lib/datadog/di/probe_file_loader.rb +2 -2
  75. data/lib/datadog/di/probe_manager.rb +6 -6
  76. data/lib/datadog/di/probe_notification_builder.rb +1 -1
  77. data/lib/datadog/di/probe_notifier_worker.rb +2 -2
  78. data/lib/datadog/di/remote.rb +6 -6
  79. data/lib/datadog/di/serializer.rb +1 -1
  80. data/lib/datadog/di/transport/input.rb +3 -3
  81. data/lib/datadog/error_tracking/configuration.rb +55 -2
  82. data/lib/datadog/kit/enable_core_dumps.rb +1 -1
  83. data/lib/datadog/open_feature/component.rb +18 -1
  84. data/lib/datadog/open_feature/evaluation_engine.rb +3 -3
  85. data/lib/datadog/open_feature/exposures/reporter.rb +1 -1
  86. data/lib/datadog/open_feature/exposures/worker.rb +1 -1
  87. data/lib/datadog/open_feature/hooks/flag_eval_hook.rb +49 -0
  88. data/lib/datadog/open_feature/metrics/flag_eval_metrics.rb +149 -0
  89. data/lib/datadog/open_feature/provider.rb +19 -1
  90. data/lib/datadog/open_feature/remote.rb +1 -1
  91. data/lib/datadog/open_feature/transport.rb +1 -1
  92. data/lib/datadog/opentelemetry/metrics.rb +13 -4
  93. data/lib/datadog/opentelemetry/sdk/configurator.rb +1 -1
  94. data/lib/datadog/opentelemetry/sdk/id_generator.rb +16 -10
  95. data/lib/datadog/opentelemetry/sdk/metrics_exporter.rb +1 -1
  96. data/lib/datadog/profiling/collectors/code_provenance.rb +35 -9
  97. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +31 -2
  98. data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +8 -2
  99. data/lib/datadog/profiling/collectors/info.rb +16 -3
  100. data/lib/datadog/profiling/component.rb +3 -6
  101. data/lib/datadog/profiling/exporter.rb +37 -12
  102. data/lib/datadog/profiling/ext.rb +0 -2
  103. data/lib/datadog/profiling/flush.rb +21 -12
  104. data/lib/datadog/profiling/http_transport.rb +12 -1
  105. data/lib/datadog/profiling/load_native_extension.rb +1 -1
  106. data/lib/datadog/profiling/profiler.rb +13 -1
  107. data/lib/datadog/profiling/scheduler.rb +2 -2
  108. data/lib/datadog/profiling/stack_recorder.rb +0 -4
  109. data/lib/datadog/profiling/tasks/exec.rb +8 -3
  110. data/lib/datadog/profiling/tasks/help.rb +1 -0
  111. data/lib/datadog/profiling/tasks/setup.rb +2 -2
  112. data/lib/datadog/single_step_instrument.rb +1 -1
  113. data/lib/datadog/symbol_database/configuration.rb +65 -0
  114. data/lib/datadog/symbol_database/extractor.rb +906 -0
  115. data/lib/datadog/symbol_database/file_hash.rb +46 -0
  116. data/lib/datadog/symbol_database/logger.rb +43 -0
  117. data/lib/datadog/symbol_database/scope.rb +102 -0
  118. data/lib/datadog/symbol_database/scope_batcher.rb +280 -0
  119. data/lib/datadog/symbol_database/service_version.rb +57 -0
  120. data/lib/datadog/symbol_database/symbol.rb +66 -0
  121. data/lib/datadog/symbol_database/transport/http/endpoint.rb +28 -0
  122. data/lib/datadog/symbol_database/transport/http.rb +45 -0
  123. data/lib/datadog/symbol_database/transport.rb +54 -0
  124. data/lib/datadog/symbol_database/uploader.rb +169 -0
  125. data/lib/datadog/symbol_database.rb +49 -0
  126. data/lib/datadog/tracing/buffer.rb +3 -3
  127. data/lib/datadog/tracing/configuration/settings.rb +1 -1
  128. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +5 -3
  129. data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +1 -1
  130. data/lib/datadog/tracing/contrib/active_job/events/discard.rb +1 -1
  131. data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +1 -1
  132. data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +1 -1
  133. data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +1 -1
  134. data/lib/datadog/tracing/contrib/active_job/events/perform.rb +1 -1
  135. data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +1 -1
  136. data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +1 -1
  137. data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +1 -1
  138. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +2 -2
  139. data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +1 -1
  140. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +1 -1
  141. data/lib/datadog/tracing/contrib/active_record/utils.rb +1 -1
  142. data/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb +1 -1
  143. data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +2 -2
  144. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +1 -1
  145. data/lib/datadog/tracing/contrib/component.rb +1 -1
  146. data/lib/datadog/tracing/contrib/configuration/resolver.rb +7 -4
  147. data/lib/datadog/tracing/contrib/dalli/quantize.rb +1 -1
  148. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +1 -1
  149. data/lib/datadog/tracing/contrib/excon/middleware.rb +2 -2
  150. data/lib/datadog/tracing/contrib/extensions.rb +9 -0
  151. data/lib/datadog/tracing/contrib/faraday/middleware.rb +2 -2
  152. data/lib/datadog/tracing/contrib/grape/endpoint.rb +5 -5
  153. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +2 -2
  154. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +2 -2
  155. data/lib/datadog/tracing/contrib/http/instrumentation.rb +2 -2
  156. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +6 -2
  157. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +2 -2
  158. data/lib/datadog/tracing/contrib/kafka/instrumentation/consumer.rb +2 -2
  159. data/lib/datadog/tracing/contrib/kafka/instrumentation/producer.rb +2 -2
  160. data/lib/datadog/tracing/contrib/karafka/patcher.rb +1 -1
  161. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +3 -3
  162. data/lib/datadog/tracing/contrib/opensearch/patcher.rb +1 -1
  163. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +3 -3
  164. data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +6 -0
  165. data/lib/datadog/tracing/contrib/rack/ext.rb +27 -0
  166. data/lib/datadog/tracing/contrib/rack/patcher.rb +1 -1
  167. data/lib/datadog/tracing/contrib/rack/request_queue.rb +1 -1
  168. data/lib/datadog/tracing/contrib/rack/trace_proxy_middleware.rb +117 -1
  169. data/lib/datadog/tracing/contrib/rails/log_injection.rb +1 -1
  170. data/lib/datadog/tracing/contrib/rails/runner.rb +1 -1
  171. data/lib/datadog/tracing/contrib/rake/instrumentation.rb +2 -2
  172. data/lib/datadog/tracing/contrib/redis/quantize.rb +1 -1
  173. data/lib/datadog/tracing/contrib/redis/tags.rb +1 -1
  174. data/lib/datadog/tracing/contrib/sidekiq/utils.rb +1 -1
  175. data/lib/datadog/tracing/contrib/stripe/request.rb +1 -1
  176. data/lib/datadog/tracing/contrib.rb +8 -0
  177. data/lib/datadog/tracing/diagnostics/environment_logger.rb +3 -1
  178. data/lib/datadog/tracing/distributed/baggage.rb +59 -5
  179. data/lib/datadog/tracing/distributed/datadog.rb +11 -11
  180. data/lib/datadog/tracing/distributed/datadog_tags_codec.rb +1 -1
  181. data/lib/datadog/tracing/distributed/propagation.rb +2 -2
  182. data/lib/datadog/tracing/distributed/trace_context.rb +74 -32
  183. data/lib/datadog/tracing/event.rb +1 -1
  184. data/lib/datadog/tracing/metadata/tagging.rb +2 -2
  185. data/lib/datadog/tracing/pipeline.rb +1 -1
  186. data/lib/datadog/tracing/remote.rb +1 -1
  187. data/lib/datadog/tracing/sampling/rule.rb +1 -1
  188. data/lib/datadog/tracing/sampling/rule_sampler.rb +2 -2
  189. data/lib/datadog/tracing/sampling/span/rule_parser.rb +2 -2
  190. data/lib/datadog/tracing/span_operation.rb +3 -3
  191. data/lib/datadog/tracing/trace_operation.rb +4 -4
  192. data/lib/datadog/tracing/tracer.rb +6 -8
  193. data/lib/datadog/tracing/transport/io/client.rb +1 -1
  194. data/lib/datadog/tracing/workers.rb +2 -1
  195. data/lib/datadog/version.rb +1 -1
  196. metadata +33 -12
  197. data/ext/datadog_profiling_native_extension/clock_id_noop.c +0 -21
  198. data/lib/datadog/ai_guard/configuration/settings.rb +0 -113
  199. data/lib/datadog/appsec/configuration/settings.rb +0 -423
  200. data/lib/datadog/data_streams/configuration/settings.rb +0 -49
  201. data/lib/datadog/di/configuration/settings.rb +0 -243
  202. data/lib/datadog/error_tracking/configuration/settings.rb +0 -63
@@ -8,15 +8,20 @@ module Datadog
8
8
 
9
9
  private
10
10
 
11
- attr_reader :worker, :scheduler
11
+ attr_reader :worker #: Datadog::Profiling::Collectors::CpuAndWallTimeWorker
12
+ attr_reader :scheduler #: Datadog::Profiling::Scheduler
12
13
 
13
14
  public
14
15
 
16
+ # @rbs worker: Datadog::Profiling::Collectors::CpuAndWallTimeWorker
17
+ # @rbs scheduler: Datadog::Profiling::Scheduler
18
+ # @rbs return: void
15
19
  def initialize(worker:, scheduler:)
16
20
  @worker = worker
17
21
  @scheduler = scheduler
18
22
  end
19
23
 
24
+ #: () -> void
20
25
  def start
21
26
  after_fork! do
22
27
  worker.reset_after_fork
@@ -32,6 +37,8 @@ module Datadog
32
37
  scheduler.start(on_failure_proc: proc { component_failed(:scheduler) })
33
38
  end
34
39
 
40
+ # @rbs report_last_profile: bool
41
+ # @rbs return: void
35
42
  def shutdown!(report_last_profile: true)
36
43
  Datadog.logger.debug("Shutting down profiler")
37
44
 
@@ -42,15 +49,20 @@ module Datadog
42
49
 
43
50
  private
44
51
 
52
+ #: () -> void
45
53
  def stop_worker
46
54
  worker.stop
47
55
  end
48
56
 
57
+ #: () -> void
49
58
  def stop_scheduler
50
59
  scheduler.enabled = false
51
60
  scheduler.stop(true)
52
61
  end
53
62
 
63
+ # @rbs failed_component: :worker | :scheduler | ::Symbol
64
+ # @rbs log_failure: bool
65
+ # @rbs return: void
54
66
  def component_failed(failed_component, log_failure: true)
55
67
  if log_failure
56
68
  Datadog.logger.warn(
@@ -65,7 +65,7 @@ module Datadog
65
65
  rescue Exception => e # rubocop:disable Lint/RescueException
66
66
  Datadog.logger.warn(
67
67
  "Profiling::Scheduler thread error. " \
68
- "Cause: #{e.class}: #{e} Location: #{Array(e.backtrace).first}"
68
+ "Cause: #{e.class}: #{e.message} Location: #{Array(e.backtrace).first}"
69
69
  )
70
70
  on_failure_proc&.call
71
71
  Datadog::Core::Telemetry::Logger.report(e, description: "Profiling::Scheduler thread error")
@@ -136,7 +136,7 @@ module Datadog
136
136
  transport.export(flush)
137
137
  rescue => e
138
138
  Datadog.logger.warn(
139
- "Unable to report profile. Cause: #{e.class}: #{e} Location: #{Array(e.backtrace).first}"
139
+ "Unable to report profile. Cause: #{e.class}: #{e.message} Location: #{Array(e.backtrace).first}"
140
140
  )
141
141
  Datadog::Core::Telemetry::Logger.report(e, description: "Unable to report profile")
142
142
  end
@@ -9,7 +9,6 @@ module Datadog
9
9
  # Methods prefixed with _native_ are implemented in `stack_recorder.c`
10
10
  class StackRecorder
11
11
  def initialize(
12
- cpu_time_enabled:,
13
12
  alloc_samples_enabled:,
14
13
  heap_samples_enabled:,
15
14
  heap_size_enabled:,
@@ -27,7 +26,6 @@ module Datadog
27
26
 
28
27
  self.class._native_initialize(
29
28
  self_instance: self,
30
- cpu_time_enabled: cpu_time_enabled,
31
29
  alloc_samples_enabled: alloc_samples_enabled,
32
30
  heap_samples_enabled: heap_samples_enabled,
33
31
  heap_size_enabled: heap_size_enabled,
@@ -38,7 +36,6 @@ module Datadog
38
36
  end
39
37
 
40
38
  def self.for_testing(
41
- cpu_time_enabled: true,
42
39
  alloc_samples_enabled: false,
43
40
  heap_samples_enabled: false,
44
41
  heap_size_enabled: false,
@@ -48,7 +45,6 @@ module Datadog
48
45
  **options
49
46
  )
50
47
  new(
51
- cpu_time_enabled: cpu_time_enabled,
52
48
  alloc_samples_enabled: alloc_samples_enabled,
53
49
  heap_samples_enabled: heap_samples_enabled,
54
50
  heap_size_enabled: heap_size_enabled,
@@ -5,17 +5,20 @@ module Datadog
5
5
  module Tasks
6
6
  # Wraps command with Datadog profiling
7
7
  class Exec
8
- attr_reader :args
8
+ attr_reader :args #: untyped
9
9
 
10
+ #: (untyped) -> void
10
11
  def initialize(args)
11
12
  @args = args
12
13
  end
13
14
 
15
+ #: () -> untyped
14
16
  def run
15
17
  set_rubyopt!
16
18
  exec_with_error_handling(args)
17
19
  end
18
20
 
21
+ #: () -> ::Array["-rdatadog/profiling/preload"]
19
22
  def rubyopts
20
23
  [
21
24
  "-rdatadog/profiling/preload"
@@ -24,6 +27,7 @@ module Datadog
24
27
 
25
28
  private
26
29
 
30
+ #: () -> untyped
27
31
  def set_rubyopt!
28
32
  existing_rubyopt = ENV["RUBYOPT"] # rubocop:disable CustomCops/EnvUsageCop
29
33
 
@@ -35,13 +39,14 @@ module Datadog
35
39
  # See also:
36
40
  # * https://www.gnu.org/software/bash/manual/html_node/Exit-Status.html
37
41
  # * https://github.com/rubygems/rubygems/blob/dd93966cac224532035deda533cba2685dfa30cc/bundler/lib/bundler/cli/exec.rb#L45
42
+ #: (untyped) -> untyped
38
43
  def exec_with_error_handling(args)
39
44
  Kernel.exec(*args)
40
45
  rescue Errno::ENOENT => e
41
- Kernel.warn "ddprofrb exec failed: #{e.class}: #{e} (command was '#{args.join(" ")}')"
46
+ Kernel.warn "ddprofrb exec failed: #{e.class}: #{e.message} (command was '#{args.join(" ")}')"
42
47
  Kernel.exit 127
43
48
  rescue Errno::EACCES, Errno::ENOEXEC => e
44
- Kernel.warn "ddprofrb exec failed: #{e.class}: #{e} (command was '#{args.join(" ")}')"
49
+ Kernel.warn "ddprofrb exec failed: #{e.class}: #{e.message} (command was '#{args.join(" ")}')"
45
50
  Kernel.exit 126
46
51
  end
47
52
  end
@@ -5,6 +5,7 @@ module Datadog
5
5
  module Tasks
6
6
  # Prints help message for usage of `ddprofrb`
7
7
  class Help
8
+ #: () -> untyped
8
9
  def run
9
10
  puts %(
10
11
  Usage: ddprofrb [command] [arguments]
@@ -16,7 +16,7 @@ module Datadog
16
16
  setup_at_fork_hooks
17
17
  rescue StandardError, ScriptError => e
18
18
  Datadog.logger.warn do
19
- "Profiler extensions unavailable. Cause: #{e.class}: #{e} " \
19
+ "Profiler extensions unavailable. Cause: #{e.class}: #{e.message} " \
20
20
  "Location: #{Array(e.backtrace).first}"
21
21
  end
22
22
  Datadog::Core::Telemetry::Logger.report(e, description: "Profiler extensions unavailable")
@@ -31,7 +31,7 @@ module Datadog
31
31
  Profiling.start_if_enabled
32
32
  rescue => e
33
33
  Datadog.logger.warn do
34
- "Error during post-fork hooks. Cause: #{e.class}: #{e} " \
34
+ "Error during post-fork hooks. Cause: #{e.class}: #{e.message} " \
35
35
  "Location: #{Array(e.backtrace).first}"
36
36
  end
37
37
  Datadog::Core::Telemetry::Logger.report(e, description: "Error during post-fork hooks")
@@ -17,5 +17,5 @@ begin
17
17
  require_relative 'auto_instrument'
18
18
  Datadog::SingleStepInstrument.const_set(:LOADED, true)
19
19
  rescue StandardError, LoadError => e
20
- warn "Single step instrumentation failed: #{e.class}: #{e}\n\tSource:\n\t#{Array(e.backtrace).join("\n\t")}"
20
+ warn "Single step instrumentation failed: #{e.class}: #{e.message}\n\tSource:\n\t#{Array(e.backtrace).join("\n\t")}"
21
21
  end
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Datadog
4
+ module SymbolDatabase
5
+ # Configuration for symbol database
6
+ module Configuration
7
+ # Configuration settings for symbol database upload feature.
8
+ #
9
+ # Public environment variable:
10
+ # - DD_SYMBOL_DATABASE_UPLOAD_ENABLED (default: true) - Feature gate
11
+ #
12
+ # Extended into: Core::Configuration::Settings (via extend)
13
+ # Accessed as: Datadog.configuration.symbol_database.enabled
14
+ # Used by: Component.build (checks if feature enabled)
15
+ module Settings
16
+ # Hook called when this module is extended into a class.
17
+ # @param base [Class, Module] The class or module being extended
18
+ # @return [void]
19
+ def self.extended(base)
20
+ base = base.singleton_class unless base.is_a?(Class)
21
+ add_settings!(base)
22
+ end
23
+
24
+ # Add symbol_database settings block to base class.
25
+ # @param base [Class] Base class
26
+ # @return [void]
27
+ def self.add_settings!(base)
28
+ base.class_eval do
29
+ # steep:ignore:start
30
+ settings :symbol_database do
31
+ option :enabled do |o|
32
+ o.type :bool
33
+ o.env 'DD_SYMBOL_DATABASE_UPLOAD_ENABLED'
34
+ o.default true
35
+ end
36
+
37
+ # Settings in the 'internal' group are for internal Datadog
38
+ # use only, and are needed to test symbol database or
39
+ # experiment with features not released to customers.
40
+ settings :internal do
41
+ # Bypass remote config — start extraction immediately.
42
+ # Matches Java's DD_INTERNAL_FORCE_SYMBOL_DATABASE_UPLOAD
43
+ # and Python's private force_upload setting.
44
+ option :force_upload do |o|
45
+ o.type :bool
46
+ o.env 'DD_INTERNAL_FORCE_SYMBOL_DATABASE_UPLOAD'
47
+ o.default false
48
+ end
49
+
50
+ # Enable verbose trace-level logging for symdb operations.
51
+ # Activated by DD_TRACE_DEBUG (same trigger as DI trace logging).
52
+ option :trace_logging do |o|
53
+ o.type :bool
54
+ o.default false
55
+ o.env 'DD_TRACE_DEBUG'
56
+ end
57
+ end
58
+ end
59
+ # steep:ignore:end
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end