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