Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

juan-fernandez
Copy link
Collaborator

@juan-fernandez juan-fernandez commented Sep 24, 2025

What does this PR do?

Add a file system cache for git operations for test optimization.

Motivation

Monorepo tools like https://microsoft.github.io/lage/ make it so that running multiple test sessions within the same CI job is easy. dd-trace does a lot of operations at the test session level:

  • git metadata upload
  • git tags extraction
  • requests to datadog's backend

Since tools like lage will run potentially thousands of test sessions, the dd-trace instance in each of these test sessions will repeat these operations.

This PR makes it so that if you pass DD_EXPERIMENTAL_TEST_OPT_GIT_CACHE_ENABLED, a file system cache for git operations will be used.

Plugin Checklist

  • Integration tests.

Copy link

github-actions bot commented Sep 24, 2025

Overall package size

Self size: 12.47 MB
Deduped: 112.57 MB
No deduping: 112.96 MB

Dependency sizes | name | version | self size | total size | |------|---------|-----------|------------| | @datadog/libdatadog | 0.7.0 | 35.02 MB | 35.02 MB | | @datadog/native-appsec | 10.2.1 | 20.64 MB | 20.65 MB | | @datadog/native-iast-taint-tracking | 4.0.0 | 11.72 MB | 11.73 MB | | @datadog/pprof | 5.10.0 | 9.91 MB | 10.3 MB | | @opentelemetry/core | 1.30.1 | 908.66 kB | 7.16 MB | | protobufjs | 7.5.4 | 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.9.0 | 1.22 MB | 1.22 MB | | jsonpath-plus | 10.3.0 | 617.18 kB | 1.08 MB | | import-in-the-middle | 1.14.3 | 123.61 kB | 852.19 kB | | lru-cache | 10.4.3 | 804.3 kB | 804.3 kB | | opentracing | 0.14.7 | 194.81 kB | 194.81 kB | | source-map | 0.7.6 | 185.63 kB | 185.63 kB | | pprof-format | 2.2.1 | 163.06 kB | 163.06 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 | 7.0.5 | 63.38 kB | 63.38 kB | | istanbul-lib-coverage | 3.2.2 | 34.37 kB | 34.37 kB | | rfdc | 1.4.1 | 27.15 kB | 27.15 kB | | dc-polyfill | 0.1.10 | 26.73 kB | 26.73 kB | | @isaacs/ttlcache | 1.4.1 | 25.2 kB | 25.2 kB | | tlhunter-sorted-set | 0.1.0 | 24.94 kB | 24.94 kB | | shell-quote | 1.8.3 | 23.74 kB | 23.74 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 Sep 24, 2025

Codecov Report

❌ Patch coverage is 40.96386% with 49 lines in your changes missing coverage. Please review.
✅ Project coverage is 83.89%. Comparing base (5be1873) to head (5d9f6e3).
⚠️ Report is 34 commits behind head on master.

Files with missing lines Patch % Lines
packages/dd-trace/src/plugins/util/git-cache.js 25.75% 49 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #6509      +/-   ##
==========================================
- Coverage   84.07%   83.89%   -0.18%     
==========================================
  Files         484      485       +1     
  Lines       20246    20345      +99     
==========================================
+ Hits        17021    17068      +47     
- Misses       3225     3277      +52     

☔ 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.

This comment has been minimized.

@pr-commenter
Copy link

pr-commenter bot commented Sep 24, 2025

Benchmarks

Benchmark execution time: 2025-09-26 16:01:03

Comparing candidate commit 5d9f6e3 in PR branch juan-fernandez/git-cache-for-multi-session-jobs with baseline commit 5be1873 in branch master.

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

@juan-fernandez juan-fernandez force-pushed the juan-fernandez/git-cache-for-multi-session-jobs branch 2 times, most recently from 434b16f to 7392da7 Compare September 24, 2025 09:29
@juan-fernandez juan-fernandez force-pushed the juan-fernandez/git-cache-for-multi-session-jobs branch from 1538b84 to 437463c Compare September 25, 2025 11:47
@juan-fernandez juan-fernandez changed the title [test optimization] [do not merge] [test] Add simple git cache [test optimization] Add file system cache for git commands Sep 25, 2025
@juan-fernandez juan-fernandez marked this pull request as ready for review September 26, 2025 15:46
@juan-fernandez juan-fernandez requested review from a team as code owners September 26, 2025 15:46
@watson
Copy link
Collaborator

watson commented Sep 26, 2025

Why are you not adding these to config.js?

@juan-fernandez
Copy link
Collaborator Author

Why are you not adding these to config.js?

no particular reason. Going through config.js would make the code harder to read IMO, but it'd be indeed more consistent. We can do that once we're sure this feature is going to be shipped, as right now it's just an experiment

@juan-fernandez juan-fernandez merged commit 23f6154 into master Sep 29, 2025
728 checks passed
@juan-fernandez juan-fernandez deleted the juan-fernandez/git-cache-for-multi-session-jobs branch September 29, 2025 14:27
This was referenced Sep 30, 2025
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.

3 participants