From 1a1961913ddb9486e5ba887fa3a2f49acd04a72b Mon Sep 17 00:00:00 2001 From: daz Date: Tue, 17 Dec 2024 17:15:35 -0700 Subject: [PATCH] Fetch checksum values in batches --- sources/src/wrapper-validation/checksums.ts | 25 ++++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/sources/src/wrapper-validation/checksums.ts b/sources/src/wrapper-validation/checksums.ts index dd51011..f6bcc14 100644 --- a/sources/src/wrapper-validation/checksums.ts +++ b/sources/src/wrapper-validation/checksums.ts @@ -1,5 +1,6 @@ import * as httpm from 'typed-rest-client/HttpClient' import * as cheerio from 'cheerio' +import * as core from '@actions/core' import fileWrapperChecksums from './wrapper-checksums.json' @@ -59,12 +60,7 @@ export async function fetchUnknownChecksums( } const wrapperChecksums = new WrapperChecksums() - await Promise.all( - checksumUrls.map(async ([version, url]) => { - const checksum = await httpGetText(url) - wrapperChecksums.add(version, checksum) - }) - ) + await fetchAndStoreChecksums(checksumUrls, wrapperChecksums) return wrapperChecksums } @@ -94,3 +90,20 @@ async function addDistributionSnapshotChecksumUrls(checksumUrls: [string, string } }) } + +async function fetchAndStoreChecksums( + checksumUrls: [string, string][], + wrapperChecksums: WrapperChecksums +): Promise { + const batchSize = 10 + for (let i = 0; i < checksumUrls.length; i += batchSize) { + const batch = checksumUrls.slice(i, i + batchSize) + await Promise.all( + batch.map(async ([version, url]) => { + const checksum = await httpGetText(url) + wrapperChecksums.add(version, checksum) + }) + ) + core.info(`Fetched ${i + batch.length} of ${checksumUrls.length} checksums`) + } +}