From c97af3ee9165b8620ae48bc965161eac3e54a7a2 Mon Sep 17 00:00:00 2001 From: Pavel Feldman Date: Fri, 23 Oct 2020 10:38:26 -0700 Subject: [PATCH] fix(listeners): avoid "too many listeners" problem safely (#4223) --- src/server/processLauncher.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/server/processLauncher.ts b/src/server/processLauncher.ts index b19281a7a0..883f524e15 100644 --- a/src/server/processLauncher.ts +++ b/src/server/processLauncher.ts @@ -58,6 +58,12 @@ export async function gracefullyCloseAll() { await Promise.all(Array.from(gracefullyCloseSet).map(gracefullyClose => gracefullyClose().catch(e => {}))); } +// We currently spawn a process per page when recording video in Chromium. +// This triggers "too many listeners" on the process object once you have more than 10 pages open. +const maxListeners = process.getMaxListeners(); +if (maxListeners !== 0) + process.setMaxListeners(Math.max(maxListeners || 0, 100)); + export async function launchProcess(options: LaunchProcessOptions): Promise { const cleanup = () => helper.removeFolders(options.tempDirectories);