From cce94469cbdac581baf0375b88aa6d38b0778a88 Mon Sep 17 00:00:00 2001 From: Alex Potsides Date: Sun, 12 Nov 2023 07:03:20 +0100 Subject: [PATCH] fix: silence max listeners exceeded warning (#62) If we have more than 10x streams open accross all yamux muxer instances node will log warnings about too many listeners being added to the shutdown controller signal. This is fine, increase the max number of listeners. --- src/muxer.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/muxer.ts b/src/muxer.ts index 4189713..481ac82 100644 --- a/src/muxer.ts +++ b/src/muxer.ts @@ -1,4 +1,5 @@ import { CodeError } from '@libp2p/interface/errors' +import { setMaxListeners } from '@libp2p/interface/events' import { logger, type Logger } from '@libp2p/logger' import { abortableSource } from 'abortable-iterator' import { pipe } from 'it-pipe' @@ -85,6 +86,7 @@ export class YamuxMuxer implements StreamMuxer { verifyConfig(this.config) this.closeController = new AbortController() + setMaxListeners(Infinity, this.closeController.signal) this.onIncomingStream = init.onIncomingStream this.onStreamEnd = init.onStreamEnd @@ -272,7 +274,15 @@ export class YamuxMuxer implements StreamMuxer { this.log?.trace('muxer close reason=%s', reason) - options.signal = options.signal ?? AbortSignal.timeout(CLOSE_TIMEOUT) + if (options.signal == null) { + const signal = AbortSignal.timeout(CLOSE_TIMEOUT) + setMaxListeners(Infinity, signal) + + options = { + ...options, + signal + } + } try { await Promise.all(