chore(deps): bump libdatadog to 48da0d8#135
Merged
Merged
Conversation
Aligns libdatadog rev across all crates with the datadog-lambda-extension bottlecap binary, which was bumped to this rev in DataDog/datadog-lambda-extension#1244 for the client-computed header fix. Required so bottlecap can consume datadog-agent-config without ending up with two incompatible copies of libdd-trace-obfuscation::ReplaceRule in its dependency graph.
Lewis-E
approved these changes
Jun 10, 2026
Contributor
There was a problem hiding this comment.
Pull request overview
Updates this workspace to use the same libdatadog git revision (48da0d8) across all crates, aligning with the datadog-lambda-extension/bottlecap dependency graph requirements and avoiding duplicate/incompatible libdd-* types at the API boundary.
Changes:
- Bumped
libdd-*git dependencies in 4 crateCargo.tomlfiles from0a3304cto48da0d8. - Regenerated
Cargo.lockto reflect the newlibdd-*package versions and sources.
Reviewed changes
Copilot reviewed 4 out of 5 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| crates/datadog-trace-agent/Cargo.toml | Updates all libdd-* git rev pins used by the trace agent (including dev-dep libdd-trace-utils). |
| crates/datadog-serverless-compat/Cargo.toml | Updates libdd-trace-utils git rev pin to match the workspace bump. |
| crates/datadog-metrics-collector/Cargo.toml | Updates libdd-common git rev pin (keeping default-features = false). |
| crates/datadog-agent-config/Cargo.toml | Updates libdd-trace-obfuscation and libdd-trace-utils git rev pins for API compatibility. |
| Cargo.lock | Reflects the bumped libdatadog rev and resulting libdd-* version updates. |
duncanista
added a commit
to DataDog/datadog-lambda-extension
that referenced
this pull request
Jun 10, 2026
DataDog/serverless-components#135 merged at aaac1a5d63faf664750a3bf51b50b79449a31625. The previous pin was the pre-merge branch SHA used during development.
duncanista
added a commit
to DataDog/datadog-lambda-extension
that referenced
this pull request
Jun 18, 2026
Introduces a `LambdaExtension` struct that implements the upstream
`ConfigExtension` trait from `datadog-agent-config`, plus a
`LambdaSource` deserialization shape used for both env-var and YAML
loading via figment's dual-extraction.
This is the first step of migrating bottlecap's in-tree config module
onto the shared serverless-components `datadog-agent-config` crate.
The extension carries the 19 Lambda-specific fields with no upstream
equivalent (api_key_secret_arn, kms_api_key, api_key_ssm_arn,
serverless_logs_enabled, serverless_flush_strategy, enhanced_metrics,
lambda_proc_enhanced_metrics, capture_lambda_payload,
capture_lambda_payload_max_depth, compute_trace_stats_on_extension,
span_dedup_timeout, api_key_secret_reload_interval, dd_org_uuid,
serverless_appsec_enabled, appsec_rules, appsec_waf_timeout,
api_security_enabled, api_security_sample_delay,
custom_metrics_exclude_tags).
Behavior preserved end-to-end with 33 tests covering each field from
both DD_* env vars and datadog.yaml, plus:
- DD_LOGS_ENABLED <-> DD_SERVERLESS_LOGS_ENABLED OR-merge
- FlushStrategy ("end", "periodically,N", invalid -> Default)
- Duration parsing (seconds, microseconds, ignore-zero)
- org_uuid -> dd_org_uuid and lambda_customer_metrics_exclude_tags ->
custom_metrics_exclude_tags source-to-config field mappings
- env precedence over YAML
- Forgiving fallback when a single field is malformed
The dep is pinned to the pre-merge SHA of
DataDog/serverless-components#135 (libdatadog rev alignment) for
development; will be re-pinned to the merged SHA before opening
the migration PR.
Follow-ups (in subsequent commits):
- Replace bottlecap::config::Config with
datadog_agent_config::Config<LambdaExtension>
- Delete duplicated env.rs / yaml.rs / deserializer modules
duncanista
added a commit
to DataDog/datadog-lambda-extension
that referenced
this pull request
Jun 18, 2026
DataDog/serverless-components#135 merged at aaac1a5d63faf664750a3bf51b50b79449a31625. The previous pin was the pre-merge branch SHA used during development.
duncanista
added a commit
to DataDog/datadog-lambda-extension
that referenced
this pull request
Jun 18, 2026
…nt-config (#1249) ## Overview First step of migrating bottlecap's in-tree configuration module onto the shared `datadog-agent-config` crate (lives in [DataDog/serverless-components](https://github.com/DataDog/serverless-components/tree/main/crates/datadog-agent-config)). This PR adds the foundation only — it introduces a `LambdaConfig` extension struct (in `bottlecap/src/config/mod.rs`, alongside the existing legacy code) that implements the upstream `ConfigExtension` trait, plus a `LambdaConfigSource` deserialization shape that figment uses for both env-var and YAML loading (dual extraction). Nothing in bottlecap consumes the extension yet — the existing `bottlecap::config::Config` struct is untouched. The follow-up #1251 (stacked on this) replaces it with `Config<LambdaConfig>`, deletes the duplicated env.rs / yaml.rs / deserializer modules, and removes the legacy `#[macro_export]` `merge_*` macros at the top of `mod.rs` (`LambdaConfig::merge_from` deliberately uses fully-qualified upstream macro paths today to coexist with them). ### Why this shape The upstream crate is purpose-built for this migration — see PR DataDog/serverless-components#111 ("ConfigExtension trait") which landed exactly the extensibility hook we need. Each consumer (bottlecap here, future serverless agents elsewhere) supplies its own extension type for fields that don't generalize, while sharing one canonical implementation for all the core agent fields (site, api_key, logs/APM/OTLP/proxy/trace propagation, etc.). ### Fields in the extension The 19 Lambda-specific fields that have no upstream equivalent: - `api_key_secret_arn`, `kms_api_key`, `api_key_ssm_arn`, `api_key_secret_reload_interval` - `serverless_logs_enabled` (OR-merged with the `DD_LOGS_ENABLED` alias) - `serverless_flush_strategy` (custom `FlushStrategy` deserializer for `"end" | "end,N" | "periodically,N" | "continuously,N"`) - `enhanced_metrics`, `lambda_proc_enhanced_metrics` - `capture_lambda_payload`, `capture_lambda_payload_max_depth` - `compute_trace_stats_on_extension`, `span_dedup_timeout` - `dd_org_uuid` (sourced from `DD_ORG_UUID`, source field `org_uuid` → config field `dd_org_uuid`) - `serverless_appsec_enabled`, `appsec_rules`, `appsec_waf_timeout` - `api_security_enabled`, `api_security_sample_delay` - `custom_metrics_exclude_tags` (sourced from `DD_LAMBDA_CUSTOMER_METRICS_EXCLUDE_TAGS` / `lambda_customer_metrics_exclude_tags:` in YAML) Kept in the extension rather than upstreamed because they're Lambda-runtime concerns. `custom_metrics_exclude_tags` is arguably generalizable to other serverless targets but stays here for now; we can migrate it upstream when another consumer needs it. ### Pre-requisites that already merged - DataDog/serverless-components#135 — bumps libdatadog rev across all serverless-components crates from `0a3304c` to `48da0d8` to match bottlecap. - DataDog/serverless-components#136 — switches `datadog-agent-config`'s libdd transitive deps to `default-features = false` and exposes `https` / `fips` opt-in features. Without this, the FIPS dep tree was poisoned by an implicit `https` (ring) path. Bottlecap pins all three serverless-components crates (`dogstatsd`, `datadog-fips`, `datadog-agent-config`) to the merge SHA `bb4dedee` so cargo deduplicates `dogstatsd`. ## Testing 37 new tests in `bottlecap/src/config/mod.rs::lambda_config_tests` cover each extension field from both env vars and YAML where applicable, plus: - Per-field env round-trip (`api_key_secret_arn`, `kms_api_key`, `api_key_ssm_arn`, …) - YAML coverage for the two source-to-config renames: `org_uuid` → `dd_org_uuid` and `lambda_customer_metrics_exclude_tags` → `custom_metrics_exclude_tags` - `DD_LOGS_ENABLED` ↔ `DD_SERVERLESS_LOGS_ENABLED` OR-merge semantics - `FlushStrategy` — `"end"`, `"end,N"` (`EndPeriodically`), `"periodically,N"`, `"continuously,N"`, invalid → `Default` - Duration parsing — seconds, microseconds, `_ignore_zero` variant - env precedence over YAML - Forgiving fallback when a single field is malformed (default preserved instead of failing the whole extraction) ``` $ cargo test --lib config::lambda_config_tests test result: ok. 37 passed; 0 failed; 0 ignored ``` Existing bottlecap config behavior is unchanged (this PR adds; it doesn't replace yet). ## Follow-up - #1251 — stacked on this branch — does the actual wire-in: replaces `bottlecap::config::Config` with `Config<LambdaConfig>`, deletes the duplicated config files, and removes the legacy `#[macro_export]` macros at the top of `mod.rs`.
duncanista
added a commit
to DataDog/datadog-lambda-extension
that referenced
this pull request
Jun 18, 2026
Introduces a `LambdaExtension` struct that implements the upstream
`ConfigExtension` trait from `datadog-agent-config`, plus a
`LambdaSource` deserialization shape used for both env-var and YAML
loading via figment's dual-extraction.
This is the first step of migrating bottlecap's in-tree config module
onto the shared serverless-components `datadog-agent-config` crate.
The extension carries the 19 Lambda-specific fields with no upstream
equivalent (api_key_secret_arn, kms_api_key, api_key_ssm_arn,
serverless_logs_enabled, serverless_flush_strategy, enhanced_metrics,
lambda_proc_enhanced_metrics, capture_lambda_payload,
capture_lambda_payload_max_depth, compute_trace_stats_on_extension,
span_dedup_timeout, api_key_secret_reload_interval, dd_org_uuid,
serverless_appsec_enabled, appsec_rules, appsec_waf_timeout,
api_security_enabled, api_security_sample_delay,
custom_metrics_exclude_tags).
Behavior preserved end-to-end with 33 tests covering each field from
both DD_* env vars and datadog.yaml, plus:
- DD_LOGS_ENABLED <-> DD_SERVERLESS_LOGS_ENABLED OR-merge
- FlushStrategy ("end", "periodically,N", invalid -> Default)
- Duration parsing (seconds, microseconds, ignore-zero)
- org_uuid -> dd_org_uuid and lambda_customer_metrics_exclude_tags ->
custom_metrics_exclude_tags source-to-config field mappings
- env precedence over YAML
- Forgiving fallback when a single field is malformed
The dep is pinned to the pre-merge SHA of
DataDog/serverless-components#135 (libdatadog rev alignment) for
development; will be re-pinned to the merged SHA before opening
the migration PR.
Follow-ups (in subsequent commits):
- Replace bottlecap::config::Config with
datadog_agent_config::Config<LambdaExtension>
- Delete duplicated env.rs / yaml.rs / deserializer modules
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR do?
Bumps
libdatadogrev across all crates from0a3304cto48da0d8.Motivation
The
datadog-lambda-extensionbottlecap binary bumped tolibdatadogrev48da0d8in DataDog/datadog-lambda-extension#1244 for the client-computed header fix. Bottlecap is preparing to consumedatadog-agent-configas a drop-in replacement for its in-tree config module — see the analysis in the bottlecap migration PR.For that to work, both repos must point at the same
libdatadogrev. Thedatadog-agent-configAPI exposeslibdd_trace_obfuscation::replacer::ReplaceRule(viaapm_replace_tags) andlibdd_trace_utilshelpers across its boundary, so a rev mismatch causes Cargo to compile two incompatible copies of those types in bottlecap's dependency graph.Additional Notes
This bump follows the same shape as #127 (
bump libdatadog to db05e1f) — 4 Cargo.toml files + Cargo.lock.Describe how to test/QA your changes
cargo check --workspace— cleancargo test -p datadog-agent-config— all 71 tests pass