From 0b4db8dc6c2b976daae5c5f9fc1fcf95505de974 Mon Sep 17 00:00:00 2001 From: Sergei Zharinov <zharinov@users.noreply.github.com> Date: Fri, 27 Jan 2023 11:38:39 +0300 Subject: [PATCH] fix(packagist): Improve fetch concurrency (#20041) --- lib/modules/datasource/packagist/index.ts | 39 ++++++++++++----------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/lib/modules/datasource/packagist/index.ts b/lib/modules/datasource/packagist/index.ts index 9171467dc4..eb4a57056a 100644 --- a/lib/modules/datasource/packagist/index.ts +++ b/lib/modules/datasource/packagist/index.ts @@ -157,34 +157,35 @@ export class PackagistDatasource extends Datasource { packages, providersUrl, providersLazyUrl, - files, - includesFiles, + files = [], + includesFiles = [], providerPackages, } = registryMeta; - if (files) { - const queue = files.map( - (file) => (): Promise<PackagistFile> => - this.getPackagistFile(regUrl, file) - ); - const resolvedFiles = await p.all(queue); - for (const res of resolvedFiles) { + + const includesPackages: Record<string, ReleaseResult> = {}; + + const tasks: (() => Promise<void>)[] = []; + + for (const file of files) { + tasks.push(async () => { + const res = await this.getPackagistFile(regUrl, file); for (const [name, val] of Object.entries(res.providers)) { providerPackages[name] = val.sha256; } - } + }); } - const includesPackages: Record<string, ReleaseResult> = {}; - if (includesFiles) { - for (const file of includesFiles) { + + for (const file of includesFiles) { + tasks.push(async () => { const res = await this.getPackagistFile(regUrl, file); - if (res.packages) { - for (const [key, val] of Object.entries(res.packages)) { - const dep = PackagistDatasource.extractDepReleases(val); - includesPackages[key] = dep; - } + for (const [key, val] of Object.entries(res.packages ?? {})) { + includesPackages[key] = PackagistDatasource.extractDepReleases(val); } - } + }); } + + await p.all(tasks); + const allPackages: AllPackages = { packages, providersUrl, -- GitLab