Added abortController to stop download

This commit is contained in:
Sankalp Kotewar
2022-08-03 10:23:42 +00:00
parent d8b119ca22
commit e5e69a3171
2 changed files with 25 additions and 5 deletions

View File

@@ -13,6 +13,8 @@ import {SocketTimeout} from './constants'
import {DownloadOptions} from '../options'
import {retryHttpClientResponse} from './requestUtils'
import { AbortController } from "@azure/abort-controller";
/**
* Pipes the body of a HTTP response to a stream
*
@@ -248,7 +250,8 @@ export async function downloadCacheStorageSDK(
try {
downloadProgress.startDisplayTimer()
const controller = new AbortController();
const abortSignal = controller.signal;
while (!downloadProgress.isDone()) {
const segmentStart =
downloadProgress.segmentOffset + downloadProgress.segmentSize
@@ -264,14 +267,16 @@ export async function downloadCacheStorageSDK(
segmentStart,
segmentSize,
{
abortSignal: abortSignal,
concurrency: options.downloadConcurrency,
onProgress: downloadProgress.onProgress()
}
),
timer.setTimeout(60 * 60 * 1000, 'timeout')]);
timer.setTimeout(options.abortTimeInMs, 'timeout')]);
if(result === 'timeout') {
throw new Error("Segment download timed out");
controller.abort();
throw new Error("Download aborted, segment download timed out.");
}
fs.writeFileSync(fd, result)