Skip to content

refactor(rc): wire libdatadog Remote Config client#222

Draft
iunanua wants to merge 3 commits into
mainfrom
igor/rc/libdatadog-rc-client-claude
Draft

refactor(rc): wire libdatadog Remote Config client#222
iunanua wants to merge 3 commits into
mainfrom
igor/rc/libdatadog-rc-client-claude

Conversation

@iunanua
Copy link
Copy Markdown
Collaborator

@iunanua iunanua commented May 8, 2026

Summary

  • Bring up an end-to-end Remote Config client driven by datadog-remote-config from libdatadog, replacing the prior placeholder.
  • Adapt to the updated upstream API: typed ParserRegistry, RemoteConfigContent trait (with const PRODUCT and fn parse)

Currently tracks libdatadog branch igor/rc/di-refactor-claude. The [patch.crates-io] block is marked TODO and should be dropped once the matching libdatadog versions are published to crates.io.

Notes

It is registering a custom parser for ApmTracingConfig but it could use the builtin RC parser for DynamicConfigFile. In that case we'll need to update config and sampler methods and types related with trace_sampling_rules. I have decided not to change it after the sampler migration is in place.

🤖 Generated with Claude Code

iunanua and others added 3 commits May 8, 2026 16:22
…egistry

Adapt to the updated `datadog-remote-config` public API:

- Drop `ProductParser` and `std::any::Any` imports; add `RemoteConfigContent`.
- Replace the manual `RemoteConfigParsedData` impl on `ApmTracingConfig`
  (with `as_any` + `product`) with a single `RemoteConfigContent` impl
  exposing `const PRODUCT` and `fn parse(&[u8]) -> anyhow::Result<Self>`.
  The `RemoteConfigParsedData` marker is now provided by a blanket impl
  upstream.
- Remove `apm_tracing_parser()`; `build_fetcher` uses the typed builder
  `ParserRegistry::new().with::<ApmTracingConfig>()`.
- Update `Updated` alias to `anyhow::Result<Option<Box<dyn RemoteConfigParsedData>>>`
  to match `RegistryParser::Parsed`. `None` is the new "no parser registered"
  signal that replaces the old `IgnoredProduct` sentinel; `apply_file` and
  `apply_remove` early-return on `None` with the same no-op semantics.
- Update `test_apm_tracing_parser_round_trip` to call `ApmTracingConfig::parse`
  directly and assert on `ApmTracingConfig::PRODUCT`.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Source every libdd-* crate (workspace-direct and transitive through
datadog-remote-config) from a single libdatadog git ref, removing the
libdd-common-rc renamed alias that previously bridged a v3/v4 split.

Tracks libdatadog branch igor/rc/di-refactor-claude. Adds direct
libdd-capabilities-impl dependency for NativeCapabilities and updates
call sites for the new TraceExporter<H> API and async
wait_agent_info_ready.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@iunanua iunanua changed the title feat(rc): wire libdatadog Remote Config client refactor(rc): wire libdatadog Remote Config client May 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant