ChainSafe / lodestar

🌟 TypeScript Implementation of Ethereum Consensus
https://lodestar.chainsafe.io
Apache License 2.0
1.11k stars 273 forks source link

Libp2p max listeners warning #6317

Open nflaig opened 5 months ago

nflaig commented 5 months ago

Describe the bug

After recent libp2p upgrade (https://github.com/ChainSafe/lodestar/pull/6285) I am seeing the following error (with --trace-warnings enabled)

(node:206518) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 11 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit
    at [kNewListener] (node:internal/event_target:546:17)
    at [kNewListener] (node:internal/abort_controller:239:24)
    at EventTarget.addEventListener (node:internal/event_target:659:23)
    at anySignal (file:///home/devops/goerli/lodestar/node_modules/libp2p/node_modules/any-signal/dist/src/index.js:21:20)
    at DialQueue.createDialAbortController (file:///home/devops/goerli/lodestar/node_modules/libp2p/dist/src/connection-manager/dial-queue.js:200:24)
    at queue.add.peerId.peerId [as fn] (file:///home/devops/goerli/lodestar/node_modules/libp2p/dist/src/connection-manager/dial-queue.js:126:33)
    at Job.run (file:///home/devops/goerli/lodestar/node_modules/@libp2p/utils/dist/src/queue/job.js:56:50)
    at Queue.tryToStartAnother (file:///home/devops/goerli/lodestar/node_modules/@libp2p/utils/dist/src/queue/index.js:79:17)
    at Queue.add (file:///home/devops/goerli/lodestar/node_modules/@libp2p/utils/dist/src/queue/index.js:121:14)
    at DialQueue.dial (file:///home/devops/goerli/lodestar/node_modules/libp2p/dist/src/connection-manager/dial-queue.js:123:27)

Expected behavior

No MaxListenersExceededWarning warnings

Steps to reproduce

Run lodestar beacon node

Additional context

Operating system

Linux

Lodestar version or commit hash

9eb9cce0fa8b0c37877963793308a348f4f4cdfb

philknows commented 5 months ago

What is the scope and estimation of this fix? It's not really a blocker for v1.15 but can degrade the UX if we released with this.

nflaig commented 3 months ago

Could be related to the memory leak we are observing on some nodes? As far as I remember this warning only happens with connected validators

Seems unrelated

nflaig commented 2 months ago

Possibly related listeners warning

(node:7) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 101 message listeners added to [Worker]. Use emitter.setMaxListeners() to increase limit
    at genericNodeError (node:internal/errors:984:15)
    at wrappedFn (node:internal/errors:538:14)
    at _addListener (node:events:592:17)
    at Worker.addListener (node:events:610:10)
    at Worker.addEventListener (/usr/app/node_modules/@chainsafe/threads/dist/master/implementation.node.js:134:18)
    at /usr/app/node_modules/@chainsafe/threads/dist/master/invocation-proxy.js:64:16
    at new Subscription (/usr/app/node_modules/observable-fns/dist/observable.js:159:40)
    at Observable.subscribe (/usr/app/node_modules/observable-fns/dist/observable.js:210:16)
    at /usr/app/node_modules/observable-fns/dist/multicast.js:31:49
    at new Subscription (/usr/app/node_modules/observable-fns/dist/observable.js:159:40)
nflaig commented 2 months ago

This issue should be fixed by

Just need to update all libp2p libs to latest