Skip to content

[APMAPI-1847] Config visibility on all configurations#5483

Merged
vpellan merged 38 commits into
masterfrom
vpellan/config-visibility-all-configs
Mar 31, 2026
Merged

[APMAPI-1847] Config visibility on all configurations#5483
vpellan merged 38 commits into
masterfrom
vpellan/config-visibility-all-configs

Conversation

@vpellan

@vpellan vpellan commented Mar 20, 2026

Copy link
Copy Markdown
Contributor

What does this PR do?

Report all configs and all their sources through telemetry

Motivation:

This will help us debug customers apps, and this will be used in the configuration panel in Datadog UI to tell users which configs are active (once you're in a service page, Service Config > SDK & Agent Configuration tab)
Combined with Config registry to provide descriptions, and the automated update of telemetry normalization files in dd-go to map them to the correct environment variables, this will provide users with a nice interface to understand the configs that are used in their service, including the default ones.

Change log entry

Yes. Report and display all configurations used by a service in the 'SDK & Agent Configurations' tab of a Ruby service page in Datadog UI

Additional Notes:

How to test the change?

CI

@vpellan
vpellan requested review from a team as code owners March 20, 2026 10:22
@vpellan
vpellan requested review from mabdinur and removed request for a team March 20, 2026 10:22
@github-actions github-actions Bot added core Involves Datadog core libraries integrations Involves tracing integrations tracing otel OpenTelemetry-related changes labels Mar 20, 2026
Comment thread lib/datadog/core/configuration/option.rb Outdated
Comment thread lib/datadog/core/configuration/option.rb Outdated
Comment thread lib/datadog/core/configuration/option_definition.rb Outdated
Comment thread lib/datadog/core/configuration/option_definition.rb Outdated
Comment thread lib/datadog/core/telemetry/event/app_client_configuration_change.rb Outdated
Comment thread lib/datadog/core/telemetry/event/app_started.rb Outdated
Comment thread lib/datadog/core/telemetry/event/app_started.rb Outdated
Comment thread lib/datadog/core/telemetry/event/app_started.rb Outdated
Comment thread lib/datadog/tracing/contrib/configuration/settings.rb Outdated
Comment thread lib/datadog/tracing/contrib/configurable.rb Outdated
@vpellan
vpellan force-pushed the vpellan/config-visibility-existing-reported branch from 6053738 to 94daca9 Compare March 20, 2026 12:23
Comment thread lib/datadog/core/configuration/option.rb Outdated
Comment thread lib/datadog/core/configuration/option_definition.rb
Comment thread lib/datadog/core/telemetry/event/app_started.rb Outdated
Comment thread lib/datadog/core/telemetry/event.rb
Comment thread lib/datadog/core/configuration/option_definition.rb
Comment thread lib/datadog/tracing/contrib/configurable.rb
Base automatically changed from vpellan/config-visibility-existing-reported to master March 24, 2026 11:11
@github-actions

github-actions Bot commented Mar 26, 2026

Copy link
Copy Markdown

Typing analysis

Note: Ignored files are excluded from the next sections.

steep:ignore comments

This PR introduces 13 steep:ignore comments, and clears 12 steep:ignore comments.

steep:ignore comments (+13-12)Introduced:
lib/datadog/core/configuration/option.rb:181
lib/datadog/core/configuration/option_definition.rb:54
lib/datadog/core/configuration/option_definition.rb:144
lib/datadog/core/configuration/option_definition.rb:147
lib/datadog/core/configuration/options.rb:75
lib/datadog/core/configuration/options.rb:78
lib/datadog/core/configuration/options.rb:82
lib/datadog/core/configuration/options.rb:83
lib/datadog/core/configuration/options.rb:167
lib/datadog/core/telemetry/event/app_started.rb:139
lib/datadog/core/telemetry/event/app_started.rb:145
lib/datadog/core/telemetry/event/app_started.rb:156
lib/datadog/core/telemetry/event/app_started.rb:166
Cleared:
lib/datadog/core/configuration/option.rb:171
lib/datadog/core/configuration/option_definition.rb:46
lib/datadog/core/configuration/option_definition.rb:124
lib/datadog/core/configuration/options.rb:52
lib/datadog/core/configuration/options.rb:55
lib/datadog/core/configuration/options.rb:59
lib/datadog/core/configuration/options.rb:60
lib/datadog/core/configuration/options.rb:140
lib/datadog/core/telemetry/event/app_started.rb:175
lib/datadog/core/telemetry/event/app_started.rb:181
lib/datadog/core/telemetry/event/app_started.rb:192
lib/datadog/core/telemetry/event/app_started.rb:202

Untyped methods

This PR introduces 8 untyped methods and 12 partially typed methods, and clears 7 untyped methods and 10 partially typed methods. It increases the percentage of typed methods from 61.66% to 61.69% (+0.03%).

Untyped methods (+8-7)Introduced:
sig/datadog/core/configuration/options.rbs:72
└── def superclass: () -> untyped
sig/datadog/tracing/contrib/configurable.rbs:12
└── def resolve: (untyped value) -> untyped
sig/datadog/tracing/contrib/configurable.rbs:13
└── def configurations: () -> untyped
sig/datadog/tracing/contrib/configurable.rbs:15
└── def reset_configuration!: () -> untyped
sig/datadog/tracing/contrib/configurable.rbs:16
└── def default_configuration: () -> untyped
sig/datadog/tracing/contrib/configurable.rbs:17
└── def set_integration_settings_path!: (untyped configuration) -> untyped
sig/datadog/tracing/contrib/configurable.rbs:18
└── def new_configuration: () -> untyped
sig/datadog/tracing/contrib/configurable.rbs:19
└── def resolver: () -> untyped
Cleared:
sig/datadog/core/configuration/options.rbs:67
└── def superclass: () -> untyped
sig/datadog/tracing/contrib/configurable.rbs:11
└── def resolve: (untyped value) -> untyped
sig/datadog/tracing/contrib/configurable.rbs:12
└── def configurations: () -> untyped
sig/datadog/tracing/contrib/configurable.rbs:14
└── def reset_configuration!: () -> untyped
sig/datadog/tracing/contrib/configurable.rbs:15
└── def default_configuration: () -> untyped
sig/datadog/tracing/contrib/configurable.rbs:16
└── def new_configuration: () -> untyped
sig/datadog/tracing/contrib/configurable.rbs:17
└── def resolver: () -> untyped
Partially typed methods (+12-10)Introduced:
sig/datadog/core/configuration/option_definition.rbs:102
└── def default_proc: () ?{ (?) [self: settings_execution_context] -> untyped } -> void
sig/datadog/core/configuration/option_definition.rbs:106
└── def helper: (Symbol name, *untyped _args) { (?) [self: settings_execution_context] -> untyped } -> void
sig/datadog/core/configuration/options.rbs:53
└── def instance_exec: [U] (*untyped args) { (?) [self: OptionDefinition::settings_execution_context] -> U } -> U
sig/datadog/core/configuration/options.rbs:73
└── def define_method: (Symbol name) { (?) [self: OptionDefinition::settings_execution_context] -> untyped } -> untyped
sig/datadog/core/telemetry/event/app_started.rbs:43
└── def configuration: (untyped settings, Core::Configuration::AgentSettings agent_settings) -> ::Array[telemetry_configuration]
sig/datadog/core/telemetry/event/app_started.rbs:55
└── def install_signature: (untyped settings) -> install_signature
sig/datadog/core/telemetry/event/app_started.rbs:57
└── def collect_all_configuration_options: (untyped settings) -> ::Array[Configuration::Option]
sig/datadog/core/telemetry/event/app_started.rbs:59
└── def collect_integration_configuration_options: (untyped tracing_settings) -> ::Array[Configuration::Option]
sig/datadog/core/telemetry/event/app_started.rbs:61
└── def collect_configuration_options_from: (untyped settings) -> ::Array[Configuration::Option]
sig/datadog/core/telemetry/event/app_started.rbs:65
└── def resolve_option: (untyped settings, ::String config_path) -> Configuration::Option
sig/datadog/tracing/contrib/configurable.rbs:11
└── def configuration: (?::Symbol matcher) -> untyped
sig/datadog/tracing/contrib/configurable.rbs:14
└── def configure: (?::Symbol matcher, ?::Hash[untyped, untyped] options) ?{ () -> untyped } -> untyped
Cleared:
sig/datadog/core/configuration/option_definition.rbs:92
└── def default_proc: () ?{ (?) [self: settings_execution_context] -> untyped } -> void
sig/datadog/core/configuration/option_definition.rbs:96
└── def helper: (Symbol name, *untyped _args) { (?) [self: settings_execution_context] -> untyped } -> void
sig/datadog/core/configuration/options.rbs:49
└── def instance_exec: [U] (*untyped args) { (?) [self: OptionDefinition::settings_execution_context] -> U } -> U
sig/datadog/core/configuration/options.rbs:68
└── def define_method: (Symbol name) { (?) [self: OptionDefinition::settings_execution_context] -> untyped } -> untyped
sig/datadog/core/telemetry/event/app_started.rbs:45
└── def configuration: (untyped settings, Core::Configuration::AgentSettings agent_settings) -> ::Array[telemetry_configuration]
sig/datadog/core/telemetry/event/app_started.rbs:57
└── def install_signature: (untyped settings) -> install_signature
sig/datadog/core/telemetry/event/app_started.rbs:59
└── def get_telemetry_payload: (untyped settings, ::String config_path) -> ::Array[telemetry_configuration]
sig/datadog/core/telemetry/event/app_started.rbs:63
└── def resolve_option: (untyped settings, ::String config_path) -> Configuration::Option
sig/datadog/tracing/contrib/configurable.rbs:10
└── def configuration: (?::Symbol matcher) -> untyped
sig/datadog/tracing/contrib/configurable.rbs:13
└── def configure: (?::Symbol matcher, ?::Hash[untyped, untyped] options) ?{ () -> untyped } -> untyped

Untyped other declarations

This PR introduces 4 partially typed other declarations, and clears 4 partially typed other declarations. It increases the percentage of typed other declarations from 77.66% to 77.73% (+0.07%).

Partially typed other declarations (+4-4)Introduced:
sig/datadog/core/configuration/option_definition.rbs:15
└── type attributes = {
          ?default: default_value?,
          ?default_proc: generic_proc?,
          ?env: String?,
          ?env_parser: env_parser_proc?,
          ?after_set: after_set_proc?,
          ?skip_telemetry: bool,
          ?is_settings: bool,
          ?resetter: resetter_proc?,
          ?setter: setter_proc?,
          ?type: Symbol?,
          ?type_options: Hash[Symbol, untyped]
        }
sig/datadog/core/configuration/option_definition.rbs:29
└── type attributes_with_required_options = {
          is_settings: bool,
          ?default: default_value?,
          ?default_proc: generic_proc?,
          ?env: String?,
          ?env_parser: env_parser_proc?,
          ?after_set: after_set_proc?,
          skip_telemetry: bool,
          ?resetter: resetter_proc?,
          ?setter: setter_proc?,
          ?type: Symbol?,
          type_options: Hash[Symbol, untyped]
        }
sig/datadog/core/configuration/option_definition.rbs:67
└── attr_reader type_options: Hash[Symbol, untyped]
sig/datadog/core/configuration/option_definition.rbs:91
└── @type_options: Hash[Symbol, untyped]
Cleared:
sig/datadog/core/configuration/option_definition.rbs:15
└── type attributes = {
          ?default: default_value?,
          ?default_proc: generic_proc?,
          ?env: String?,
          ?env_parser: env_parser_proc?,
          ?after_set: after_set_proc?,
          ?resetter: resetter_proc?,
          ?setter: setter_proc?,
          ?type: Symbol?,
          ?type_options: Hash[Symbol, untyped]
        }
sig/datadog/core/configuration/option_definition.rbs:27
└── type attributes_with_type_options = {
          ?default: default_value?,
          ?default_proc: generic_proc?,
          ?env: String?,
          ?env_parser: env_parser_proc?,
          ?after_set: after_set_proc?,
          ?resetter: resetter_proc?,
          ?setter: setter_proc?,
          ?type: Symbol?,
          type_options: Hash[Symbol, untyped]
        }
sig/datadog/core/configuration/option_definition.rbs:59
└── attr_reader type_options: Hash[Symbol, untyped]
sig/datadog/core/configuration/option_definition.rbs:81
└── @type_options: Hash[Symbol, untyped]

If you believe a method or an attribute is rightfully untyped or partially typed, you can add # untyped:accept on the line before the definition to remove it from the stats.

@datadog-prod-us1-6

datadog-prod-us1-6 Bot commented Mar 26, 2026

Copy link
Copy Markdown

✅ Tests

🎉 All green!

❄️ No new flaky tests detected
🧪 All tests passed

🎯 Code Coverage (details)
Patch Coverage: 97.07%
Overall Coverage: 95.35% (+0.01%)

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 0ae0062 | Docs | Datadog PR Page | Was this helpful? React with 👍/👎 or give us feedback!

@vpellan
vpellan merged commit e9d478b into master Mar 31, 2026
629 checks passed
@vpellan
vpellan deleted the vpellan/config-visibility-all-configs branch March 31, 2026 14:01
@github-actions github-actions Bot added this to the 2.31.0 milestone Mar 31, 2026
p-datadog pushed a commit that referenced this pull request Apr 2, 2026
…to base-5540

* origin/di-c-ext-exception-backtrace: (12817 commits)
  Fix system-tests CI: bump ref to Phase 1 and drop deleted secrets
  Disable Test Optimization reporting for system-tests
  Document all backtrace override scenarios in code comments
  Remove exception backtrace doc (moved to claude-projects)
  Add doc explaining Exception backtrace internals and UnboundMethod behavior
  Explain why UnboundMethod doesn't bypass backtrace overrides
  [APMAPI-1847] Config visibility on all configurations (#5483)
  Fix EXCEPTION_BACKTRACE test: UnboundMethod does not bypass overrides
  Fall back to string backtrace when backtrace_locations is nil
  [🤖] Update System Tests (#5529)
  Update lib/datadog/core/configuration/config_helper.rb
  Update lib/datadog/core/environment/identity.rb
  [🤖] Update System Tests: https://github.com/DataDog/dd-trace-rb/actions/runs/23697412204
  Fix Steep: update RBS for format_backtrace and remove BACKTRACE_FRAME_PATTERN
  Inline exception_backtrace: use constant directly at call site
  Fix RBS signature: exception_backtrace returns Location not String
  Replace C exception_backtrace with Ruby UnboundMethod + backtrace_locations
  Fix undefined symbol: use have_func to gate rb_backtrace_p
  Fix undefined symbol: use UnboundMethod instead of internal Ruby functions
  Add set_backtrace test and fix formatting in specs
  ...
@y9v y9v mentioned this pull request Apr 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

core Involves Datadog core libraries integrations Involves tracing integrations otel OpenTelemetry-related changes tracing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants