Skip to content

test: ignore Node http socketErrorListener leak#8177

Merged
BridgeAR merged 2 commits intomasterfrom
BridgeAR/2026-04-29-work-around-event-leak
Apr 29, 2026
Merged

test: ignore Node http socketErrorListener leak#8177
BridgeAR merged 2 commits intomasterfrom
BridgeAR/2026-04-29-work-around-event-leak

Conversation

@BridgeAR
Copy link
Copy Markdown
Member

This stops MaxListenersExceededWarning from crashing the test process on Node v24.15.0, which leaks an internal socketErrorListener on every keep-alive agent socket reuse. Tests that issue several requests through the same socket — instrumentation-http and the RASP fastify blocking suite are the current victims — pile up enough listeners to trip our strict defaultMaxListeners=6 and crash via the warning rethrow.

Detect the leak by its stable signature: two or more listeners named socketErrorListener on the same emitter for event error. The upstream fix is merged on Node main but not yet released in v24.x; once it ships the duplicates disappear and the detector returns false again, so real listener leaks resume throwing.

Refs: nodejs/node#61770
Refs: nodejs/node#62872

This stops `MaxListenersExceededWarning` from crashing the test process on
Node v24.15.0, which leaks an internal `socketErrorListener` on every
keep-alive agent socket reuse. Tests that issue several requests through
the same socket — `instrumentation-http` and the RASP fastify blocking
suite are the current victims — pile up enough listeners to trip our
strict `defaultMaxListeners=6` and crash via the warning rethrow.

Detect the leak by its stable signature: two or more listeners named
`socketErrorListener` on the same emitter for event `error`. The upstream
fix is merged on Node `main` but not yet released in v24.x; once it ships
the duplicates disappear and the detector returns false again, so real
listener leaks resume throwing.

Refs: nodejs/node#61770
Refs: nodejs/node#62872
@BridgeAR BridgeAR requested a review from a team as a code owner April 29, 2026 20:05
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 29, 2026

Overall package size

Self size: 5.67 MB
Deduped: 6.52 MB
No deduping: 6.52 MB

Dependency sizes | name | version | self size | total size | |------|---------|-----------|------------| | import-in-the-middle | 3.0.1 | 82.56 kB | 817.39 kB | | dc-polyfill | 0.1.10 | 26.73 kB | 26.73 kB |

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

@datadog-datadog-prod-us1-2
Copy link
Copy Markdown

datadog-datadog-prod-us1-2 Bot commented Apr 29, 2026

Tests

🎉 All green!

❄️ No new flaky tests detected
🧪 All tests passed

🎯 Code Coverage (details)
Patch Coverage: 100.00%
Overall Coverage: 71.50% (+6.41%)

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: caf535b | Docs | Datadog PR Page | Give us feedback!

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e0a0267646

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread packages/dd-trace/test/setup/core.js
@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 29, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 77.19%. Comparing base (a9013ae) to head (caf535b).
⚠️ Report is 1 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #8177      +/-   ##
==========================================
+ Coverage   71.83%   77.19%   +5.36%     
==========================================
  Files         732      813      +81     
  Lines       33452    37658    +4206     
==========================================
+ Hits        24029    29070    +5041     
+ Misses       9423     8588     -835     
Flag Coverage Δ
aiguard-macos 35.82% <ø> (-0.09%) ⬇️
aiguard-ubuntu 35.93% <ø> (-0.09%) ⬇️
aiguard-windows 35.72% <ø> (-0.09%) ⬇️
apm-capabilities-tracing-macos 48.20% <ø> (?)
apm-capabilities-tracing-ubuntu-active 48.23% <ø> (?)
apm-capabilities-tracing-ubuntu-latest 48.19% <ø> (?)
apm-capabilities-tracing-ubuntu-maintenance 48.23% <ø> (?)
apm-capabilities-tracing-ubuntu-oldest 48.21% <ø> (?)
apm-capabilities-tracing-windows 47.97% <ø> (?)
apm-integrations-aerospike-18-gte.5.2.0 34.97% <ø> (-0.09%) ⬇️
apm-integrations-aerospike-20-gte.5.5.0 34.99% <ø> (-0.09%) ⬇️
apm-integrations-aerospike-22-gte.5.12.1 34.99% <ø> (-0.09%) ⬇️
apm-integrations-aerospike-22-gte.6.0.0 34.99% <ø> (-0.09%) ⬇️
apm-integrations-aerospike-eol- 34.89% <ø> (-0.09%) ⬇️
apm-integrations-child-process 36.15% <ø> (-0.09%) ⬇️
apm-integrations-confluentinc-kafka-javascript-18 41.83% <ø> (-0.09%) ⬇️
apm-integrations-confluentinc-kafka-javascript-20 41.85% <ø> (-0.09%) ⬇️
apm-integrations-confluentinc-kafka-javascript-22 41.85% <ø> (-0.09%) ⬇️
apm-integrations-confluentinc-kafka-javascript-24 41.78% <ø> (-0.09%) ⬇️
apm-integrations-couchbase-18 35.18% <ø> (-0.07%) ⬇️
apm-integrations-couchbase-eol 35.21% <ø> (-0.09%) ⬇️
apm-integrations-dns 35.00% <ø> (-0.09%) ⬇️
apm-integrations-elasticsearch 35.55% <ø> (-0.09%) ⬇️
apm-integrations-http-latest 42.98% <ø> (-0.08%) ⬇️
apm-integrations-http-maintenance 43.04% <ø> (-0.08%) ⬇️
apm-integrations-http-oldest 43.05% <ø> (-0.08%) ⬇️
apm-integrations-http2 40.35% <ø> (-0.09%) ⬇️
apm-integrations-kafkajs-latest 41.72% <ø> (-0.09%) ⬇️
apm-integrations-kafkajs-oldest 41.77% <ø> (-0.09%) ⬇️
apm-integrations-net 35.66% <ø> (-0.09%) ⬇️
apm-integrations-next-11.1.4 29.43% <ø> (-0.10%) ⬇️
apm-integrations-next-13.2.0 31.28% <ø> (-0.09%) ⬇️
apm-integrations-next-gte.10.2.0.and.lt.11 23.33% <ø> (ø)
apm-integrations-next-gte.11.0.0.and.lt.13 31.29% <ø> (-0.09%) ⬇️
apm-integrations-next-gte.13.0.0.and.lt.14 31.54% <ø> (-0.09%) ⬇️
apm-integrations-next-gte.14.0.0.and.lte.14.2.6 31.36% <ø> (-0.09%) ⬇️
apm-integrations-next-gte.14.2.7.and.lt.15 31.36% <ø> (-0.11%) ⬇️
apm-integrations-next-gte.15.0.0 31.42% <ø> (-0.11%) ⬇️
apm-integrations-prisma-18-gte.6.16.0.and.lt.7.0.0 35.52% <ø> (-0.09%) ⬇️
apm-integrations-prisma-latest-all 35.85% <ø> (-0.09%) ⬇️
apm-integrations-sharedb 34.57% <ø> (-0.09%) ⬇️
apm-integrations-tedious 35.13% <ø> (-0.09%) ⬇️
appsec-express 52.77% <ø> (-0.08%) ⬇️
appsec-fastify 49.26% <ø> (-0.07%) ⬇️
appsec-graphql 49.44% <ø> (-0.07%) ⬇️
appsec-kafka 42.08% <ø> (-0.07%) ⬇️
appsec-ldapjs 41.30% <ø> (-0.08%) ⬇️
appsec-lodash 41.42% <ø> (-0.08%) ⬇️
appsec-macos 56.79% <ø> (-0.07%) ⬇️
appsec-mongodb-core 45.69% <ø> (-0.08%) ⬇️
appsec-mongoose 46.57% <ø> (-0.07%) ⬇️
appsec-mysql 48.74% <ø> (-0.08%) ⬇️
appsec-next-latest-11.1.4 29.60% <ø> (-0.08%) ⬇️
appsec-next-latest-13.2.0 31.49% <ø> (-0.09%) ⬇️
appsec-next-latest-gte.10.2.0.and.lt.11 31.60% <ø> (ø)
appsec-next-latest-gte.11.0.0.and.lt.13 31.47% <ø> (-0.09%) ⬇️
appsec-next-latest-gte.13.0.0.and.lt.14 31.67% <ø> (-0.09%) ⬇️
appsec-next-latest-gte.14.0.0.and.lte.14.2.6 31.52% <ø> (-0.09%) ⬇️
appsec-next-latest-gte.14.2.7.and.lt.15 31.52% <ø> (-0.09%) ⬇️
appsec-next-latest-gte.15.0.0 31.52% <ø> (-0.09%) ⬇️
appsec-next-oldest-11.1.4 29.62% <ø> (-0.08%) ⬇️
appsec-next-oldest-13.2.0 31.73% <ø> (-0.09%) ⬇️
appsec-next-oldest-gte.10.2.0.and.lt.11 31.76% <ø> (ø)
appsec-next-oldest-gte.11.0.0.and.lt.13 31.49% <ø> (-0.09%) ⬇️
appsec-next-oldest-gte.13.0.0.and.lt.14 31.92% <ø> (-0.09%) ⬇️
appsec-next-oldest-gte.14.0.0.and.lte.14.2.6 31.77% <ø> (-0.09%) ⬇️
appsec-next-oldest-gte.14.2.7.and.lt.15 31.77% <ø> (-0.09%) ⬇️
appsec-next-oldest-gte.15.0.0 31.77% <ø> (-0.09%) ⬇️
appsec-node-serialize 40.60% <ø> (-0.08%) ⬇️
appsec-passport 44.59% <ø> (-0.08%) ⬇️
appsec-postgres 48.35% <ø> (-0.05%) ⬇️
appsec-sourcing 40.09% <ø> (-0.08%) ⬇️
appsec-stripe 42.32% <ø> (-0.08%) ⬇️
appsec-template 40.76% <ø> (-0.08%) ⬇️
appsec-ubuntu 56.87% <ø> (-0.07%) ⬇️
appsec-windows 56.68% <ø> (-0.07%) ⬇️
debugger-ubuntu-active 62.13% <ø> (-0.33%) ⬇️
debugger-ubuntu-latest 62.03% <ø> (-0.33%) ⬇️
debugger-ubuntu-maintenance 62.13% <ø> (-0.33%) ⬇️
debugger-ubuntu-oldest 62.23% <ø> (-0.33%) ⬇️
instrumentations-instrumentation-bluebird 29.88% <ø> (-0.09%) ⬇️
instrumentations-instrumentation-body-parser 37.74% <ø> (-0.09%) ⬇️
instrumentations-instrumentation-child_process 35.53% <ø> (-0.09%) ⬇️
instrumentations-instrumentation-cookie-parser 31.81% <ø> (-0.09%) ⬇️
instrumentations-instrumentation-express 32.03% <ø> (-0.09%) ⬇️
instrumentations-instrumentation-express-mongo-sanitize 31.93% <ø> (-0.09%) ⬇️
instrumentations-instrumentation-express-session 37.38% <ø> (-0.09%) ⬇️
instrumentations-instrumentation-fs 29.56% <ø> (-0.09%) ⬇️
instrumentations-instrumentation-generic-pool 30.59% <ø> (ø)
instrumentations-instrumentation-http 36.99% <ø> (-0.09%) ⬇️
instrumentations-instrumentation-knex 29.85% <ø> (-0.09%) ⬇️
instrumentations-instrumentation-light-my-request 37.30% <ø> (-0.09%) ⬇️
instrumentations-instrumentation-mongoose 30.94% <ø> (-0.17%) ⬇️
instrumentations-instrumentation-multer 37.52% <ø> (-0.09%) ⬇️
instrumentations-instrumentation-mysql2 35.49% <ø> (-0.09%) ⬇️
instrumentations-instrumentation-passport 41.17% <ø> (-0.08%) ⬇️
instrumentations-instrumentation-passport-http 40.95% <ø> (-0.08%) ⬇️
instrumentations-instrumentation-passport-local 41.46% <ø> (-0.08%) ⬇️
instrumentations-instrumentation-pg 35.03% <ø> (-0.09%) ⬇️
instrumentations-instrumentation-promise 29.82% <ø> (-0.09%) ⬇️
instrumentations-instrumentation-promise-js 29.83% <ø> (-0.09%) ⬇️
instrumentations-instrumentation-q 29.86% <ø> (-0.09%) ⬇️
instrumentations-instrumentation-url 29.83% <ø> (-0.09%) ⬇️
instrumentations-instrumentation-when 29.84% <ø> (-0.09%) ⬇️
llmobs-ai 38.45% <ø> (-0.09%) ⬇️
llmobs-anthropic 37.94% <ø> (-0.09%) ⬇️
llmobs-bedrock 37.15% <ø> (-0.08%) ⬇️
llmobs-google-genai 37.58% <ø> (-0.08%) ⬇️
llmobs-langchain 37.09% <ø> (-0.07%) ⬇️
llmobs-openai 41.26% <ø> (-0.08%) ⬇️
llmobs-vertex-ai 37.77% <ø> (-0.09%) ⬇️
openfeature-unit-active 50.43% <ø> (-0.52%) ⬇️
openfeature-unit-latest 50.28% <ø> (-0.52%) ⬇️
openfeature-unit-maintenance 50.43% <ø> (-0.52%) ⬇️
openfeature-unit-oldest 50.43% <ø> (-0.52%) ⬇️
platform-core 36.53% <ø> (ø)
platform-esbuild 40.80% <ø> (ø)
platform-instrumentations-misc 31.34% <ø> (ø)
platform-shimmer 42.11% <ø> (ø)
platform-unit-guardrails 35.88% <ø> (ø)
platform-webpack 20.78% <ø> (ø)
plugins-azure-durable-functions 25.36% <ø> (ø)
plugins-azure-event-hubs 25.51% <ø> (ø)
plugins-azure-service-bus 24.92% <ø> (ø)
plugins-bullmq 40.68% <ø> (-0.09%) ⬇️
plugins-cassandra 35.38% <ø> (+0.04%) ⬆️
plugins-cookie 26.47% <ø> (ø)
plugins-cookie-parser 26.28% <ø> (ø)
plugins-crypto 27.32% <ø> (ø)
plugins-dd-trace-api 35.48% <ø> (-0.09%) ⬇️
plugins-express-mongo-sanitize 26.42% <ø> (ø)
plugins-express-session 26.24% <ø> (ø)
plugins-fastify 39.38% <ø> (-0.09%) ⬇️
plugins-fetch 35.87% <ø> (-0.09%) ⬇️
plugins-fs 35.75% <ø> (-0.09%) ⬇️
plugins-generic-pool 25.40% <ø> (ø)
plugins-google-cloud-pubsub 43.07% <ø> (-0.08%) ⬇️
plugins-grpc 38.12% <ø> (-0.09%) ⬇️
plugins-handlebars 26.46% <ø> (ø)
plugins-hapi 37.36% <ø> (-0.09%) ⬇️
plugins-hono 37.61% <ø> (-0.09%) ⬇️
plugins-ioredis 35.80% <ø> (-0.09%) ⬇️
plugins-knex 26.14% <ø> (ø)
plugins-langgraph 35.14% <ø> (-0.09%) ⬇️
plugins-ldapjs 24.02% <ø> (ø)
plugins-light-my-request 25.88% <ø> (ø)
plugins-limitd-client 30.12% <ø> (-0.09%) ⬇️
plugins-lodash 25.47% <ø> (ø)
plugins-mariadb 36.71% <ø> (-0.05%) ⬇️
plugins-memcached 35.45% <ø> (-0.09%) ⬇️
plugins-microgateway-core 36.45% <ø> (-0.09%) ⬇️
plugins-modelcontextprotocol-sdk 34.39% <ø> (-0.09%) ⬇️
plugins-moleculer 38.14% <ø> (-0.09%) ⬇️
plugins-mongodb 36.64% <ø> (-0.09%) ⬇️
plugins-mongodb-core 36.27% <ø> (-0.09%) ⬇️
plugins-mongoose 36.12% <ø> (-0.09%) ⬇️
plugins-multer 26.24% <ø> (ø)
plugins-mysql 36.53% <ø> (-0.09%) ⬇️
plugins-mysql2 36.50% <ø> (-0.09%) ⬇️
plugins-node-serialize 26.51% <ø> (ø)
plugins-opensearch 35.11% <ø> (-0.09%) ⬇️
plugins-passport-http 26.30% <ø> (ø)
plugins-pino 31.91% <ø> (-0.09%) ⬇️
plugins-postgres 34.50% <ø> (-0.09%) ⬇️
plugins-process 27.32% <ø> (ø)
plugins-pug 26.47% <ø> (ø)
plugins-redis 36.01% <ø> (-0.09%) ⬇️
plugins-router 39.90% <ø> (+0.04%) ⬆️
plugins-sequelize 25.18% <ø> (ø)
plugins-test-and-upstream-amqp10 35.77% <ø> (-0.09%) ⬇️
plugins-test-and-upstream-amqplib 40.92% <ø> (-0.09%) ⬇️
plugins-test-and-upstream-apollo 36.61% <ø> (-0.08%) ⬇️
plugins-test-and-upstream-avsc 35.10% <ø> (-0.09%) ⬇️
plugins-test-and-upstream-bunyan 31.26% <ø> (-0.09%) ⬇️
plugins-test-and-upstream-connect 37.95% <ø> (-0.09%) ⬇️
plugins-test-and-upstream-graphql 37.29% <ø> (-0.09%) ⬇️
plugins-test-and-upstream-koa 37.56% <ø> (-0.09%) ⬇️
plugins-test-and-upstream-protobufjs 35.32% <ø> (-0.09%) ⬇️
plugins-test-and-upstream-rhea 41.00% <ø> (-0.09%) ⬇️
plugins-undici 36.62% <ø> (-0.09%) ⬇️
plugins-url 27.32% <ø> (ø)
plugins-valkey 35.49% <ø> (-0.09%) ⬇️
plugins-vm 27.32% <ø> (ø)
plugins-winston 31.73% <ø> (-0.09%) ⬇️
plugins-ws 39.07% <ø> (-0.09%) ⬇️
profiling-macos 40.69% <ø> (-0.08%) ⬇️
profiling-ubuntu 40.85% <ø> (-0.53%) ⬇️
profiling-windows 40.87% <ø> (-0.08%) ⬇️
serverless-azure-functions-client 25.25% <ø> (ø)
serverless-azure-functions-eventhubs 25.25% <ø> (ø)
serverless-azure-functions-servicebus 25.25% <ø> (ø)
serverless-lambda 33.56% <ø> (-0.09%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ 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
Copy Markdown

pr-commenter Bot commented Apr 29, 2026

Benchmarks

Benchmark execution time: 2026-04-29 20:56:51

Comparing candidate commit caf535b in PR branch BridgeAR/2026-04-29-work-around-event-leak with baseline commit a9013ae in branch master.

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

rochdev
rochdev previously approved these changes Apr 29, 2026
@BridgeAR BridgeAR force-pushed the BridgeAR/2026-04-29-work-around-event-leak branch from 274ead6 to caf535b Compare April 29, 2026 20:47
@BridgeAR BridgeAR enabled auto-merge (squash) April 29, 2026 20:56
@BridgeAR BridgeAR merged commit 96c92d9 into master Apr 29, 2026
875 checks passed
@BridgeAR BridgeAR deleted the BridgeAR/2026-04-29-work-around-event-leak branch April 29, 2026 21:19
dd-octo-sts Bot pushed a commit that referenced this pull request Apr 30, 2026
This stops `MaxListenersExceededWarning` from crashing the test process on
Node v24.15.0, which leaks an internal `socketErrorListener` on every
keep-alive agent socket reuse. Tests that issue several requests through
the same socket — `instrumentation-http` and the RASP fastify blocking
suite are the current victims — pile up enough listeners to trip our
strict `defaultMaxListeners=6` and crash via the warning rethrow.

Detect the leak by its stable signature: two or more listeners named
`socketErrorListener` on the same emitter for event `error`. The upstream
fix is merged on Node `main` but not yet released in v24.x; once it ships
the duplicates disappear and the detector returns false again, so real
listener leaks resume throwing.

Refs: nodejs/node#61770
Refs: nodejs/node#62872
@dd-octo-sts dd-octo-sts Bot mentioned this pull request Apr 30, 2026
BridgeAR added a commit that referenced this pull request Apr 30, 2026
This stops `MaxListenersExceededWarning` from crashing the test process on
Node v24.15.0, which leaks an internal `socketErrorListener` on every
keep-alive agent socket reuse. Tests that issue several requests through
the same socket — `instrumentation-http` and the RASP fastify blocking
suite are the current victims — pile up enough listeners to trip our
strict `defaultMaxListeners=6` and crash via the warning rethrow.

Detect the leak by its stable signature: two or more listeners named
`socketErrorListener` on the same emitter for event `error`. The upstream
fix is merged on Node `main` but not yet released in v24.x; once it ships
the duplicates disappear and the detector returns false again, so real
listener leaks resume throwing.

Refs: nodejs/node#61770
Refs: nodejs/node#62872
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.

2 participants