-
Notifications
You must be signed in to change notification settings - Fork 309
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(lambda): gate timeout spans and add missing clear #4446
fix(lambda): gate timeout spans and add missing clear #4446
Conversation
Overall package sizeSelf size: 6.85 MB Dependency sizes| name | version | self size | total size | |------|---------|-----------|------------| | @datadog/native-appsec | 8.0.1 | 15.59 MB | 15.6 MB | | @datadog/native-iast-taint-tracking | 3.0.0 | 11.14 MB | 11.15 MB | | @datadog/pprof | 5.3.0 | 9.85 MB | 10.22 MB | | protobufjs | 7.2.5 | 2.77 MB | 6.56 MB | | @datadog/native-iast-rewriter | 2.3.1 | 2.15 MB | 2.24 MB | | @opentelemetry/core | 1.14.0 | 872.87 kB | 1.47 MB | | @datadog/native-metrics | 2.0.0 | 898.77 kB | 1.3 MB | | @opentelemetry/api | 1.8.0 | 1.21 MB | 1.21 MB | | import-in-the-middle | 1.8.1 | 71.67 kB | 785.15 kB | | msgpack-lite | 0.1.26 | 201.16 kB | 281.59 kB | | opentracing | 0.14.7 | 194.81 kB | 194.81 kB | | pprof-format | 2.1.0 | 111.69 kB | 111.69 kB | | @datadog/sketches-js | 2.1.0 | 109.9 kB | 109.9 kB | | semver | 7.6.3 | 95.82 kB | 95.82 kB | | lodash.sortby | 4.7.0 | 75.76 kB | 75.76 kB | | lru-cache | 7.14.0 | 74.95 kB | 74.95 kB | | ignore | 5.3.1 | 51.46 kB | 51.46 kB | | int64-buffer | 0.1.10 | 49.18 kB | 49.18 kB | | shell-quote | 1.8.1 | 44.96 kB | 44.96 kB | | istanbul-lib-coverage | 3.2.0 | 29.34 kB | 29.34 kB | | tlhunter-sorted-set | 0.1.0 | 24.94 kB | 24.94 kB | | limiter | 1.1.5 | 23.17 kB | 23.17 kB | | dc-polyfill | 0.1.4 | 23.1 kB | 23.1 kB | | retry | 0.13.1 | 18.85 kB | 18.85 kB | | jest-docblock | 29.7.0 | 8.99 kB | 12.76 kB | | crypto-randomuuid | 1.0.0 | 11.18 kB | 11.18 kB | | path-to-regexp | 0.1.7 | 6.78 kB | 6.78 kB | | koalas | 1.0.2 | 6.47 kB | 6.47 kB | | module-details-from-path | 1.0.3 | 4.47 kB | 4.47 kB |🤖 This report was automatically generated by heaviest-objects-in-the-universe |
@@ -2,4 +2,11 @@ | |||
|
|||
const { registerLambdaHook } = require('./runtime/ritm') | |||
|
|||
registerLambdaHook() | |||
const _DD_TRACE_DISABLED_INSTRUMENTATIONS = process.env.DD_TRACE_DISABLED_INSTRUMENTATIONS || '' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
with underscores since these are already defined by another file as global, but during uni testing, this file is not run there.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is it OK that this only applies to users who disable integrations via ENV var and not to users who disable integrations via the init config object?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh, do Lambda users never touch that object and instead configure everything via ENV vars?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If that's the case it's probably worth adding a comment.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh, do Lambda users never touch that object and instead configure everything via ENV vars?
Yeah, so this is enabled by default already, and there's no way to enable/disable this through the init config object or any other manner.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added a comment around it~
BenchmarksBenchmark execution time: 2024-07-22 04:15:44 Comparing candidate commit 43421df in PR branch Found 0 performance improvements and 0 performance regressions! Performance is the same for 259 metrics, 7 unstable metrics. |
* add missing `clearTimeout` * gate timeout spans under `lambda` * add unit tests * add comment on when we can disable it
* add missing `clearTimeout` * gate timeout spans under `lambda` * add unit tests * add comment on when we can disable it
* add missing `clearTimeout` * gate timeout spans under `lambda` * add unit tests * add comment on when we can disable it
* add missing `clearTimeout` * gate timeout spans under `lambda` * add unit tests * add comment on when we can disable it
This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [dd-trace](https://github.com/DataDog/dd-trace-js) | [`5.21.0` -> `5.22.0`](https://renovatebot.com/diffs/npm/dd-trace/5.10.0/5.22.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/dd-trace/5.22.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/dd-trace/5.22.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/dd-trace/5.10.0/5.22.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/dd-trace/5.10.0/5.22.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>DataDog/dd-trace-js (dd-trace)</summary> ### [`v5.22.0`](https://github.com/DataDog/dd-trace-js/releases/tag/v5.22.0) [Compare Source](https://github.com/DataDog/dd-trace-js/compare/v5.21.0...v5.22.0) ##### Fixes - \[[`ab80d70`](https://github.com/DataDog/dd-trace-js/commit/ab80d703c1)] - fix(lambda): gate timeout spans and add missing clear (jordan gonzález) [https://github.com/DataDog/dd-trace-js/pull/4446](https://github.com/DataDog/dd-trace-js/pull/4446) - \[[`1f2914f`](https://github.com/DataDog/dd-trace-js/commit/1f2914f9fc)] - chore(w3c): avoid setting \_dd.parent_id to 16 zeros (Munir Abdinur)[https://github.com/DataDog/dd-trace-js/pull/4576](https://github.com/DataDog/dd-trace-js/pull/4576)6 - \[[`683df27`](https://github.com/DataDog/dd-trace-js/commit/683df27a6d)] - fix(openai): tracing occurs in correct async context (Sam Brenner) [https://github.com/DataDog/dd-trace-js/pull/4583](https://github.com/DataDog/dd-trace-js/pull/4583) - \[[`b19b382`](https://github.com/DataDog/dd-trace-js/commit/b19b382f0a)] - Rename rasp metrics (Igor Unanua) [https://github.com/DataDog/dd-trace-js/pull/4635](https://github.com/DataDog/dd-trace-js/pull/4635) - \[[`f4ecee9`](https://github.com/DataDog/dd-trace-js/commit/f4ecee9633)] - Fix AppSec manual blocking parameters (Ugaitz Urien) [https://github.com/DataDog/dd-trace-js/pull/4606](https://github.com/DataDog/dd-trace-js/pull/4606) ##### Features - \[[`bc2d6a1`](https://github.com/DataDog/dd-trace-js/commit/bc2d6a1473)] - Bump `@datadog/native-appsec` to `8.1.1` (Carles Capell) [https://github.com/DataDog/dd-trace-js/pull/4630](https://github.com/DataDog/dd-trace-js/pull/4630) - \[[`1a2aaed`](https://github.com/DataDog/dd-trace-js/commit/1a2aaedaf0)] - \[test visibility] Add configuration flags to auto test retries (Juan Antonio Fernández de Alba)[https://github.com/DataDog/dd-trace-js/pull/4609](https://github.com/DataDog/dd-trace-js/pull/4609)9 ##### Improvements - \[[`e568fe3`](https://github.com/DataDog/dd-trace-js/commit/e568fe3e8f)] - PROF-10330: Emit SSI information in the profile system info (Attila Szegedi) - \[[`a04ba3f`](https://github.com/DataDog/dd-trace-js/commit/a04ba3f9e7)] - hapi: migrate from AsyncResource to TracingChannel, see [#​4597](https://github.com/DataDog/dd-trace-js/issues/4597) (Thomas Hunter II) [https://github.com/DataDog/dd-trace-js/pull/4622](https://github.com/DataDog/dd-trace-js/pull/4622) - \[[`69aedbc`](https://github.com/DataDog/dd-trace-js/commit/69aedbc892)] - Safer shimming (Bryan English) [https://github.com/DataDog/dd-trace-js/pull/4585](https://github.com/DataDog/dd-trace-js/pull/4585) ### [`v5.21.0`](https://github.com/DataDog/dd-trace-js/compare/v5.20.0...725f16142baf7724f537a6848dc49e1b10d889bb) [Compare Source](https://github.com/DataDog/dd-trace-js/compare/v5.20.0...v5.21.0) ### [`v5.20.0`](https://github.com/DataDog/dd-trace-js/compare/v5.19.0...v5.20.0) [Compare Source](https://github.com/DataDog/dd-trace-js/compare/v5.19.0...v5.20.0) ### [`v5.19.0`](https://github.com/DataDog/dd-trace-js/compare/v5.18.0...37d3876ded2e8a2fce14520bf85dc6920e777c31) [Compare Source](https://github.com/DataDog/dd-trace-js/compare/v5.18.0...v5.19.0) ### [`v5.18.0`](https://github.com/DataDog/dd-trace-js/compare/v5.17.0...01464c7c14154ef75e6ce90b283d2e85b55cbb5c) [Compare Source](https://github.com/DataDog/dd-trace-js/compare/v5.17.0...v5.18.0) ### [`v5.17.0`](https://github.com/DataDog/dd-trace-js/releases/tag/v5.17.0) [Compare Source](https://github.com/DataDog/dd-trace-js/compare/v5.16.0...v5.17.0) ##### Improvements - **core:** RecordException api now supports adding exceptions as span events ([#​4386](https://github.com/DataDog/dd-trace-js/issues/4386)) - **appsec:** Allows AppSec to replace status code, headers, and body when an attack is detected ([#​3837](https://github.com/DataDog/dd-trace-js/issues/3837)) ##### Features - **core:** Add support for span events ([#​4036](https://github.com/DataDog/dd-trace-js/issues/4036) ) - **core:** Add automatic instrumentation support for Undici ([#​4293](https://github.com/DataDog/dd-trace-js/issues/4293)) ### [`v5.16.0`](https://github.com/DataDog/dd-trace-js/releases/tag/v5.16.0) [Compare Source](https://github.com/DataDog/dd-trace-js/compare/v5.15.0...v5.16.0) ##### Improvements - **graphql:** fix graphql.resolve span durations ([#​4387](https://github.com/DataDog/dd-trace-js/issues/4387)) - **otel:** remaps http status tag to meet ddog convention for otel([#​4384](https://github.com/DataDog/dd-trace-js/issues/4384)) ##### Bug Fixes - **ci:** test OCI system-tests scenarios on every commit ([#​4371](https://github.com/DataDog/dd-trace-js/issues/4371)) - **otel:** pin otel api version in integration test ([#​4388](https://github.com/DataDog/dd-trace-js/issues/4388)) - **core:** send original config value to telemetry ([#​4378](https://github.com/DataDog/dd-trace-js/issues/4378)) - **core:** fix RC support for sampling rules patch ([#​4381](https://github.com/DataDog/dd-trace-js/issues/4381)) ### [`v5.15.0`](https://github.com/DataDog/dd-trace-js/releases/tag/v5.15.0) [Compare Source](https://github.com/DataDog/dd-trace-js/compare/v5.14.1...v5.15.0) #### Improvements - Remove outdated polyfills [#​4009](https://github.com/DataDog/dd-trace-js/pull/4009) - Update native-appsec module to 8.0.1 [#​4347](https://github.com/DataDog/dd-trace-js/pull/4347) - profiler supports activation through single-step instrumentation [#​4375](https://github.com/DataDog/dd-trace-js/pull/4375) #### Features - \[ci-visibility] Support mocha parallel mode [#​4314](https://github.com/DataDog/dd-trace-js/pull/4314) #### Bug fixes - \[ci-visibility] Fix EFD with jest and jsdom [#​4323](https://github.com/DataDog/dd-trace-js/pull/4323) - \[ci-visibility] Fix selenium when run outside of a supported test framework [#​4330](https://github.com/DataDog/dd-trace-js/pull/4330) ### [`v5.14.1`](https://github.com/DataDog/dd-trace-js/releases/tag/v5.14.1) [Compare Source](https://github.com/DataDog/dd-trace-js/compare/v5.14.0...v5.14.1) ##### Features - debug warnings when init after instrumented packages ([#​4307](https://github.com/DataDog/dd-trace-js/issues/4307)) ### [`v5.14.0`](https://github.com/DataDog/dd-trace-js/releases/tag/v5.14.0) [Compare Source](https://github.com/DataDog/dd-trace-js/compare/v5.13.0...v5.14.0) ##### Improvements - **core:** Add child_process plugin to typings ([#​4306](https://github.com/DataDog/dd-trace-js/issues/4306)), thanks to [@​ikonst](https://github.com/ikonst) for the original PR - **asm:** Add support for meta_struct property in the spans for v0.4 agent api ([#​4287](https://github.com/DataDog/dd-trace-js/issues/4287)) - **serverless:** Enable Serverless Mini Agent for Azure Functions on All Plans ([#​4304](https://github.com/DataDog/dd-trace-js/issues/4304)) - **core:** stop clobbering manually-installed tracer with Single Step Instrumentation ([#​4300](https://github.com/DataDog/dd-trace-js/issues/4300)) - **core:** define an explicit version range of support for the [@​opentelemetry/api](https://github.com/opentelemetry/api) ([#​4318](https://github.com/DataDog/dd-trace-js/issues/4318)) ##### Features - **profiling:** Add profiler support for node 22 ([#​4312](https://github.com/DataDog/dd-trace-js/issues/4312)) ### [`v5.13.0`](https://github.com/DataDog/dd-trace-js/compare/v5.12.0...0325725d8a4195ad980fcbe9535dc3f54f3c591c) [Compare Source](https://github.com/DataDog/dd-trace-js/compare/v5.12.0...v5.13.0) ### [`v5.12.0`](https://github.com/DataDog/dd-trace-js/releases/tag/v5.12.0) [Compare Source](https://github.com/DataDog/dd-trace-js/compare/v5.11.0...v5.12.0) ##### Features - [Add Support for OpenAI v4](https://github.com/DataDog/dd-trace-js/pull/4232) ##### Improvements - [Do not require appsec modules when disabling appsec if they have not been required before](https://github.com/DataDog/dd-trace-js/pull/4244) ##### Bug Fixes - [fix fetch error when request has already been sent](https://github.com/DataDog/dd-trace-js/pull/4258). Fixes [#​4259](https://github.com/DataDog/dd-trace-js/issues/4259) - [Prevent object key tainting](https://github.com/DataDog/dd-trace-js/pull/4251) ### [`v5.11.0`](https://github.com/DataDog/dd-trace-js/releases/tag/v5.11.0) [Compare Source](https://github.com/DataDog/dd-trace-js/compare/v5.10.0...v5.11.0) ##### Features - \[profiling] [PROF-9250: Enable timeline and CPU profiling by default](https://github.com/DataDog/dd-trace-js/pull/4149) - \[iast] [Hardcoded passwords detection and update hardcoded secret rules](https://github.com/DataDog/dd-trace-js/pull/4066) - \[ci-visibility] [\[ci-visibility\] Add selenium support](https://github.com/DataDog/dd-trace-js/pull/4241) - \[open telemetry] [implement OTEL env var support for dd-trace-js](https://github.com/DataDog/dd-trace-js/pull/4248) - \[profiling] [Support ipv6 in profiler](https://github.com/DataDog/dd-trace-js/pull/4124). Thanks [@​benasher44](https://github.com/benasher44) for the PR! ##### Improvements - \[dogstatsd] [Added histogram method to dogstatsd](https://github.com/DataDog/dd-trace-js/pull/4178). Thanks [@​bin-umar](https://github.com/bin-umar) for the PR! ##### Bug Fixes - \[mongoose] [Fixed attempting to wrap undefined mongoose.Promise](https://github.com/DataDog/dd-trace-js/pull/4165). Thanks [@​nathan-knight](https://github.com/nathan-knight) for the PR! - \[mysql2] [Avoid run sequelize plugin test with non compatible mysql2](https://github.com/DataDog/dd-trace-js/pull/4229) - \[ci-visibility] [\[ci-visibility\] Fix window access when using cy.origin (multi origin) in Cypress](https://github.com/DataDog/dd-trace-js/pull/4228) - \[dogstatsd] [Add dogstatsd to noop proxy](https://github.com/DataDog/dd-trace-js/pull/4225) - \[ci-visibility] [\[ci-visibility\] Fix ITR with multi project setup in jest](https://github.com/DataDog/dd-trace-js/pull/4249) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/X-oss-byte/Nextjs).
What does this PR do?
Gates AWS Lambda tracer instrumentation with the key
lambda
.Adds a
clearTimeout
to non-promisified functions.Motivation
Support ticket where customers was being timed out because they were using promises and returning the function as non-promisified, making it to successfully work with AWS Lambda, but not with our tracer instrumentation.
Plugin Checklist
Additional Notes
Disabled by
DD_TRACE_DISABLED_INSTRUMENTATIONS=lambda,other,another
by following the current workaround for instrumentations.