From 9b309c5a3270cf44da8ba644bf5e4635f1da5838 Mon Sep 17 00:00:00 2001 From: Bishal Prasad Date: Fri, 29 Jul 2022 12:37:50 +0530 Subject: [PATCH] Hack for timeout for segment download --- packages/cache/src/internal/downloadUtils.ts | 22 +++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/packages/cache/src/internal/downloadUtils.ts b/packages/cache/src/internal/downloadUtils.ts index 08b2dee8..6c3cf383 100644 --- a/packages/cache/src/internal/downloadUtils.ts +++ b/packages/cache/src/internal/downloadUtils.ts @@ -6,6 +6,7 @@ import * as buffer from 'buffer' import * as fs from 'fs' import * as stream from 'stream' import * as util from 'util' +import * as timer from 'timers/promises' import * as utils from './cacheUtils' import {SocketTimeout} from './constants' @@ -259,14 +260,19 @@ export async function downloadCacheStorageSDK( downloadProgress.nextSegment(segmentSize) - const result = await client.downloadToBuffer( - segmentStart, - segmentSize, - { - concurrency: options.downloadConcurrency, - onProgress: downloadProgress.onProgress() - } - ) + const result = await Promise.Race([client.downloadToBuffer( + segmentStart, + segmentSize, + { + concurrency: options.downloadConcurrency, + onProgress: downloadProgress.onProgress() + } + ), + timer.setTimeout(60 * 60 * 1000, 'timeout')]); + + if(result === 'timeout') { + throw new Error("Segment download timed out"); + } fs.writeFileSync(fd, result) }