Error: write EPIPE
Expected behaviour no error to be thrown
Actual behaviour sometimes an uncaught exception is thrown:
Error: write EPIPE
at WriteWrap.onWriteComplete [as oncomplete] (node:internal/stream_base_commons:94:16)
at WriteWrap.callbackTrampoline (node:internal/async_hooks:130:17)
this is very annoying because it causes the process to die and i cannot catch it because i have no way to check it was emitted by the library
here is an image of the error that is being printed to the console when I do not catch it:
you can see the error originated in
datadog-instrumentations/src/net
Steps to reproduce have trace for long running tasks
Environment PROD
- Operation system: debian
- Node.js version: 20.10.0
- Tracer version: 4.20
- Agent version: 7 (lodatadog-3.38.4)
UPDATE: after upgrading to 4.21 we don't get this error anymore we get a new error:
RangeError: Maximum call stack size exceeded
at Socket.setStreamTimeout [as setTimeout] (node:internal/stream_base_commons:237:26)
at socket.setTimeout (/app/node_modules/dd-trace/packages/datadog-instrumentations/src/http/client.js:90:41)
at socket.setTimeout (/app/node_modules/dd-trace/packages/datadog-instrumentations/src/http/client.js:90:41)
at socket.setTimeout (/app/node_modules/dd-trace/packages/datadog-instrumentations/src/http/client.js:90:41)
at socket.setTimeout (/app/node_modules/dd-trace/packages/datadog-instrumentations/src/http/client.js:90:41)
at socket.setTimeout (/app/node_modules/dd-trace/packages/datadog-instrumentations/src/http/client.js:90:41)
at socket.setTimeout (/app/node_modules/dd-trace/packages/datadog-instrumentations/src/http/client.js:90:41)
at socket.setTimeout (/app/node_modules/dd-trace/packages/datadog-instrumentations/src/http/client.js:90:41)
at socket.setTimeout (/app/node_modules/dd-trace/packages/datadog-instrumentations/src/http/client.js:90:41)
at socket.setTimeout (/app/node_modules/dd-trace/packages/datadog-instrumentations/src/http/client.js:90:41)
We're also seeing this error:
RangeError: Maximum call stack size exceeded
at Readable.removeListener (node:internal/streams/readable:957:45)
at Socket.setStreamTimeout [as setTimeout] (node:internal/stream_base_commons:253:12)
at socket.setTimeout (/datadog-lib/node_modules/dd-trace/packages/datadog-instrumentations/src/http/client.js:90:41)
at socket.setTimeout (/datadog-lib/node_modules/dd-trace/packages/datadog-instrumentations/src/http/client.js:90:41)
at socket.setTimeout (/datadog-lib/node_modules/dd-trace/packages/datadog-instrumentations/src/http/client.js:90:41)
at socket.setTimeout (/datadog-lib/node_modules/dd-trace/packages/datadog-instrumentations/src/http/client.js:90:41)
at socket.setTimeout (/datadog-lib/node_modules/dd-trace/packages/datadog-instrumentations/src/http/client.js:90:41)
at socket.setTimeout (/datadog-lib/node_modules/dd-trace/packages/datadog-instrumentations/src/http/client.js:90:41)
at socket.setTimeout (/datadog-lib/node_modules/dd-trace/packages/datadog-instrumentations/src/http/client.js:90:41)
at socket.setTimeout (/datadog-lib/node_modules/dd-trace/packages/datadog-instrumentations/src/http/client.js:90:41)
at socket.setTimeout (/datadog-lib/node_modules/dd-trace/packages/datadog-instrumentations/src/http/client.js:90:41)
at socket.setTimeout (/datadog-lib/node_modules/dd-trace/packages/datadog-instrumentations/src/http/client.js:90:41)
at socket.setTimeout (/datadog-lib/node_modules/dd-trace/packages/datadog-instrumentations/src/http/client.js:90:41)
at socket.setTimeout (/datadog-lib/node_modules/dd-trace/packages/datadog-instrumentations/src/http/client.js:90:41)
at socket.setTimeout (/datadog-lib/node_modules/dd-trace/packages/datadog-instrumentations/src/http/client.js:90:41)
at socket.setTimeout (/datadog-lib/node_modules/dd-trace/packages/datadog-instrumentations/src/http/client.js:90:41)
at socket.setTimeout (/datadog-lib/node_modules/dd-trace/packages/datadog-instrumentations/src/http/client.js:90:41)
at socket.setTimeout (/datadog-lib/node_modules/dd-trace/packages/datadog-instrumentations/src/http/client.js:90:41)
at socket.setTimeout (/datadog-lib/node_modules/dd-trace/packages/datadog-instrumentations/src/http/client.js:90:41)
at socket.setTimeout (/datadog-lib/node_modules/dd-trace/packages/datadog-instrumentations/src/http/client.js:90:41)
at socket.setTimeout (/datadog-lib/node_modules/dd-trace/packages/datadog-instrumentations/src/http/client.js:90:41)
at socket.setTimeout (/datadog-lib/node_modules/dd-trace/packages/datadog-instrumentations/src/http/client.js:90:41)
We started seeing it out of the blue recently. We were on dd-trace 3.13.2 and updated to 4.20.0 to see if that made the errors go away. Happy to provide any extra debugging information you might need 🙏
i want to update that i also get the error:
Error: write EPIPE
unlike what i thought at first although less frequent.
you should really add some ability to catch the tracer errors so we can ignore them. currently ignoring them is ignoring all uncaught exceptions
UPDATE:
after upgrading to 4.22
we don't get the RangeError: Maximum call stack size exceeded anymore but we still get the Error: write EPIPE
can you please add a feature to capture tracer errors?
+1
+1
+1
+1
+1
+1