Skip to content

chore(deps): bump libdatadog to 48da0d8#135

Merged
duncanista merged 1 commit into
mainfrom
chore/bump-libdatadog-48da0d8
Jun 10, 2026
Merged

chore(deps): bump libdatadog to 48da0d8#135
duncanista merged 1 commit into
mainfrom
chore/bump-libdatadog-48da0d8

Conversation

@duncanista

Copy link
Copy Markdown
Contributor

What does this PR do?

Bumps libdatadog rev across all crates from 0a3304c to 48da0d8.

Motivation

The datadog-lambda-extension bottlecap binary bumped to libdatadog rev 48da0d8 in DataDog/datadog-lambda-extension#1244 for the client-computed header fix. Bottlecap is preparing to consume datadog-agent-config as 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 libdatadog rev. The datadog-agent-config API exposes libdd_trace_obfuscation::replacer::ReplaceRule (via apm_replace_tags) and libdd_trace_utils helpers 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 — clean
  • cargo test -p datadog-agent-config — all 71 tests pass
  • No source changes; rev bump only

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.
@duncanista duncanista requested a review from a team as a code owner June 10, 2026 15:33
Copilot AI review requested due to automatic review settings June 10, 2026 15:33
@duncanista duncanista requested a review from a team as a code owner June 10, 2026 15:33
@duncanista duncanista requested review from Lewis-E and jchrostek-dd and removed request for a team June 10, 2026 15:33

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 crate Cargo.toml files from 0a3304c to 48da0d8.
  • Regenerated Cargo.lock to reflect the new libdd-* 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 duncanista merged commit aaac1a5 into main Jun 10, 2026
28 checks passed
@duncanista duncanista deleted the chore/bump-libdatadog-48da0d8 branch June 10, 2026 15:59
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
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.

3 participants