Add env var for socket timeout

This commit is contained in:
Dave Hadka 2020-05-07 21:35:11 -04:00
parent ce9276c90e
commit 18e62e1fe0
4 changed files with 54 additions and 32 deletions

View file

@ -11,7 +11,7 @@ import * as fs from "fs";
import * as stream from "stream";
import * as util from "util";
import { CompressionMethod, Inputs, SocketTimeout } from "./constants";
import { CompressionMethod, DefaultSocketTimeout, Inputs } from "./constants";
import {
ArtifactCacheEntry,
CacheOptions,
@ -85,6 +85,14 @@ function createHttpClient(): HttpClient {
);
}
function parseEnvNumber(key: string): number | undefined {
const value = Number(process.env[key]);
if (Number.isNaN(value) || value < 0) {
return undefined;
}
return value;
}
export function getCacheVersion(compressionMethod?: CompressionMethod): string {
const components = [core.getInput(Inputs.Path, { required: true })].concat(
compressionMethod == CompressionMethod.Zstd ? [compressionMethod] : []
@ -148,10 +156,12 @@ export async function downloadCache(
const downloadResponse = await httpClient.get(archiveLocation);
// Abort download if no traffic received over the socket.
downloadResponse.message.socket.setTimeout(SocketTimeout, () => {
const socketTimeout =
parseEnvNumber("CACHE_SOCKET_TIMEOUT") ?? DefaultSocketTimeout;
downloadResponse.message.socket.setTimeout(socketTimeout, () => {
downloadResponse.message.destroy();
core.debug(
`Aborting download, socket timed out after ${SocketTimeout} ms`
`Aborting download, socket timed out after ${socketTimeout} ms`
);
});
@ -252,14 +262,6 @@ async function uploadChunk(
);
}
function parseEnvNumber(key: string): number | undefined {
const value = Number(process.env[key]);
if (Number.isNaN(value) || value < 0) {
return undefined;
}
return value;
}
async function uploadFile(
httpClient: HttpClient,
cacheId: number,

View file

@ -32,4 +32,4 @@ export enum CompressionMethod {
// Socket timeout in milliseconds during download. If no traffic is received
// over the socket during this period, the socket is destroyed and the download
// is aborted.
export const SocketTimeout = 5000;
export const DefaultSocketTimeout = 5000;