mirror of https://github.com/actions/toolkit
changes to multipart download for s3
parent
d78ac4e851
commit
86e2ed1cf5
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "github-actions.warp-cache",
|
"name": "github-actions.warp-cache",
|
||||||
"version": "1.1.15",
|
"version": "1.1.16",
|
||||||
"preview": true,
|
"preview": true,
|
||||||
"description": "Github action to use WarpBuild's in-house cache offering",
|
"description": "Github action to use WarpBuild's in-house cache offering",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
|
|
|
@ -136,25 +136,6 @@ export async function restoreCache(
|
||||||
return cacheKey
|
return cacheKey
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
|
||||||
let readStream: NodeJS.ReadableStream | undefined
|
|
||||||
let downloadCommandPipe = getDownloadCommandPipeForWget(
|
|
||||||
cacheEntry?.s3?.pre_signed_url
|
|
||||||
)
|
|
||||||
await extractStreamingTar(
|
|
||||||
readStream,
|
|
||||||
archivePath,
|
|
||||||
compressionMethod,
|
|
||||||
downloadCommandPipe
|
|
||||||
)
|
|
||||||
} catch (error) {
|
|
||||||
core.debug(`Failed to download cache: ${error}`)
|
|
||||||
core.info(
|
|
||||||
`Streaming download failed. Likely a cloud provider issue. Retrying with multipart download`
|
|
||||||
)
|
|
||||||
// Wait 1 second
|
|
||||||
await new Promise(resolve => setTimeout(resolve, 1000))
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await cacheHttpClient.downloadCache(
|
await cacheHttpClient.downloadCache(
|
||||||
cacheEntry.provider,
|
cacheEntry.provider,
|
||||||
|
@ -178,7 +159,6 @@ export async function restoreCache(
|
||||||
)
|
)
|
||||||
|
|
||||||
await extractTar(archivePath, compressionMethod)
|
await extractTar(archivePath, compressionMethod)
|
||||||
}
|
|
||||||
|
|
||||||
core.info('Cache restored successfully')
|
core.info('Cache restored successfully')
|
||||||
break
|
break
|
||||||
|
|
|
@ -9,6 +9,7 @@ import * as crypto from 'crypto'
|
||||||
|
|
||||||
import * as utils from './cacheUtils'
|
import * as utils from './cacheUtils'
|
||||||
import {CompressionMethod} from './constants'
|
import {CompressionMethod} from './constants'
|
||||||
|
import os from 'os'
|
||||||
import {
|
import {
|
||||||
InternalCacheOptions,
|
InternalCacheOptions,
|
||||||
ITypedResponseWithError,
|
ITypedResponseWithError,
|
||||||
|
@ -211,7 +212,14 @@ export async function downloadCache(
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
switch (provider) {
|
switch (provider) {
|
||||||
case 's3':
|
case 's3':
|
||||||
await downloadCacheMultiConnection(archiveLocation, archivePath, 8)
|
{
|
||||||
|
const numberOfConnections = 2 + os.cpus().length
|
||||||
|
await downloadCacheMultiConnection(
|
||||||
|
archiveLocation,
|
||||||
|
archivePath,
|
||||||
|
Math.min(numberOfConnections, 30)
|
||||||
|
)
|
||||||
|
}
|
||||||
break
|
break
|
||||||
case 'gcs': {
|
case 'gcs': {
|
||||||
if (!gcsToken) {
|
if (!gcsToken) {
|
||||||
|
|
Loading…
Reference in New Issue