Skip to content
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

temporary upper bound to the router instrumentation #4862

Closed
wants to merge 1 commit into from

Conversation

wantsui
Copy link
Contributor

@wantsui wantsui commented Nov 5, 2024

What does this PR do?

When you try to spin up an Express 5.x application with the tracer, there's an error about fast_star:

TypeError: Cannot read properties of undefined (reading 'fast_star')

It looks like Express 5.x uses Router 2.x which the instrumentation isn't ready to handle at the moment.

This PR adds a temporary upper bound so we only try to trace router 1.x so the error doesn't get thrown.

One problem I'm seeing right now is that even though the test passes, the application throws errors like:

Found incompatible integration version: router@2.0.0
Error during ddtrace instrumentation of application, aborting.
Error: No original method use.

Researching an alternative with #4872

Motivation

Related to AIDM-438

Plugin Checklist

Additional Notes

Copy link

github-actions bot commented Nov 5, 2024

Overall package size

Self size: 7.92 MB
Deduped: 64.94 MB
No deduping: 65.28 MB

Dependency sizes | name | version | self size | total size | |------|---------|-----------|------------| | @datadog/native-appsec | 8.2.1 | 19.18 MB | 19.19 MB | | @datadog/native-iast-taint-tracking | 3.2.0 | 13.9 MB | 13.91 MB | | @datadog/pprof | 5.4.1 | 9.76 MB | 10.13 MB | | protobufjs | 7.2.5 | 2.77 MB | 5.16 MB | | @datadog/native-iast-rewriter | 2.5.0 | 2.51 MB | 2.65 MB | | @opentelemetry/core | 1.14.0 | 872.87 kB | 1.47 MB | | @datadog/native-metrics | 3.0.1 | 1.06 MB | 1.46 MB | | @opentelemetry/api | 1.8.0 | 1.21 MB | 1.21 MB | | import-in-the-middle | 1.11.2 | 112.74 kB | 826.22 kB | | msgpack-lite | 0.1.26 | 201.16 kB | 281.59 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 | | semver | 7.6.3 | 95.82 kB | 95.82 kB | | lodash.sortby | 4.7.0 | 75.76 kB | 75.76 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 | | rfdc | 1.3.1 | 25.21 kB | 25.21 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 | | koalas | 1.0.2 | 6.47 kB | 6.47 kB | | path-to-regexp | 0.1.10 | 6.38 kB | 6.38 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

@pr-commenter
Copy link

pr-commenter bot commented Nov 5, 2024

Benchmarks

Benchmark execution time: 2024-11-05 22:28:03

Comparing candidate commit 7ec94c5 in PR branch wantsui/temporary-upper-bound-on-router with baseline commit 497ff72 in branch master.

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

@@ -170,7 +170,7 @@ function createWrapRouterMethod (name) {

const wrapRouterMethod = createWrapRouterMethod('router')

addHook({ name: 'router', versions: ['>=1'] }, Router => {
addHook({ name: 'router', versions: ['>=1 <2.0.0'] }, Router => {
Copy link
Contributor

Choose a reason for hiding this comment

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

So just for my own clarity

We don't support Express v5+ because we actually don't support Router v2+.
Which means that we first need to support v2 of Router and then we can see if that fixes Express v5, if not then we need to also support Express v5

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes, we'd need to properly support Router 2.x along with Express 5.x. In my local testing, I got spans from express.request with Express 5.x if we don't try to trace router 2, but not any of the express middleware spans. To fully support Express 5.x, we'd need to create middleware spans too.

@wantsui
Copy link
Contributor Author

wantsui commented Nov 11, 2024

Just updated the description of the PR that even though all the tests pass, except for 2 unrelated checklist type ones, the app itself is throwing an error with this branch:

Found incompatible integration version: router@2.0.0
Error during ddtrace instrumentation of application, aborting.
Error: No original method use.

I don't consider this to be a great outcome either. Researching an approach where we don't cap the upper bound and just try to fix Router 2 instead: #4872

@wantsui
Copy link
Contributor Author

wantsui commented Nov 12, 2024

Closing this PR in favor of #4872

@wantsui wantsui closed this Nov 12, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants