Skip to content

core: Next.js Tracing More In-line with OTel Tracing#3632

Merged
sabrenner merged 11 commits into
masterfrom
sabrenner/nextjs-otel-tracing
Sep 19, 2023
Merged

core: Next.js Tracing More In-line with OTel Tracing#3632
sabrenner merged 11 commits into
masterfrom
sabrenner/nextjs-otel-tracing

Conversation

@sabrenner

@sabrenner sabrenner commented Sep 13, 2023

Copy link
Copy Markdown
Collaborator

What does this PR do?

Makes sure the tracing is more in-line with how Next.js internally uses OTel to trace some of their functions by removing recently-added wrappers for functions that do not actually need to be traced. Instead, simpler wrappers are added in some cases, and the instrumentation used before is kept as it is more closely aligned with how Next.js uses OTel to start spans for certain functions.

Motivation

  1. Moving towards OTel themes, trying to follow some of the ways Next.js uses OTel tracing calls in the request/render functions we trace. There's still a TODO to either instrument all or none of the render functions.
  2. Fixes NextJS plugin request hook called twice for a single request #3272 - since we trace Next.js more closely with how they trace via OTel, any next.requext spans should only appear once in a trace, and thus should not execute hooks more than once. A test for this is added as well.

@github-actions

github-actions Bot commented Sep 13, 2023

Copy link
Copy Markdown
Contributor

Overall package size

Self size: 5.2 MB
Deduped: 60.7 MB
No deduping: 60.87 MB

Dependency sizes

name version self size total size
@datadog/native-iast-taint-tracking 1.5.0 14.86 MB 14.86 MB
@datadog/native-appsec 4.0.0 14.83 MB 14.83 MB
@datadog/pprof 3.2.0 10.8 MB 11.64 MB
protobufjs 7.2.4 2.74 MB 6.52 MB
@datadog/native-iast-rewriter 2.1.3 2.23 MB 2.32 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.4.1 780.32 kB 780.32 kB
import-in-the-middle 1.4.2 41.4 kB 704.79 kB
msgpack-lite 0.1.26 201.16 kB 281.59 kB
opentracing 0.14.7 194.81 kB 194.81 kB
semver 7.5.4 93.4 kB 123.8 kB
@datadog/sketches-js 2.1.0 109.9 kB 109.9 kB
lodash.sortby 4.7.0 75.76 kB 75.76 kB
lru-cache 7.14.0 74.95 kB 74.95 kB
ipaddr.js 2.1.0 60.23 kB 60.23 kB
ignore 5.2.4 51.22 kB 51.22 kB
int64-buffer 0.1.10 49.18 kB 49.18 kB
istanbul-lib-coverage 3.2.0 29.34 kB 29.34 kB
lodash.uniq 4.5.0 25.01 kB 25.01 kB
limiter 1.1.5 23.17 kB 23.17 kB
retry 0.13.1 18.85 kB 18.85 kB
lodash.kebabcase 4.1.1 17.75 kB 17.75 kB
node-abort-controller 3.1.1 16.89 kB 16.89 kB
lodash.pick 4.4.0 16.33 kB 16.33 kB
crypto-randomuuid 1.0.0 11.18 kB 11.18 kB
diagnostics_channel 1.1.0 7.07 kB 7.07 kB
path-to-regexp 0.1.7 6.78 kB 6.78 kB
koalas 1.0.2 6.47 kB 6.47 kB
methods 1.1.2 5.29 kB 5.29 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

@codecov

codecov Bot commented Sep 13, 2023

Copy link
Copy Markdown

Codecov Report

Merging #3632 (41bf32e) into master (fc75101) will increase coverage by 0.16%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #3632      +/-   ##
==========================================
+ Coverage   84.62%   84.78%   +0.16%     
==========================================
  Files         217      219       +2     
  Lines        8786     8961     +175     
  Branches       33       33              
==========================================
+ Hits         7435     7598     +163     
- Misses       1351     1363      +12     

see 2 files with indirect coverage changes

📣 We’re building smart automated test selection to slash your CI/CD build times. Learn more

@pr-commenter

pr-commenter Bot commented Sep 13, 2023

Copy link
Copy Markdown

Benchmarks

Benchmark execution time: 2023-09-19 13:56:30

Comparing candidate commit 41bf32e in PR branch sabrenner/nextjs-otel-tracing with baseline commit fc75101 in branch master.

Found 0 performance improvements and 3 performance regressions! Performance is the same for 427 metrics, 22 unstable metrics.

scenario:plugin-graphql-with-depth-and-collapse-on-18

  • 🟥 max_rss_usage [+136.589KB; +152.387KB] or [+16.621%; +18.543%]

scenario:plugin-graphql-with-depth-off-18

  • 🟥 max_rss_usage [+120.198KB; +146.058KB] or [+14.630%; +17.778%]

scenario:plugin-graphql-with-depth-on-max-18

  • 🟥 max_rss_usage [+125.569KB; +149.347KB] or [+15.220%; +18.102%]

Comment thread packages/datadog-plugin-next/test/index.spec.js Outdated
@sabrenner sabrenner added the integration-nextjs issues relating to the Next.js framework from Vercel label Sep 15, 2023
@sabrenner
sabrenner marked this pull request as ready for review September 19, 2023 13:46
@sabrenner
sabrenner requested review from a team as code owners September 19, 2023 13:46
@sabrenner
sabrenner requested a review from jbertran September 19, 2023 13:46
@sabrenner
sabrenner merged commit de5c6d9 into master Sep 19, 2023
@sabrenner
sabrenner deleted the sabrenner/nextjs-otel-tracing branch September 19, 2023 15:34
@khanayan123 khanayan123 mentioned this pull request Sep 26, 2023
@khanayan123 khanayan123 mentioned this pull request Sep 26, 2023
khanayan123 pushed a commit that referenced this pull request Sep 26, 2023
* removing tracing from non-otel spots

* rmv abs path from static resource name

* add TODO comment

* add serve static hook for older versions

* hopefully fix some ESM stuff

* fixes for hooks test and static resource names

* remove esm changes and .gitignore change

* fix esm issues

* clean up esm
khanayan123 pushed a commit that referenced this pull request Sep 26, 2023
* removing tracing from non-otel spots

* rmv abs path from static resource name

* add TODO comment

* add serve static hook for older versions

* hopefully fix some ESM stuff

* fixes for hooks test and static resource names

* remove esm changes and .gitignore change

* fix esm issues

* clean up esm
khanayan123 pushed a commit that referenced this pull request Sep 27, 2023
* removing tracing from non-otel spots

* rmv abs path from static resource name

* add TODO comment

* add serve static hook for older versions

* hopefully fix some ESM stuff

* fixes for hooks test and static resource names

* remove esm changes and .gitignore change

* fix esm issues

* clean up esm
khanayan123 pushed a commit that referenced this pull request Sep 27, 2023
* removing tracing from non-otel spots

* rmv abs path from static resource name

* add TODO comment

* add serve static hook for older versions

* hopefully fix some ESM stuff

* fixes for hooks test and static resource names

* remove esm changes and .gitignore change

* fix esm issues

* clean up esm
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

integration-nextjs issues relating to the Next.js framework from Vercel semver-patch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

NextJS plugin request hook called twice for a single request

3 participants