-
Notifications
You must be signed in to change notification settings - Fork 20
Comparing changes
Open a pull request
base repository: DataDog/datadog-lambda-extension
base: v89
head repository: DataDog/datadog-lambda-extension
compare: v90
- 10 commits
- 79 files changed
- 7 contributors
Commits on Nov 24, 2025
-
feat: Add support for DD_LOGS_ENABLED as alias for DD_SERVERLESS_LOGS…
…_ENABLED (#928) https://datadoghq.atlassian.net/browse/SVLS-7818 ## Overview Add DD_LOGS_ENABLED environment variable and YAML config option as an alias for DD_SERVERLESS_LOGS_ENABLED. Both variables now use OR logic, meaning logs are enabled if either variable is set to true. Changes: - Add logs_enabled field to EnvConfig and YamlConfig structs - Implement OR logic in merge_config functions: logs are enabled if either DD_LOGS_ENABLED or DD_SERVERLESS_LOGS_ENABLED is true - Add comprehensive test coverage with 9 test cases covering all combinations of the two variables - Maintain backward compatibility with existing configurations - Default value remains true when neither variable is set ## Testing Set DD_LOGS_ENABLED and DD_SERVERLESS_LOGS_ENABLED to false and expect: - [Log can be found in AWS console](https://us-east-1.console.aws.amazon.com/cloudwatch/home?region=us-east-1#logsV2:log-groups/log-group/$252Faws$252Flambda$252Fltn-fullinstrument-bn-cold-node22-lambda/log-events/2025$252F11$252F13$252F$255B$2524LATEST$255D455478dcbc944055b5be933e2e099f6a$3FfilterPattern$3DREPORT+RequestId) - [Log could NOT be found in DD console](https://ddserverless.datadoghq.com/logs?query=source%3Alambda%20%40lambda.arn%3A%22arn%3Aaws%3Alambda%3Aus-east-1%3A425362996713%3Afunction%3Altn-fullinstrument-bn-cold-node22-lambda%22%20AND%20%22REPORT%20RequestId%22&agg_m=count&agg_m_source=base&agg_t=count&clustering_pattern_field_path=message&cols=host%2Cservice%2C%40lambda.request_id&fromUser=true&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=desc&viz=stream&from_ts=1763063694206&to_ts=1763065424700&live=false) Otherwise the log should be available in DD console.
Configuration menu - View commit details
-
Copy full SHA for 94315bf - Browse repository at this point
Copy the full SHA 94315bfView commit details -
build(deps): bump actions/checkout from 5.0.1 to 6.0.0 (#942)
Bumps [actions/checkout](https://github.com/actions/checkout) from 5.0.1 to 6.0.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/checkout/releases">actions/checkout's releases</a>.</em></p> <blockquote> <h2>v6.0.0</h2> <h2>What's Changed</h2> <ul> <li>Update README to include Node.js 24 support details and requirements by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2248">actions/checkout#2248</a></li> <li>Persist creds to a separate file by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2286">actions/checkout#2286</a></li> <li>v6-beta by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2298">actions/checkout#2298</a></li> <li>update readme/changelog for v6 by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2311">actions/checkout#2311</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/checkout/compare/v5.0.0...v6.0.0">https://github.com/actions/checkout/compare/v5.0.0...v6.0.0</a></p> <h2>v6-beta</h2> <h2>What's Changed</h2> <p>Updated persist-credentials to store the credentials under <code>$RUNNER_TEMP</code> instead of directly in the local git config.</p> <p>This requires a minimum Actions Runner version of <a href="https://github.com/actions/runner/releases/tag/v2.329.0">v2.329.0</a> to access the persisted credentials for <a href="https://docs.github.com/en/actions/tutorials/use-containerized-services/create-a-docker-container-action">Docker container action</a> scenarios.</p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/actions/checkout/commit/1af3b93b6815bc44a9784bd300feb67ff0d1eeb3"><code>1af3b93</code></a> update readme/changelog for v6 (<a href="https://redirect.github.com/actions/checkout/issues/2311">#2311</a>)</li> <li><a href="https://github.com/actions/checkout/commit/71cf2267d89c5cb81562390fa70a37fa40b1305e"><code>71cf226</code></a> v6-beta (<a href="https://redirect.github.com/actions/checkout/issues/2298">#2298</a>)</li> <li><a href="https://github.com/actions/checkout/commit/069c6959146423d11cd0184e6accf28f9d45f06e"><code>069c695</code></a> Persist creds to a separate file (<a href="https://redirect.github.com/actions/checkout/issues/2286">#2286</a>)</li> <li><a href="https://github.com/actions/checkout/commit/ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493"><code>ff7abcd</code></a> Update README to include Node.js 24 support details and requirements (<a href="https://redirect.github.com/actions/checkout/issues/2248">#2248</a>)</li> <li>See full diff in <a href="https://github.com/actions/checkout/compare/v5.0.1...v6">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Configuration menu - View commit details
-
Copy full SHA for 626ee59 - Browse repository at this point
Copy the full SHA 626ee59View commit details -
feat: Support proxy for debugger endpoint v2 (#918)
Now we support proxying requests from `/debugger/v1/input`. This PR adds `/debugger/v2/input` and `/debugger/v1/diagnostics`. #925 ## Test ### Steps 1. Set up Exception Replay following https://docs.datadoghq.com/error_tracking/backend/exception_replay/ 2. Build a test layer and install it on the Lambda 3. Set `DD_TRACE_DEBUG` to `true` 4. Change Lambda timeout from 3s to 30s. Seems Exception Replay dramatically increases the duration of the first invocation. It took 8–9s for my tests. ### Result Before: - In CloudWatch logs, see the error multiple times: `debugger::unsupported_agentUnsupported Datadog agent detected. Snapshots from Dynamic Instrumentation/Exception Replay/Code Origin for Spans will not be uploaded. Please upgrade to version 7.49.0 or later` After: - No such error. - See tracer debug log: `Detected /debugger/v2/input endpoint` - See the error on Error Tracking page <img width="486" height="166" alt="image" src="https://github.com/user-attachments/assets/3d48cb2b-0d5a-4806-97e1-e8146642ce64" /> ## Notes Thanks @nhulston @joeyzhao2018 @purple4reina for discussion and helping debug.
Configuration menu - View commit details
-
Copy full SHA for 7375560 - Browse repository at this point
Copy the full SHA 7375560View commit details
Commits on Nov 25, 2025
-
build(deps): bump anchore/scan-action from 7.2.0 to 7.2.1 (#943)
Bumps [anchore/scan-action](https://github.com/anchore/scan-action) from 7.2.0 to 7.2.1. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/anchore/scan-action/releases">anchore/scan-action's releases</a>.</em></p> <blockquote> <h2>v7.2.1</h2> <h2>New in scan-action v7.2.1</h2> <ul> <li>updated Grype to v0.104.1 (<a href="https://redirect.github.com/anchore/scan-action/issues/550">#550</a>) [[<a href="https://github.com/apps/anchore-actions-token-generator">anchore-actions-token-generator[bot]</a>](<a href="https://github.com/%5Banchore-actions-token-generator%5Bbot%5D%5D(https://github.com/apps/anchore-actions-token-generator))%5D">https://github.com/[anchore-actions-token-generator[bot]](https://github.com/apps/anchore-actions-token-generator))]</a></li> <li>bump js-yaml from 3.14.1 to 3.14.2 (<a href="https://redirect.github.com/anchore/scan-action/issues/544">#544</a>) [[<a href="https://github.com/apps/dependabot">dependabot[bot]</a>](<a href="https://github.com/%5Bdependabot%5Bbot%5D%5D(https://github.com/apps/dependabot))%5D">https://github.com/[dependabot[bot]](https://github.com/apps/dependabot))]</a></li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/anchore/scan-action/commit/40a61b52209e9d50e87917c5b901783d546b12d0"><code>40a61b5</code></a> chore(deps): update Grype to v0.104.1 (<a href="https://redirect.github.com/anchore/scan-action/issues/550">#550</a>)</li> <li><a href="https://github.com/anchore/scan-action/commit/a958206db90a52634bf2c841fbef3ba1e6df5680"><code>a958206</code></a> chore(deps-dev): bump eslint from 9.39.0 to 9.39.1 (<a href="https://redirect.github.com/anchore/scan-action/issues/540">#540</a>)</li> <li><a href="https://github.com/anchore/scan-action/commit/ff5ff9ef8fa268b66c249be14a125f1d7be6d0ed"><code>ff5ff9e</code></a> chore(deps-dev): bump js-yaml from 3.14.1 to 3.14.2 (<a href="https://redirect.github.com/anchore/scan-action/issues/544">#544</a>)</li> <li>See full diff in <a href="https://github.com/anchore/scan-action/compare/3aaf50d765cfcceafa51d322ccb790e40f6cd8c5...40a61b52209e9d50e87917c5b901783d546b12d0">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Configuration menu - View commit details
-
Copy full SHA for 531e814 - Browse repository at this point
Copy the full SHA 531e814View commit details -
chore: Upgrade libdatadog and construct http client for traces (#917)
Upgrade libdatadog. Including: - Rename a few creates: - `ddcommon` -> `libdd-common` - `datadog-trace-protobuf` -> `libdd-trace-protobuf` - `datadog-trace-utils` -> `libdd-trace-utils` - `datadog-trace-normalization` -> `libdd-trace-normalization` - `datadog-trace-stats` -> `libdd-trace-stats` - Use the new API to send traces, which takes in an http_client object instead of proxy url string GitHub issue: #860 Jira: https://datadoghq.atlassian.net/browse/SLES-2499 Slack discussion: https://dd.slack.com/archives/C01TCF143GB/p1762526199549409
Configuration menu - View commit details
-
Copy full SHA for 8a81b38 - Browse repository at this point
Copy the full SHA 8a81b38View commit details -
[SLES-2499] feat: Support sending trace stats via http proxy (#927)
## Overview Support sending trace stats to Datadog when the Lambda is in a VPC with a proxy. ## Testing ### Steps 1. Set up a Lambda in a VPC with a proxy. See [Using an agent proxy](https://datadoghq.atlassian.net/wiki/spaces/SLS/pages/4168745841/Using+an+Agent+Proxy) (internal) 2. Build an extension layer and install it on the Lambda 3. Invoke the Lambda. After 20 seconds, invoke it again. This should force trace stats for the first invocation to be flushed. ### Result **Before:** stats flush failed with error: ``` Error sending stats: Failed to send trace stats: client error (Connect) ``` <img width="671" height="55" alt="image" src="https://github.com/user-attachments/assets/e815d296-304c-4832-90fe-44a5a3981d73" /> <img width="905" height="55" alt="image" src="https://github.com/user-attachments/assets/32fe9cc2-43ed-41b7-b53d-89750c2122be" /> **After:** stats flush was successful. <img width="656" height="56" alt="image" src="https://github.com/user-attachments/assets/e2b54b8b-3b0b-41e6-9c11-673bd7f2f894" /> <img width="885" height="52" alt="image" src="https://github.com/user-attachments/assets/3dc4c0b5-6681-4f2c-926c-edb278359943" /> ## Dependency DataDog/libdatadog#1345 ## Notes GitHub issue: #860 Jira: https://datadoghq.atlassian.net/browse/SLES-2499
Configuration menu - View commit details
-
Copy full SHA for 6094949 - Browse repository at this point
Copy the full SHA 6094949View commit details -
[SVLS-6907] feat: Support span dedup (#939)
## TL;DR - Support deduping spans by span_id - which fixes trace stats overcount issue for Node.js ## Problem Node.js tracer sometimes sends duplicate traces to the extension, causing over-count of trace stats. In our tests, the over-count is usually 1–4 for 50, 500 or 5000 invocations. This only happens when the "default" flushing strategy (which uses the "continuous" strategy) is used, and doesn't happen when the "end" strategy is used. ## Cause of problem I think it's similar to a known problem of continuous flushing. - The known problem is, when Lambda runtime is frozen, the connection between **extension** and **DD endpoint** can time out, causing data flush failure. - In the trace stats case, the problem is, when Lambda runtime is frozen, the connection between **tracer** and **extension** can time out. Extension receives the request from tracer, then freezes before sending a response, causing the tracer's request to time out, which makes the tracer resend the trace. This doesn't happen with the END flush strategy because in that case, after the Lambda handler finishes, extension still needs to flush the data and doesn't freeze so fast, and it has enough time to respond to tracer. ## Testing ### Steps - Build a test extension layer - Run e2e tests, including: - Install it on various Lambda functions - Invoke these functions with various traffic pattern - Check the trace stats result ### Result **Before:** - Over-count happens for (1) Node.js runtime + (2) "Sampling" test, which uses the default flush strategy - (vs expected 50) <img width="1336" height="277" alt="Screenshot 2025-11-20 at 9 30 00 PM" src="https://github.com/user-attachments/assets/3bf33c26-8996-43e4-8df5-7313247926b3" /> **After:** - No over-count (vs expected 5000) <img width="1447" height="421" alt="Screenshot 2025-11-20 at 9 25 32 PM" src="https://github.com/user-attachments/assets/21576483-dbdc-499f-acc8-1801d3927b0b" /> ## Options considered 1. **At most once**: Disable retry in tracer, at least for Lambda. 2. **At least once** - 2.1 Do nothing. Call out this as a known limitation. - 2.2 Treat tracer as VIP. Before calling /next, make sure tracer's requests have been responded. This may cause regression on invocation duration, especially when volume is high. 3. **Exactly once**: Implement dedup in extension, by trace_id. This PR chooses 3 because it's the easiest. ## Notes Thanks @astuyve @rochdev @purple4reina for discussion. Thanks Cursor for writing most of the code. The under-count issue will be addressed separately. Related issue: #688
Configuration menu - View commit details
-
Copy full SHA for 5f2e83a - Browse repository at this point
Copy the full SHA 5f2e83aView commit details -
chore: Set 10m timeout and retries for a GitLab job (#945)
## Problem The `bottlecap` GitLab job usually takes < 10 minutes, but it sometimes gets stuck and times out at 1 hour. This failure signal causes confusion in PRs and blocks PR merge. As a result, engineers often need to rerun this job. ## This PR For this job, add: 1. timeout of 10 minutes 2. a retry in case of `stuck_or_timeout_failure` or `runner_system_failure` ## Testing Will merge and see if these errors become less frequent.
Configuration menu - View commit details
-
Copy full SHA for 39a0f5e - Browse repository at this point
Copy the full SHA 39a0f5eView commit details
Commits on Dec 1, 2025
-
Merge Lambda Managed Instance feature branch (#947)
https://datadoghq.atlassian.net/browse/SVLS-8080 ## Overview Merge Lambda Managed Instance feature branch ## Testing Covered by individual commits Co-authored-by: shreyamalpani <[email protected]> Co-authored-by: duncanista <[email protected]> Co-authored-by: astuyve <[email protected]> Co-authored-by: jchrostek-dd <[email protected]> Co-authored-by: tianning.li <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 37f3c29 - Browse repository at this point
Copy the full SHA 37f3c29View commit details -
https://datadoghq.atlassian.net/browse/SVLS-8080 ## Overview v90 release prep ## Testing n/a
Configuration menu - View commit details
-
Copy full SHA for b7ecc21 - Browse repository at this point
Copy the full SHA b7ecc21View commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff v89...v90