Skip to content

Support for Prisma client library #5605

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

Merged
merged 18 commits into from
Jun 23, 2025
Merged

Support for Prisma client library #5605

merged 18 commits into from
Jun 23, 2025

Conversation

bojbrook
Copy link
Contributor

@bojbrook bojbrook commented Apr 23, 2025

What does this PR do?

Adds tracing support for the Prisma ORM library for v6.1.0+.

Fixes #1244

Full Example trace
image

Example of generated SQL span
image

Transaction query
image

Motivation

Multiple submitted FR for this library.

Plugin Checklist

added TracingHelper logic

Updated Prisma implementation

prisma code clean up

adding comments

Updated test.ts file

clean up test code

Updated db conneciton string

Updated databaseDriverMap

added support for transaction queries

Fix Prisma test errors

Update prisma test

Fix promise handling

Update code and CI tests

move cleanUpPrismaClient

Update version and DB name

Update min version for debugging

Testing latest verison only

rewrote generatePrismaClient logic

Update next.js webpack error
@bojbrook bojbrook requested review from a team as code owners April 23, 2025 20:50
Copy link

github-actions bot commented Apr 23, 2025

Overall package size

Self size: 9.74 MB
Deduped: 106.24 MB
No deduping: 106.76 MB

Dependency sizes | name | version | self size | total size | |------|---------|-----------|------------| | @datadog/libdatadog | 0.7.0 | 35.02 MB | 35.02 MB | | @datadog/native-appsec | 8.5.2 | 19.33 MB | 19.34 MB | | @datadog/native-iast-taint-tracking | 4.0.0 | 11.72 MB | 11.73 MB | | @datadog/pprof | 5.8.2 | 9.56 MB | 9.93 MB | | @opentelemetry/core | 1.30.1 | 908.66 kB | 7.16 MB | | protobufjs | 7.5.3 | 2.95 MB | 5.6 MB | | @datadog/wasm-js-rewriter | 4.0.1 | 2.85 MB | 3.58 MB | | @datadog/native-metrics | 3.1.1 | 1.02 MB | 1.43 MB | | @opentelemetry/api | 1.8.0 | 1.21 MB | 1.21 MB | | import-in-the-middle | 1.14.0 | 120.58 kB | 841.68 kB | | source-map | 0.7.4 | 226 kB | 226 kB | | opentracing | 0.14.7 | 194.81 kB | 194.81 kB | | lru-cache | 7.18.3 | 133.92 kB | 133.92 kB | | pprof-format | 2.1.0 | 111.69 kB | 111.69 kB | | @datadog/sketches-js | 2.1.1 | 109.9 kB | 109.9 kB | | lodash.sortby | 4.7.0 | 75.76 kB | 75.76 kB | | ignore | 5.3.2 | 53.63 kB | 53.63 kB | | istanbul-lib-coverage | 3.2.2 | 34.37 kB | 34.37 kB | | rfdc | 1.4.1 | 27.15 kB | 27.15 kB | | @isaacs/ttlcache | 1.4.1 | 25.2 kB | 25.2 kB | | dc-polyfill | 0.1.9 | 25.11 kB | 25.11 kB | | tlhunter-sorted-set | 0.1.0 | 24.94 kB | 24.94 kB | | shell-quote | 1.8.2 | 23.54 kB | 23.54 kB | | limiter | 1.1.5 | 23.17 kB | 23.17 kB | | retry | 0.13.1 | 18.85 kB | 18.85 kB | | semifies | 1.0.0 | 15.84 kB | 15.84 kB | | jest-docblock | 29.7.0 | 8.99 kB | 12.76 kB | | crypto-randomuuid | 1.0.0 | 11.18 kB | 11.18 kB | | ttl-set | 1.0.0 | 4.61 kB | 9.69 kB | | mutexify | 1.4.0 | 5.71 kB | 8.74 kB | | path-to-regexp | 0.1.12 | 6.6 kB | 6.6 kB | | koalas | 1.0.2 | 6.47 kB | 6.47 kB | | module-details-from-path | 1.0.4 | 3.96 kB | 3.96 kB |

🤖 This report was automatically generated by heaviest-objects-in-the-universe

Copy link

codecov bot commented Apr 23, 2025

Codecov Report

Attention: Patch coverage is 93.93939% with 4 lines in your changes missing coverage. Please review.

Project coverage is 80.37%. Comparing base (9a8a6ec) to head (e4c2fcc).
Report is 28 commits behind head on master.

Files with missing lines Patch % Lines
...ages/datadog-instrumentations/src/helpers/hooks.js 0.00% 1 Missing ⚠️
packages/datadog-plugin-prisma/src/client.js 95.83% 1 Missing ⚠️
packages/dd-trace/src/plugins/index.js 0.00% 1 Missing ⚠️
.../dd-trace/src/service-naming/schemas/v0/storage.js 0.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #5605      +/-   ##
==========================================
+ Coverage   80.02%   80.37%   +0.34%     
==========================================
  Files         445      460      +15     
  Lines       19493    19915     +422     
==========================================
+ Hits        15600    16007     +407     
- Misses       3893     3908      +15     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@pr-commenter
Copy link

pr-commenter bot commented Apr 23, 2025

Benchmarks

Benchmark execution time: 2025-06-23 12:27:29

Comparing candidate commit e4c2fcc in PR branch bojbrook-prisma-plugin with baseline commit 9a8a6ec in branch master.

Found 0 performance improvements and 0 performance regressions! Performance is the same for 919 metrics, 47 unstable metrics.

@datadog-datadog-prod-us1
Copy link

datadog-datadog-prod-us1 bot commented Apr 23, 2025

Datadog Report

Branch report: bojbrook-prisma-plugin
Commit report: d782cb6
Test service: dd-trace-js-integration-tests

✅ 0 Failed, 1260 Passed, 0 Skipped, 22m 6.14s Total Time

@bojbrook bojbrook assigned bojbrook and unassigned bojbrook Apr 23, 2025
@tlhunter tlhunter self-requested a review April 23, 2025 22:17
@tlhunter
Copy link
Member

Main concern: what exactly should the spans look like? Can you generate a unrelated pg query in your test app talking to the same DB to compare results / attributes? Might be worth meeting with a customer next week.

@tlhunter tlhunter force-pushed the bojbrook-prisma-plugin branch 2 times, most recently from 990780d to 0cc6d3d Compare May 2, 2025 16:08
@tlhunter
Copy link
Member

tlhunter commented May 2, 2025

This looks good to me but I'd like someone else to review as well.

Copy link
Collaborator

@BridgeAR BridgeAR left a comment

Choose a reason for hiding this comment

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

This is definitely great work!

I left a few minor comments about making the code a tad faster and tests a tad more readable.

The only concern I have is the added startTime property added to the span. I don't think it's a good idea to have that only for Prisma.

@tlhunter
Copy link
Member

tlhunter commented May 8, 2025

Also we would like to release this disabled by default, get some user feedback, before enabling by default.

@bojbrook bojbrook force-pushed the bojbrook-prisma-plugin branch from 0cc6d3d to d004e81 Compare May 14, 2025 18:11
@bojbrook bojbrook force-pushed the bojbrook-prisma-plugin branch from 1b30f61 to 0dd83b0 Compare May 20, 2025 14:08
@BridgeAR BridgeAR requested a review from tlhunter May 21, 2025 10:50
 Please enter the commit message for your changes. Lines starting
@crysmags crysmags force-pushed the bojbrook-prisma-plugin branch 3 times, most recently from cc201f8 to a0bbfa5 Compare June 13, 2025 14:37
BridgeAR
BridgeAR previously approved these changes Jun 21, 2025
Copy link
Collaborator

@BridgeAR BridgeAR left a comment

Choose a reason for hiding this comment

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

Green CI 🎉

This should be approved by someone else as well, since I pushed the latest commits. @rochdev and me had a productive pairing :)

BridgeAR
BridgeAR previously approved these changes Jun 21, 2025
Copy link
Collaborator

@BridgeAR BridgeAR left a comment

Choose a reason for hiding this comment

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

Still LGTM

rochdev
rochdev previously approved these changes Jun 21, 2025
@BridgeAR BridgeAR dismissed stale reviews from rochdev and themself via e4c2fcc June 23, 2025 12:17
@BridgeAR BridgeAR force-pushed the bojbrook-prisma-plugin branch from a1578e9 to e4c2fcc Compare June 23, 2025 12:17
Copy link
Collaborator

@BridgeAR BridgeAR left a comment

Choose a reason for hiding this comment

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

I just signed all commits and fixed the mentioned typo.

Still LG from my side

@BridgeAR BridgeAR enabled auto-merge (squash) June 23, 2025 12:25
@BridgeAR BridgeAR merged commit b269a72 into master Jun 23, 2025
536 checks passed
@BridgeAR BridgeAR deleted the bojbrook-prisma-plugin branch June 23, 2025 12:30
@swordfish444
Copy link

This is amazing! When do we expect the release?

ghost pushed a commit that referenced this pull request Jun 24, 2025
Next to the prisma instrumentation this is also improving the way
externals is able to install additional dependencies in our test setup.
The dependency version may now be pinned to the main dependency
version to align these by specifying the main dependency as `dep`.

---------

Co-authored-by: Thomas Hunter II <tlhunter@datadog.com>
Co-authored-by: Crystal Magloire <crys.magloire@gmail.com>
Co-authored-by: Ruben Bridgewater <ruben.bridgewater@datadoghq.com>
Co-authored-by: Roch Devost <roch.devost@datadoghq.com>
@ghost ghost mentioned this pull request Jun 24, 2025
szegedi pushed a commit that referenced this pull request Jul 1, 2025
Next to the prisma instrumentation this is also improving the way
externals is able to install additional dependencies in our test setup.
The dependency version may now be pinned to the main dependency
version to align these by specifying the main dependency as `dep`.

---------

Co-authored-by: Thomas Hunter II <tlhunter@datadog.com>
Co-authored-by: Crystal Magloire <crys.magloire@gmail.com>
Co-authored-by: Ruben Bridgewater <ruben.bridgewater@datadoghq.com>
Co-authored-by: Roch Devost <roch.devost@datadoghq.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Request: Add support for Prisma query tracing
7 participants