From 0b0bc298b56613d3a1f9918d601fb2c3ec5efe2c Mon Sep 17 00:00:00 2001 From: Serious-senpai <57554044+Serious-senpai@users.noreply.github.com> Date: Sun, 13 Apr 2025 15:02:25 +0000 Subject: [PATCH 1/2] Do not construct all promises immediately --- src/download-artifact.ts | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/src/download-artifact.ts b/src/download-artifact.ts index 1beef4dc..b2b9a699 100644 --- a/src/download-artifact.ts +++ b/src/download-artifact.ts @@ -111,22 +111,20 @@ export async function run(): Promise { }) } - const downloadPromises = artifacts.map(artifact => ({ - name: artifact.name, - promise: artifactClient.downloadArtifact(artifact.id, { - ...options, - path: - isSingleArtifactDownload || inputs.mergeMultiple - ? resolvedPath - : path.join(resolvedPath, artifact.name), - expectedHash: artifact.digest - }) - })) - - const chunkedPromises = chunk(downloadPromises, PARALLEL_DOWNLOADS) - for (const chunk of chunkedPromises) { - const chunkPromises = chunk.map(item => item.promise) - const results = await Promise.all(chunkPromises) + const chunkedArtifacts = chunk(artifacts, PARALLEL_DOWNLOADS) + for (const chunk of chunkedArtifacts) { + const chunkPromises = chunk.map(artifact => ({ + name: artifact.name, + promise: artifactClient.downloadArtifact(artifact.id, { + ...options, + path: + isSingleArtifactDownload || inputs.mergeMultiple + ? resolvedPath + : path.join(resolvedPath, artifact.name), + expectedHash: artifact.digest + }) + })) + const results = await Promise.all(chunkPromises.map(item => item.promise)) for (let i = 0; i < results.length; i++) { const outcome = results[i] From 35c343ba75a824661d1236617f1a7d10bcece966 Mon Sep 17 00:00:00 2001 From: Serious-senpai <57554044+Serious-senpai@users.noreply.github.com> Date: Sun, 13 Apr 2025 15:12:45 +0000 Subject: [PATCH 2/2] Update index.js --- dist/index.js | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/dist/index.js b/dist/index.js index d0a4ebca..48951b9c 100644 --- a/dist/index.js +++ b/dist/index.js @@ -118840,16 +118840,15 @@ function run() { core.info(`- ${artifact.name} (ID: ${artifact.id}, Size: ${artifact.size}, Expected Digest: ${artifact.digest})`); }); } - const downloadPromises = artifacts.map(artifact => ({ - name: artifact.name, - promise: artifact_1.default.downloadArtifact(artifact.id, Object.assign(Object.assign({}, options), { path: isSingleArtifactDownload || inputs.mergeMultiple - ? resolvedPath - : path.join(resolvedPath, artifact.name), expectedHash: artifact.digest })) - })); - const chunkedPromises = (0, exports.chunk)(downloadPromises, PARALLEL_DOWNLOADS); - for (const chunk of chunkedPromises) { - const chunkPromises = chunk.map(item => item.promise); - const results = yield Promise.all(chunkPromises); + const chunkedArtifacts = (0, exports.chunk)(artifacts, PARALLEL_DOWNLOADS); + for (const chunk of chunkedArtifacts) { + const chunkPromises = chunk.map(artifact => ({ + name: artifact.name, + promise: artifact_1.default.downloadArtifact(artifact.id, Object.assign(Object.assign({}, options), { path: isSingleArtifactDownload || inputs.mergeMultiple + ? resolvedPath + : path.join(resolvedPath, artifact.name), expectedHash: artifact.digest })) + })); + const results = yield Promise.all(chunkPromises.map(item => item.promise)); for (let i = 0; i < results.length; i++) { const outcome = results[i]; const artifactName = chunk[i].name;