dd-trace-js icon indicating copy to clipboard operation
dd-trace-js copied to clipboard

Error: write EPIPE

Open dor6-deepcred opened this issue 2 years ago • 12 comments

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: image 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)

dor6-deepcred avatar Dec 12 '23 10:12 dor6-deepcred

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)

dor6-deepcred avatar Dec 16 '23 19:12 dor6-deepcred

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 🙏

samwho avatar Dec 18 '23 17:12 samwho

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

dor6-deepcred avatar Dec 20 '23 12:12 dor6-deepcred

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?

dor6-deepcred avatar Dec 27 '23 11:12 dor6-deepcred

+1

yoni-amikam avatar Apr 14 '24 07:04 yoni-amikam

+1

mitcheljimenez avatar Jun 03 '24 15:06 mitcheljimenez

+1

avizets avatar Jul 04 '24 08:07 avizets

+1

omernach avatar Jul 04 '24 08:07 omernach

+1

bsShoham avatar Jul 04 '24 08:07 bsShoham

+1

tamir-entitle avatar Jul 04 '24 11:07 tamir-entitle