From d06bf428dfe9f7de471be5b78209cd901889fcc2 Mon Sep 17 00:00:00 2001 From: Zachary Belford Date: Wed, 21 May 2025 22:41:05 -0600 Subject: [PATCH] Increase EventEmitter listener limit --- docs/event-emitter-listener-limit.md | 8 ++++++++ src/network/index.ts | 5 +++++ 2 files changed, 13 insertions(+) create mode 100644 docs/event-emitter-listener-limit.md diff --git a/docs/event-emitter-listener-limit.md b/docs/event-emitter-listener-limit.md new file mode 100644 index 000000000..b3114927a --- /dev/null +++ b/docs/event-emitter-listener-limit.md @@ -0,0 +1,8 @@ +# EventEmitter listener limit + +`NetworkClass` sets a higher listener limit by calling `this.setMaxListeners(100)` in its constructor. +This enables many modules to attach network event handlers without triggering Node's default +`MaxListenersExceededWarning` after ten listeners. The value of 100 was selected as a reasonable upper bound. + +If the application logs show `MaxListenersExceededWarning`, review the registered events and consider +adjusting the limit accordingly. diff --git a/src/network/index.ts b/src/network/index.ts index 8e83b65d2..f9599cdbe 100644 --- a/src/network/index.ts +++ b/src/network/index.ts @@ -72,6 +72,11 @@ export class NetworkClass extends EventEmitter { constructor(config: Shardus.StrictServerConfiguration, logger: Logger) { super() + // Allow more listeners to attach to this EventEmitter to avoid memory leak warnings + // if various modules register network-related events. + // 100 was chosen as a reasonable upper bound; monitor logs for MaxListenersExceeded warnings + // and adjust if needed. + this.setMaxListeners(100) this.app = express() this.sn = null this.logger = logger