-
Notifications
You must be signed in to change notification settings - Fork 318
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
feat(tracing): add experimental trace levels feature #5364
base: master
Are you sure you want to change the base?
Conversation
Overall package sizeSelf size: 8.84 MB Dependency sizes| name | version | self size | total size | |------|---------|-----------|------------| | @datadog/libdatadog | 0.5.0 | 29.83 MB | 29.83 MB | | @datadog/native-appsec | 8.4.0 | 19.25 MB | 19.26 MB | | @datadog/native-iast-taint-tracking | 3.3.0 | 13.77 MB | 13.78 MB | | @datadog/pprof | 5.5.1 | 9.79 MB | 10.17 MB | | protobufjs | 7.2.5 | 2.77 MB | 5.16 MB | | @datadog/native-iast-rewriter | 2.8.0 | 2.6 MB | 2.74 MB | | @opentelemetry/core | 1.14.0 | 872.87 kB | 1.47 MB | | @datadog/native-metrics | 3.1.0 | 1.06 MB | 1.46 MB | | @opentelemetry/api | 1.8.0 | 1.21 MB | 1.21 MB | | import-in-the-middle | 1.13.1 | 117.64 kB | 840.3 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.0 | 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 | | shell-quote | 1.8.1 | 44.96 kB | 44.96 kB | | istanbul-lib-coverage | 3.2.0 | 29.34 kB | 29.34 kB | | rfdc | 1.3.1 | 25.21 kB | 25.21 kB | | @isaacs/ttlcache | 1.4.1 | 25.2 kB | 25.2 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 | | 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 | | 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.3 | 4.47 kB | 4.47 kB |🤖 This report was automatically generated by heaviest-objects-in-the-universe |
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #5364 +/- ##
==========================================
+ Coverage 80.70% 81.34% +0.63%
==========================================
Files 491 321 -170
Lines 21879 12659 -9220
==========================================
- Hits 17658 10297 -7361
+ Misses 4221 2362 -1859 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Datadog ReportBranch report: ✅ 0 Failed, 670 Passed, 0 Skipped, 14m 40.95s Total Time |
BenchmarksBenchmark execution time: 2025-03-06 21:49:07 Comparing candidate commit 259fa91 in PR branch Found 0 performance improvements and 0 performance regressions! Performance is the same for 699 metrics, 14 unstable metrics. |
@@ -94,7 +94,7 @@ class TracingPlugin extends Plugin { | |||
} | |||
|
|||
addError (error, span = this.activeSpan) { | |||
if (span && !span._spanContext._tags.error) { | |||
if (!span.context()._tags.error) { |
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.
Why remove this check that the span is truthy?
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.
Leftover from a previous design iteration, i reverted this code change.
@@ -267,7 +267,7 @@ const web = { | |||
} | |||
} | |||
|
|||
const span = tracer.startSpan(name, { childOf, links: childOf?._links }) | |||
const span = tracer.startSpan(name, { childOf, links: childOf?._links, kind: SERVER }) |
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 this just something we were missing before?
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.
No, we were just setting span.kind
via setTag
. But we need it at the time of span creation, so we gotta add it here.
tags['span.kind'] = options.kind | ||
} | ||
|
||
options.tags = tags |
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.
Why all these changes to tags, on lines 59-67?
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.
Leftover from an initial implementation I did, they are not necessary so I have removed these changes.
What does this PR do?
This PR adds an experimental trace-levels feature., that can be used to only create spans that are considered service entry and service exit. To determine which spans to create / not create, the code relies on the presence of the
span.kind
tag, if no tag is present, no span is created for the operation, instead, a No-Op span is created and returned.The changes to NoOp Span class allow for context linking to work out of the box. Context for no-op spans created with this feature will point towards the next valid upstream parent span.
Motivation
Plugin Checklist
Additional Notes