mirror of https://github.com/actions/cache.git
				
				
				
			Merge pull request #305 from actions/fix-upload-chunk
Fix upload chunk retries
This commit is contained in:
		
						commit
						5ddc028cc8
					
				|  | @ -2326,7 +2326,7 @@ function getContentRange(start, end) { | |||
|     // Content-Range: bytes 0-199/*
 | ||||
|     return `bytes ${start}-${end}/*`; | ||||
| } | ||||
| function uploadChunk(httpClient, resourceUrl, data, start, end) { | ||||
| function uploadChunk(httpClient, resourceUrl, openStream, start, end) { | ||||
|     return __awaiter(this, void 0, void 0, function* () { | ||||
|         core.debug(`Uploading chunk of size ${end - | ||||
|             start + | ||||
|  | @ -2336,7 +2336,7 @@ function uploadChunk(httpClient, resourceUrl, data, start, end) { | |||
|             "Content-Range": getContentRange(start, end) | ||||
|         }; | ||||
|         const uploadChunkRequest = () => __awaiter(this, void 0, void 0, function* () { | ||||
|             return yield httpClient.sendStream("PATCH", resourceUrl, data, additionalHeaders); | ||||
|             return yield httpClient.sendStream("PATCH", resourceUrl, openStream(), additionalHeaders); | ||||
|         }); | ||||
|         const response = yield uploadChunkRequest(); | ||||
|         if (isSuccessStatusCode(response.message.statusCode)) { | ||||
|  | @ -2379,13 +2379,12 @@ function uploadFile(httpClient, cacheId, archivePath) { | |||
|                     const start = offset; | ||||
|                     const end = offset + chunkSize - 1; | ||||
|                     offset += MAX_CHUNK_SIZE; | ||||
|                     const chunk = fs.createReadStream(archivePath, { | ||||
|                     yield uploadChunk(httpClient, resourceUrl, () => fs.createReadStream(archivePath, { | ||||
|                         fd, | ||||
|                         start, | ||||
|                         end, | ||||
|                         autoClose: false | ||||
|                     }); | ||||
|                     yield uploadChunk(httpClient, resourceUrl, chunk, start, end); | ||||
|                     }), start, end); | ||||
|                 } | ||||
|             }))); | ||||
|         } | ||||
|  |  | |||
|  | @ -2326,7 +2326,7 @@ function getContentRange(start, end) { | |||
|     // Content-Range: bytes 0-199/*
 | ||||
|     return `bytes ${start}-${end}/*`; | ||||
| } | ||||
| function uploadChunk(httpClient, resourceUrl, data, start, end) { | ||||
| function uploadChunk(httpClient, resourceUrl, openStream, start, end) { | ||||
|     return __awaiter(this, void 0, void 0, function* () { | ||||
|         core.debug(`Uploading chunk of size ${end - | ||||
|             start + | ||||
|  | @ -2336,7 +2336,7 @@ function uploadChunk(httpClient, resourceUrl, data, start, end) { | |||
|             "Content-Range": getContentRange(start, end) | ||||
|         }; | ||||
|         const uploadChunkRequest = () => __awaiter(this, void 0, void 0, function* () { | ||||
|             return yield httpClient.sendStream("PATCH", resourceUrl, data, additionalHeaders); | ||||
|             return yield httpClient.sendStream("PATCH", resourceUrl, openStream(), additionalHeaders); | ||||
|         }); | ||||
|         const response = yield uploadChunkRequest(); | ||||
|         if (isSuccessStatusCode(response.message.statusCode)) { | ||||
|  | @ -2379,13 +2379,12 @@ function uploadFile(httpClient, cacheId, archivePath) { | |||
|                     const start = offset; | ||||
|                     const end = offset + chunkSize - 1; | ||||
|                     offset += MAX_CHUNK_SIZE; | ||||
|                     const chunk = fs.createReadStream(archivePath, { | ||||
|                     yield uploadChunk(httpClient, resourceUrl, () => fs.createReadStream(archivePath, { | ||||
|                         fd, | ||||
|                         start, | ||||
|                         end, | ||||
|                         autoClose: false | ||||
|                     }); | ||||
|                     yield uploadChunk(httpClient, resourceUrl, chunk, start, end); | ||||
|                     }), start, end); | ||||
|                 } | ||||
|             }))); | ||||
|         } | ||||
|  |  | |||
|  | @ -206,7 +206,7 @@ function getContentRange(start: number, end: number): string { | |||
| async function uploadChunk( | ||||
|     httpClient: HttpClient, | ||||
|     resourceUrl: string, | ||||
|     data: NodeJS.ReadableStream, | ||||
|     openStream: () => NodeJS.ReadableStream, | ||||
|     start: number, | ||||
|     end: number | ||||
| ): Promise<void> { | ||||
|  | @ -227,7 +227,7 @@ async function uploadChunk( | |||
|         return await httpClient.sendStream( | ||||
|             "PATCH", | ||||
|             resourceUrl, | ||||
|             data, | ||||
|             openStream(), | ||||
|             additionalHeaders | ||||
|         ); | ||||
|     }; | ||||
|  | @ -290,17 +290,17 @@ async function uploadFile( | |||
|                     const start = offset; | ||||
|                     const end = offset + chunkSize - 1; | ||||
|                     offset += MAX_CHUNK_SIZE; | ||||
|                     const chunk = fs.createReadStream(archivePath, { | ||||
|                         fd, | ||||
|                         start, | ||||
|                         end, | ||||
|                         autoClose: false | ||||
|                     }); | ||||
| 
 | ||||
|                     await uploadChunk( | ||||
|                         httpClient, | ||||
|                         resourceUrl, | ||||
|                         chunk, | ||||
|                         () => | ||||
|                             fs.createReadStream(archivePath, { | ||||
|                                 fd, | ||||
|                                 start, | ||||
|                                 end, | ||||
|                                 autoClose: false | ||||
|                             }), | ||||
|                         start, | ||||
|                         end | ||||
|                     ); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 David Hadka
						David Hadka