mirror of https://github.com/actions/toolkit
Better Artifact Telemetry + Increase Upload chunk size (#535)
* Differentiate user-agents for better internal telemetry * Bump chunk size from 4 to 8 MB * Update User-Agent Stringspull/536/head
parent
ccad19055e
commit
3a9dc00629
|
@ -6,7 +6,7 @@ export function getUploadFileConcurrency(): number {
|
||||||
// When uploading large files that can't be uploaded with a single http call, this controls
|
// When uploading large files that can't be uploaded with a single http call, this controls
|
||||||
// the chunk size that is used during upload
|
// the chunk size that is used during upload
|
||||||
export function getUploadChunkSize(): number {
|
export function getUploadChunkSize(): number {
|
||||||
return 4 * 1024 * 1024 // 4 MB Chunks
|
return 8 * 1024 * 1024 // 8 MB Chunks
|
||||||
}
|
}
|
||||||
|
|
||||||
// The maximum number of retries that can be attempted before an upload or download fails
|
// The maximum number of retries that can be attempted before an upload or download fails
|
||||||
|
|
|
@ -27,7 +27,10 @@ export class DownloadHttpClient {
|
||||||
private statusReporter: StatusReporter
|
private statusReporter: StatusReporter
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
this.downloadHttpManager = new HttpManager(getDownloadFileConcurrency())
|
this.downloadHttpManager = new HttpManager(
|
||||||
|
getDownloadFileConcurrency(),
|
||||||
|
'@actions/artifact-download'
|
||||||
|
)
|
||||||
// downloads are usually significantly faster than uploads so display status information every second
|
// downloads are usually significantly faster than uploads so display status information every second
|
||||||
this.statusReporter = new StatusReporter(1000)
|
this.statusReporter = new StatusReporter(1000)
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,12 +6,14 @@ import {createHttpClient} from './utils'
|
||||||
*/
|
*/
|
||||||
export class HttpManager {
|
export class HttpManager {
|
||||||
private clients: HttpClient[]
|
private clients: HttpClient[]
|
||||||
|
private userAgent: string
|
||||||
|
|
||||||
constructor(clientCount: number) {
|
constructor(clientCount: number, userAgent: string) {
|
||||||
if (clientCount < 1) {
|
if (clientCount < 1) {
|
||||||
throw new Error('There must be at least one client')
|
throw new Error('There must be at least one client')
|
||||||
}
|
}
|
||||||
this.clients = new Array(clientCount).fill(createHttpClient())
|
this.userAgent = userAgent
|
||||||
|
this.clients = new Array(clientCount).fill(createHttpClient(userAgent))
|
||||||
}
|
}
|
||||||
|
|
||||||
getClient(index: number): HttpClient {
|
getClient(index: number): HttpClient {
|
||||||
|
@ -22,7 +24,7 @@ export class HttpManager {
|
||||||
// for more information see: https://github.com/actions/http-client/blob/04e5ad73cd3fd1f5610a32116b0759eddf6570d2/index.ts#L292
|
// for more information see: https://github.com/actions/http-client/blob/04e5ad73cd3fd1f5610a32116b0759eddf6570d2/index.ts#L292
|
||||||
disposeAndReplaceClient(index: number): void {
|
disposeAndReplaceClient(index: number): void {
|
||||||
this.clients[index].dispose()
|
this.clients[index].dispose()
|
||||||
this.clients[index] = createHttpClient()
|
this.clients[index] = createHttpClient(this.userAgent)
|
||||||
}
|
}
|
||||||
|
|
||||||
disposeAndReplaceAllClients(): void {
|
disposeAndReplaceAllClients(): void {
|
||||||
|
|
|
@ -42,7 +42,10 @@ export class UploadHttpClient {
|
||||||
private statusReporter: StatusReporter
|
private statusReporter: StatusReporter
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
this.uploadHttpManager = new HttpManager(getUploadFileConcurrency())
|
this.uploadHttpManager = new HttpManager(
|
||||||
|
getUploadFileConcurrency(),
|
||||||
|
'@actions/artifact-upload'
|
||||||
|
)
|
||||||
this.statusReporter = new StatusReporter(10000)
|
this.statusReporter = new StatusReporter(10000)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -204,8 +204,8 @@ export function getUploadHeaders(
|
||||||
return requestOptions
|
return requestOptions
|
||||||
}
|
}
|
||||||
|
|
||||||
export function createHttpClient(): HttpClient {
|
export function createHttpClient(userAgent: string): HttpClient {
|
||||||
return new HttpClient('actions/artifact', [
|
return new HttpClient(userAgent, [
|
||||||
new BearerCredentialHandler(getRuntimeToken())
|
new BearerCredentialHandler(getRuntimeToken())
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue