From df34c1c71e74468fd67287caad2ac987176ae503 Mon Sep 17 00:00:00 2001 From: Nickolay Platonov Date: Wed, 1 Apr 2020 16:30:26 +0300 Subject: [PATCH] fix: Data merge concurrency limit to prevent OOM (#1293) Fixes #1263 --- index.js | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/index.js b/index.js index 6d74d0831..e2ae1c24c 100755 --- a/index.js +++ b/index.js @@ -408,11 +408,16 @@ class NYC { async getCoverageMapFromAllCoverageFiles (baseDirectory) { const map = libCoverage.createCoverageMap({}) + const files = await this.coverageFiles(baseDirectory) - const data = await this.coverageData(baseDirectory) - data.forEach(report => { - map.merge(report) - }) + await pMap( + files, + async f => { + const report = await this.coverageFileLoad(f, baseDirectory) + map.merge(report) + }, + { concurrency: os.cpus().length } + ) map.data = await this.sourceMaps.remapCoverage(map.data) @@ -503,6 +508,7 @@ class NYC { } } + // TODO: Remove from nyc v16 async coverageData (baseDirectory) { const files = await this.coverageFiles(baseDirectory) return pMap(