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

MaxListenersExceededWarning: Possible EventEmitter memory leak detected

Open nampas opened this issue 3 years ago • 13 comments

Describe the bug

When running tests (jest), I'm seeing a bunch of the following warnings:

(node:11319) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 close listeners added to [Socket]. Use emitter.setMaxListeners() to increase limit
    at _addListener (events.js:451:17)
    at Socket.addListener (events.js:467:10)
    at Socket.Readable.on (internal/streams/readable.js:867:35)
    at Socket.addListenerWithTrace [as on] (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:148:26)
    at Socket.once (events.js:498:8)
    at Socket.addListenerWithTrace [as once] (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:169:24)
    at /Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/datadog-plugin-net/src/index.js:123:12
    at Array.forEach (<anonymous>)
    at setupListeners (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/datadog-plugin-net/src/index.js:122:10)
    at wrapTcp (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/datadog-plugin-net/src/index.js:47:3)
(node:11319) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 timeout listeners added to [Socket]. Use emitter.setMaxListeners() to increase limit
    at _addListener (events.js:451:17)
    at Socket.addListener (events.js:467:10)
    at Socket.Readable.on (internal/streams/readable.js:867:35)
    at Socket.addListenerWithTrace [as on] (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:148:26)
    at Socket.once (events.js:498:8)
    at Socket.addListenerWithTrace [as once] (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:169:24)
    at /Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/datadog-plugin-net/src/index.js:123:12
    at Array.forEach (<anonymous>)
    at setupListeners (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/datadog-plugin-net/src/index.js:122:10)
    at wrapTcp (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/datadog-plugin-net/src/index.js:47:3)

I'm seeing that for close, connect, error and timeout, aka all the events here.

Because it kinda seemed to me like the same socket is getting wrapped multiple times, I put a log statement in wrapTcp()

    Attempted to log "Error: wrapping the socket again!
        at wrapTcp (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/datadog-plugin-net/src/index.js:32:15)
        at Socket.connectWithTrace (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/datadog-plugin-net/src/index.js:22:11)
        at /Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
        at Scope._activate (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/async_resource.js:57:14)
        at Scope.activate (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
        at Socket.bound (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
        at Socket.connectWithTrace (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/datadog-plugin-net/src/index.js:26:40)
        at /Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
        at Scope._activate (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/async_resource.js:57:14)
        at Scope.activate (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)".

Environment

  • Operation system: macOS 11.2, though it's also happening in CI (alpine docker)
  • Node version: 14.17.0
  • Tracer version: 1.2.1
  • Agent version: I'd have to check this, but the warning seems unrelated to metrics being sent so I don't think the agent matters.

nampas avatar Jan 14 '22 18:01 nampas

@nampas Well, that's certainly strange. The good news is it's unrelated to the previous issue. The bad news is the multiple wrapping.

Is it taking multiple code paths to wrapTcp? I.e. are all the stack traces the same or different? Be sure to set Error.stackTraceLimit = Infinity to make sure you're getting more than just the last 10 lines.

bengl avatar Jan 14 '22 18:01 bengl

Looks like the stack trace is the same each time. With infinite stack trace, it looks like this:

   Attempted to log "Error: wrapping the socket again!{}
        at wrapTcp (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/datadog-plugin-net/src/index.js:33:15)
        at Socket.connectWithTrace (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/datadog-plugin-net/src/index.js:22:11)
        at /Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
        at Scope._activate (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/async_resource.js:57:14)
        at Scope.activate (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
        at Socket.bound (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
        at Socket.connectWithTrace (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/datadog-plugin-net/src/index.js:26:40)
        at /Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
        at Scope._activate (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/async_resource.js:57:14)
        at Scope.activate (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
        at Socket.bound (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
        at Socket.connectWithTrace (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/datadog-plugin-net/src/index.js:26:40)
        at /Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
        at Scope._activate (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/async_resource.js:57:14)
        at Scope.activate (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
        at Socket.bound (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
        at Socket.connectWithTrace [as connect] (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/datadog-plugin-net/src/index.js:26:40)
        at Agent.connect [as createConnection] (net.js:188:17)
        at Agent.createSocket (_http_agent.js:323:26)
        at Agent.addRequest (_http_agent.js:274:10)
        at new ClientRequest (_http_client.js:305:16)
        at Object.request (http.js:94:10)
        at /Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
        at Scope._activate (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/async_resource.js:57:14)
        at Scope.activate (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
        at Object.bound (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
        at Object.requestTrace (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/datadog-plugin-http/src/client.js:76:45)
        at /Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
        at Scope._activate (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/async_resource.js:57:14)
        at Scope.activate (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
        at Object.bound (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
        at Object.requestTrace (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/datadog-plugin-http/src/client.js:76:45)
        at /Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
        at Scope._activate (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/async_resource.js:57:14)
        at Scope.activate (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
        at Object.bound (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
        at Object.requestTrace (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/datadog-plugin-http/src/client.js:76:45)
        at /Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
        at Scope._activate (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/async_resource.js:57:14)
        at Scope.activate (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
        at Object.bound (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
        at Object.requestTrace [as request] (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/datadog-plugin-http/src/client.js:76:45)
        at retriableRequest (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/exporters/agent/request.js:13:22)
        at request (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/exporters/agent/request.js:53:24)
        at makeRequest (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/exporters/agent/writer.js:127:3)
        at Writer._sendPayload (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/exporters/agent/writer.js:31:5)
        at Writer.flush (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/exporters/agent/writer.js:80:12)
        at Timeout._onTimeout (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/exporters/agent/index.js:14:58)
        at listOnTimeout (internal/timers.js:555:17)
        at processTimers (internal/timers.js:498:7)".

      at wrapTcp (node_modules/dd-trace/packages/datadog-plugin-net/src/index.js:33:15)
      at Socket.connectWithTrace (node_modules/dd-trace/packages/datadog-plugin-net/src/index.js:22:11)
      at node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
      at Scope._activate (node_modules/dd-trace/packages/dd-trace/src/scope/async_resource.js:57:14)
      at Scope.activate (node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
      at Socket.bound (node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
      at Socket.connectWithTrace (node_modules/dd-trace/packages/datadog-plugin-net/src/index.js:26:40)
      at node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
      at Scope._activate (node_modules/dd-trace/packages/dd-trace/src/scope/async_resource.js:57:14)
      at Scope.activate (node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
      at Socket.bound (node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
      at Socket.connectWithTrace (node_modules/dd-trace/packages/datadog-plugin-net/src/index.js:26:40)
      at node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
      at Scope._activate (node_modules/dd-trace/packages/dd-trace/src/scope/async_resource.js:57:14)
      at Scope.activate (node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
      at Socket.bound (node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
      at Socket.connectWithTrace [as connect] (node_modules/dd-trace/packages/datadog-plugin-net/src/index.js:26:40)
      at node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
      at Scope._activate (node_modules/dd-trace/packages/dd-trace/src/scope/async_resource.js:57:14)
      at Scope.activate (node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
      at Object.bound (node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
      at Object.requestTrace (node_modules/dd-trace/packages/datadog-plugin-http/src/client.js:76:45)
      at node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
      at Scope._activate (node_modules/dd-trace/packages/dd-trace/src/scope/async_resource.js:57:14)
      at Scope.activate (node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
      at Object.bound (node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
      at Object.requestTrace (node_modules/dd-trace/packages/datadog-plugin-http/src/client.js:76:45)
      at node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
      at Scope._activate (node_modules/dd-trace/packages/dd-trace/src/scope/async_resource.js:57:14)
      at Scope.activate (node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
      at Object.bound (node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
      at Object.requestTrace (node_modules/dd-trace/packages/datadog-plugin-http/src/client.js:76:45)
      at node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
      at Scope._activate (node_modules/dd-trace/packages/dd-trace/src/scope/async_resource.js:57:14)
      at Scope.activate (node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
      at Object.bound (node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
      at Object.requestTrace [as request] (node_modules/dd-trace/packages/datadog-plugin-http/src/client.js:76:45)
      at retriableRequest (node_modules/dd-trace/packages/dd-trace/src/exporters/agent/request.js:13:22)
      at request (node_modules/dd-trace/packages/dd-trace/src/exporters/agent/request.js:53:24)
      at makeRequest (node_modules/dd-trace/packages/dd-trace/src/exporters/agent/writer.js:127:3)
      at Writer._sendPayload (node_modules/dd-trace/packages/dd-trace/src/exporters/agent/writer.js:31:5)
      at Writer.flush (node_modules/dd-trace/packages/dd-trace/src/exporters/agent/writer.js:80:12)
      at Timeout._onTimeout (node_modules/dd-trace/packages/dd-trace/src/exporters/agent/index.js:14:58)
      at processTimers (internal/timers.js:498:7)".
      at console.log (node_modules/@jest/console/build/BufferedConsole.js:199:10)
      at wrapTcp (node_modules/dd-trace/packages/datadog-plugin-net/src/index.js:33:11)
      at Socket.connectWithTrace (node_modules/dd-trace/packages/datadog-plugin-net/src/index.js:22:11)
      at node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
      at Scope._activate (node_modules/dd-trace/packages/dd-trace/src/scope/async_resource.js:57:14)
      at Scope.activate (node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
      at Socket.bound (node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
      at Socket.connectWithTrace (node_modules/dd-trace/packages/datadog-plugin-net/src/index.js:26:40)
      at node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
      at Scope._activate (node_modules/dd-trace/packages/dd-trace/src/scope/async_resource.js:57:14)
      ```

nampas avatar Jan 14 '22 19:01 nampas

Actually wait, here's one from a different code path (looks like Jest teardown)

    Attempted to log "Error: wrapping the socket again!{}
        at wrapTcp (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/datadog-plugin-net/src/index.js:33:15)
        at Socket.connectWithTrace (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/datadog-plugin-net/src/index.js:22:11)
        at /Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
        at Scope._activate (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/async_resource.js:57:14)
        at Scope.activate (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
        at Socket.bound (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
        at Socket.connectWithTrace [as connect] (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/datadog-plugin-net/src/index.js:26:40)
        at Agent.connect [as createConnection] (net.js:188:17)
        at Agent.createSocket (_http_agent.js:323:26)
        at Agent.addRequest (_http_agent.js:274:10)
        at new ClientRequest (_http_client.js:305:16)
        at Object.request (http.js:94:10)
        at /Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
        at Scope._activate (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/async_resource.js:57:14)
        at Scope.activate (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
        at Object.bound (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
        at Object.requestTrace (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/datadog-plugin-http/src/client.js:76:45)
        at /Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
        at Scope._activate (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/async_resource.js:57:14)
        at Scope.activate (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
        at Object.bound (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
        at Object.requestTrace (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/datadog-plugin-http/src/client.js:76:45)
        at /Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
        at Scope._activate (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/async_resource.js:57:14)
        at Scope.activate (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
        at Object.bound (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
        at Object.requestTrace (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/datadog-plugin-http/src/client.js:76:45)
        at /Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
        at Scope._activate (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/async_resource.js:57:14)
        at Scope.activate (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
        at Object.bound (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
        at Object.requestTrace (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/datadog-plugin-http/src/client.js:76:45)
        at /Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
        at Scope._activate (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/async_resource.js:57:14)
        at Scope.activate (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
        at Object.bound (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
        at Object.requestTrace (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/datadog-plugin-http/src/client.js:76:45)
        at /Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
        at Scope._activate (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/async_resource.js:57:14)
        at Scope.activate (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
        at Object.bound (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
        at Object.requestTrace [as request] (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/datadog-plugin-http/src/client.js:76:45)
        at retriableRequest (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/exporters/agent/request.js:13:22)
        at request (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/exporters/agent/request.js:53:24)
        at makeRequest (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/exporters/agent/writer.js:127:3)
        at Writer._sendPayload (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/exporters/agent/writer.js:31:5)
        at Writer.flush (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/dd-trace/src/exporters/agent/writer.js:80:12)
        at /Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/datadog-plugin-jest/src/jest-environment.js:55:34
        at new Promise (<anonymous>)
        at DatadogJestEnvironment.teardownWithTrace (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/datadog-plugin-jest/src/jest-environment.js:54:13)
        at DatadogJestEnvironment.teardownWithTrace (/Users/nathanpastor/code/gql-gateway/node_modules/dd-trace/packages/datadog-plugin-jest/src/jest-environment.js:57:23)".

      at wrapTcp (node_modules/dd-trace/packages/datadog-plugin-net/src/index.js:33:15)
      at Socket.connectWithTrace (node_modules/dd-trace/packages/datadog-plugin-net/src/index.js:22:11)
      at node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
      at Scope._activate (node_modules/dd-trace/packages/dd-trace/src/scope/async_resource.js:57:14)
      at Scope.activate (node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
      at Socket.bound (node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
      at Socket.connectWithTrace [as connect] (node_modules/dd-trace/packages/datadog-plugin-net/src/index.js:26:40)
      at node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
      at Scope._activate (node_modules/dd-trace/packages/dd-trace/src/scope/async_resource.js:57:14)
      at Scope.activate (node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
      at Object.bound (node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
      at Object.requestTrace (node_modules/dd-trace/packages/datadog-plugin-http/src/client.js:76:45)
      at node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
      at Scope._activate (node_modules/dd-trace/packages/dd-trace/src/scope/async_resource.js:57:14)
      at Scope.activate (node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
      at Object.bound (node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
      at Object.requestTrace (node_modules/dd-trace/packages/datadog-plugin-http/src/client.js:76:45)
      at node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
      at Scope._activate (node_modules/dd-trace/packages/dd-trace/src/scope/async_resource.js:57:14)
      at Scope.activate (node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
      at Object.bound (node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
      at Object.requestTrace (node_modules/dd-trace/packages/datadog-plugin-http/src/client.js:76:45)
      at node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
      at Scope._activate (node_modules/dd-trace/packages/dd-trace/src/scope/async_resource.js:57:14)
      at Scope.activate (node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
      at Object.bound (node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
      at Object.requestTrace (node_modules/dd-trace/packages/datadog-plugin-http/src/client.js:76:45)
      at node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
      at Scope._activate (node_modules/dd-trace/packages/dd-trace/src/scope/async_resource.js:57:14)
      at Scope.activate (node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
      at Object.bound (node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
      at Object.requestTrace (node_modules/dd-trace/packages/datadog-plugin-http/src/client.js:76:45)
      at node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
      at Scope._activate (node_modules/dd-trace/packages/dd-trace/src/scope/async_resource.js:57:14)
      at Scope.activate (node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
      at Object.bound (node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
      at Object.requestTrace [as request] (node_modules/dd-trace/packages/datadog-plugin-http/src/client.js:76:45)
      at retriableRequest (node_modules/dd-trace/packages/dd-trace/src/exporters/agent/request.js:13:22)
      at request (node_modules/dd-trace/packages/dd-trace/src/exporters/agent/request.js:53:24)
      at makeRequest (node_modules/dd-trace/packages/dd-trace/src/exporters/agent/writer.js:127:3)
      at Writer._sendPayload (node_modules/dd-trace/packages/dd-trace/src/exporters/agent/writer.js:31:5)
      at Writer.flush (node_modules/dd-trace/packages/dd-trace/src/exporters/agent/writer.js:80:12)
      at node_modules/dd-trace/packages/datadog-plugin-jest/src/jest-environment.js:55:34
      at DatadogJestEnvironment.teardownWithTrace (node_modules/dd-trace/packages/datadog-plugin-jest/src/jest-environment.js:54:13)
      at DatadogJestEnvironment.teardownWithTrace (node_modules/dd-trace/packages/datadog-plugin-jest/src/jest-environment.js:57:23)".
      at console.log (node_modules/@jest/console/build/BufferedConsole.js:199:10)
      at wrapTcp (node_modules/dd-trace/packages/datadog-plugin-net/src/index.js:33:11)
      at Socket.connectWithTrace (node_modules/dd-trace/packages/datadog-plugin-net/src/index.js:22:11)
      at node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
      at Scope._activate (node_modules/dd-trace/packages/dd-trace/src/scope/async_resource.js:57:14)
      at Scope.activate (node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
      at Socket.bound (node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
      at Socket.connectWithTrace [as connect] (node_modules/dd-trace/packages/datadog-plugin-net/src/index.js:26:40)

nampas avatar Jan 14 '22 19:01 nampas

Also not sure if it's helpful, but I get the same MaxListenersExceeededWarning when setting DD_TRACE_DISABLED_PLUGINS=jest (of course, without the stacktraces that have datadog-plugin-jest in them)

nampas avatar Jan 14 '22 20:01 nampas

@nampas I can't seem to be able to reproduce this locally. Is there any way you could provide a reproduction case?

bengl avatar Feb 01 '22 22:02 bengl

@nampas It's possible this was due to an issue we had with net event emitters. This is fixed in the latest release, can you try with the latest release and see if that resolves the issue?

bengl avatar Apr 11 '22 20:04 bengl

Thanks for the update @bengl . We will try the upgrade soon.

nampas avatar Apr 19 '22 01:04 nampas

@bengl btw we tried the version upgrade, but ended up here :(

nampas avatar Apr 27 '22 20:04 nampas

@nampas Now that the memory leak has been fixed in 2.8.0, are you still getting the original error from above?

rochdev avatar Jun 02 '22 19:06 rochdev

@rochdev memory leak still happens in 2.8 and 2.9.1 as well, any thoughts ?

dushansilva avatar Jun 17 '22 18:06 dushansilva

@dushansilva Are you seeing an actual increase in memory that eventually leads to an OOM exception, or just the message from the original issue of the thread? (or both)

rochdev avatar Jun 17 '22 19:06 rochdev

yes we are seeing a a gradual increase in the memory in our infrastructure and it ends up going down due to OOM, we tried the versions 2.8 and 2.9.1.

dushansilva avatar Jun 18 '22 06:06 dushansilva

hi, looks like the same is happening for Mocha plugin

(node:27) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 end listeners added to [Runner]. Use emitter.setMaxListeners() to increase limit
206  at _addListener (events.js:390:17)
207  at Runner.addListener (events.js:406:10)
208  at addListener (/workdir/node_modules/wtfnode/index.js:326:30)
209  at Runner.Cls.<computed> [as on] (/workdir/node_modules/wtfnode/index.js:348:27)
210  at Runner.once (events.js:437:8)
211  at addListener (/workdir/node_modules/wtfnode/index.js:326:30)
212  at Runner.Cls.<computed> [as once] (/workdir/node_modules/wtfnode/index.js:348:27)
213  at Runner.runTests (/workdir/node_modules/dd-trace/packages/datadog-instrumentations/src/mocha.js:146:10)
214  at /workdir/node_modules/mocha/lib/runner.js:919:10
215  at next (/workdir/node_modules/mocha/lib/runner.js:486:14)
216  at cbHookRun (/workdir/node_modules/mocha/lib/runner.js:551:7)
217  at done (/workdir/node_modules/mocha/lib/runnable.js:310:5)
218  at /workdir/node_modules/mocha/lib/runnable.js:371:11
219  at processTicksAndRejections (internal/process/task_queues.js:93:5)

ostrovanka avatar Aug 03 '22 09:08 ostrovanka

We've had a lot of changes with the project since this issue was reported. I'll close it for now since it has likely been fixed.

If you think it's still an issue please upgrade to the latest version of the tracer to confirm and if so feel free to reopen this issue!

tlhunter avatar Dec 18 '23 22:12 tlhunter