DataDog / dd-trace-js

JavaScript APM Tracer
https://docs.datadoghq.com/tracing/
Other
647 stars 306 forks source link

It has started breaking at run time #2445

Closed praveen-tripathi closed 10 months ago

praveen-tripathi commented 2 years ago

Expected behaviour

Should work Actual behaviour

Breaking with below error trace:

node_modules/dd-trace/packages/datadog-instrumentations/src/http/server.js:57 throw err ^

TypeError: arg must be an array of [ee, events...] arrays

Steps to reproduce

Environment

Pckage.json dependencies:

"dependencies": { "@grpc/grpc-js": "^1.6.7", "@grpc/proto-loader": "^0.6.13", "@hapi/joi": "^16.1.8", "@slack/webhook": "^5.0.3", "async-redis": "^2.0.0", "await-timeout": "^1.1.1", "axios": "^0.19.2", "checkout-sdk-node": "^2.0.1", "clicksend": "^5.0.37", "compression": "^1.7.4", "connect-mongodb-session": "^2.3.3", "connect-redis": "^4.0.4", "cookie-parser": "^1.4.5", "cors": "^2.8.5", "crypto-js": "^4.0.0", "dd-trace": "^0.22.1", "debug": "~2.6.9", "devbridge-autocomplete": "^1.4.11", "dotenv": "^8.1.0", "ejs": "~2.6.1", "express": "~4.16.1", "express-session": "^1.17.1", "express-useragent": "^1.0.13", "firebase-admin": "^8.12.1", "google-libphonenumber": "^3.2.10", "helmet": "^3.23.2", "i18n": "^0.15.0", "i18next": "^21.6.15", "jquery": "^3.5.1", "jquery-lazy": "^1.7.10", "lalamove-js": "^1.0.0", "lodash": "^4.17.21", "md5": "^2.3.0", "mini-css-extract-plugin": "^0.8.2", "mjml": "^4.6.3", "moment": "^2.27.0", "moment-timezone": "^0.5.31", "morgan": "~1.9.1", "path": "^0.12.7", "qrcode": "^1.4.4", "redis": "^2.8.0", "sass": "^1.26.9", "sass-loader": "^8.0.2", "select2": "^4.0.13", "serve-favicon": "^2.5.0", "serve-index": "^1.9.1", "ssl-root-cas": "^1.3.1", "stripe": "^8.66.0", "uglifyjs-webpack-plugin": "^2.2.0", "urlencode": "^1.1.0", "uuid": "^3.4.0", "webpack": "^4.43.0", "webpack-cli": "^3.3.12", "webpack-node-externals": "^1.7.2", "winston": "^3.3.3" },

rochdev commented 2 years ago

Can you provide the whole stack trace of the error? Also, what version of dd-trace are you using?

praveen-tripathi commented 2 years ago

I'm using version 0.22.1

Here is the full stack trace

/Users/praveentripathi/Documents/projects/app-demo/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:18 throw e ^

TypeError: arg must be an array of [ee, events...] arrays at TypeError. (/Users/praveentripathi/Documents/projects/app-demo/node_modules/core-js/internals/wrap-error-constructor-with-cause.js:37:62) at new TypeError (/Users/praveentripathi/Documents/projects/app-demo/node_modules/core-js/modules/es.error.cause.js:43:47) at first (/Users/praveentripathi/Documents/projects/app-demo/node_modules/finalhandler/index.js:26:11) at Function.handle (/Users/praveentripathi/Documents/projects/app-demo/node_modules/express/lib/application.js:162:26) at Function.handleWithTrace [as handle] (/Users/praveentripathi/Documents/projects/app-demo/node_modules/dd-trace/packages/datadog-plugin-express/src/index.js:13:21) at Server.app (/Users/praveentripathi/Documents/projects/app-demo/node_modules/express/lib/express.js:39:9) at Server.emit (events.js:198:13) at Server.EventEmitter.emit (domain.js:448:20) at web.instrument (/Users/praveentripathi/Documents/projects/app-demo/node_modules/dd-trace/packages/datadog-plugin-http/src/server.js:12:23) at tracer.scope.activate (/Users/praveentripathi/Documents/projects/app-demo/node_modules/dd-trace/packages/dd-trace/src/plugins/util/web.js:74:60) at Scope._activate (/Users/praveentripathi/Documents/projects/app-demo/node_modules/dd-trace/packages/dd-trace/src/scope/async_hooks.js:53:14) at Scope.activate (/Users/praveentripathi/Documents/projects/app-demo/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19) at Object.instrument (/Users/praveentripathi/Documents/projects/app-demo/node_modules/dd-trace/packages/dd-trace/src/plugins/util/web.js:74:39) at Server.emitWithTrace (/Users/praveentripathi/Documents/projects/app-demo/node_modules/dd-trace/packages/datadog-plugin-http/src/server.js:11:20) at parserOnIncoming (_http_server.js:677:12) at HTTPParser.parserOnHeadersComplete (_http_common.js:109:17)

rochdev commented 2 years ago

This version has been deprecated for a long time at this point and might have old unresolved bugs. Can you try upgrading to the latest 2.x or 3.x versions of dd-trace?

praveen-tripathi commented 2 years ago

I just tried with 2.18.0, still same issue

/Users/praveentripathi/Documents/projects/app-demo/node_modules/dd-trace/packages/datadog-instrumentations/src/http/server.js:57 throw err ^

TypeError: arg must be an array of [ee, events...] arrays at TypeError. (/Users/praveentripathi/Documents/projects/app-demo/node_modules/core-js/internals/wrap-error-constructor-with-cause.js:37:62) at new TypeError (/Users/praveentripathi/Documents/projects/app-demo/node_modules/core-js/modules/es.error.cause.js:43:47) at first (/Users/praveentripathi/Documents/projects/app-demo/node_modules/finalhandler/index.js:26:11) at Function.handle (/Users/praveentripathi/Documents/projects/app-demo/node_modules/express/lib/application.js:162:26) at Function.handle (/Users/praveentripathi/Documents/projects/app-demo/node_modules/dd-trace/packages/datadog-instrumentations/src/express.js:15:19) at Server.app (/Users/praveentripathi/Documents/projects/app-demo/node_modules/express/lib/express.js:39:9) at Server.emit (events.js:314:20) at Server.EventEmitter.emit (domain.js:483:12) at /Users/praveentripathi/Documents/projects/app-demo/node_modules/dd-trace/packages/datadog-instrumentations/src/http/server.js:53:23 at exports.AsyncResource.runInAsyncScope (async_hooks.js:189:9) at Server. (/Users/praveentripathi/Documents/projects/app-demo/node_modules/dd-trace/packages/datadog-instrumentations/src/http/server.js:49:28) at parserOnIncoming (_http_server.js:779:12) at HTTPParser.parserOnHeadersComplete (_http_common.js:122:17)

Just to let you know using below dependencies:

"dependencies": { "@grpc/grpc-js": "^1.6.7", "@grpc/proto-loader": "^0.6.13", "@hapi/joi": "^16.1.8", "@slack/webhook": "^5.0.3", "async-redis": "^2.0.0", "await-timeout": "^1.1.1", "axios": "^0.19.2", "checkout-sdk-node": "^2.0.1", "clicksend": "^5.0.37", "compression": "^1.7.4", "connect-mongodb-session": "^2.3.3", "connect-redis": "^4.0.4", "cookie-parser": "^1.4.5", "cors": "^2.8.5", "crypto-js": "^4.0.0", "dd-trace": "^2.18.0", "debug": "~2.6.9", "devbridge-autocomplete": "^1.4.11", "dotenv": "^8.1.0", "ejs": "~2.6.1", "express": "~4.16.1", "express-session": "^1.17.1", "express-useragent": "^1.0.13", "firebase-admin": "^8.12.1", "google-libphonenumber": "^3.2.10", "helmet": "^3.23.2", "i18n": "^0.15.0", "i18next": "^21.6.15", "i18next-chained-backend": "^3.1.0", "i18next-http-backend": "^1.4.1", "i18next-localstorage-backend": "^3.1.3", "jquery": "^3.5.1", "jquery-lazy": "^1.7.10", "lalamove-js": "^1.0.0", "lodash": "^4.17.21", "md5": "^2.3.0", "mini-css-extract-plugin": "^0.8.2", "mjml": "^4.6.3", "moment": "^2.27.0", "moment-timezone": "^0.5.31", "morgan": "~1.9.1", "path": "^0.12.7", "qrcode": "^1.4.4", "redis": "^2.8.0", "sass": "^1.26.9", "sass-loader": "^8.0.2", "select2": "^4.0.13", "serve-favicon": "^2.5.0", "serve-index": "^1.9.1", "ssl-root-cas": "^1.3.1", "stripe": "^8.66.0", "uglifyjs-webpack-plugin": "^2.2.0", "urlencode": "^1.1.0", "uuid": "^3.4.0", "webpack": "^4.43.0", "webpack-cli": "^3.3.12", "webpack-node-externals": "^1.7.2", "winston": "^3.3.3" },

App compiles without any issue but when trying to access it, then getting the above issue.

rochdev commented 2 years ago

I looked at the code that is included in the stack trace and I don't see anything that could result in that error. Is this something you can reproduce with a code snippet you can share?

Qard commented 2 years ago

You say it started breaking, did it work previously? If so, have you upgraded any dependencies since then? I've looked through the code path from the stack trace and don't see what could be causing the error. The line for at first (/Users/praveentripathi/Documents/projects/app-demo/node_modules/finalhandler/index.js:26:11) is a bit suspicious as the first function is not part of finalhandler, it's deep in a dependency on ee-first through on-finished. The specific error being thrown is this, but I don't see any possible way for it to receive a non-array from on-finished. 😕

rochdev commented 1 year ago

@praveen-tripathi Do you still have the issue? If so, we'd need more information to narrow it down as @Qard mentioned above.

tlhunter commented 10 months ago

Closing this for now since we don't have enough information to diagnose. Feel free to add additional information and reopen the issue!