@@ -27,6 +27,7 @@ interface RequiredOptions {
2727}
2828
2929interface UploadOptions {
30+ accelerateUploading : boolean ,
3031 multipartUploadThreshold : number , // Bytes
3132 multipartUploadSize : number , // Bytes
3233 multipartUploadConcurrency : number ,
@@ -65,6 +66,7 @@ export type Options = RequiredOptions & Partial<OptionalOptions>
6566const DEFAULT_OPTIONS : OptionalOptions = {
6667 id : "" ,
6768
69+ accelerateUploading : false ,
6870 multipartUploadThreshold : 10 * ByteSize . MB ,
6971 multipartUploadSize : 4 * ByteSize . MB ,
7072 multipartUploadConcurrency : 1 ,
@@ -100,6 +102,7 @@ type PersistInfo = {
100102 // But It's also a risk, if business logic changes. Because we may get errors
101103 // when restart job from break point with different backendMode.
102104 backendMode : RequiredOptions [ "clientOptions" ] [ "backendMode" ] ,
105+ accelerateUploading : OptionalOptions [ "accelerateUploading" ] ,
103106 prog : OptionalOptions [ "prog" ] ,
104107 status : Exclude < OptionalOptions [ "status" ] , Status . Waiting | Status . Running > ,
105108 message : OptionalOptions [ "message" ] ,
@@ -137,6 +140,7 @@ export default class UploadJob extends TransferJob {
137140 prog : persistInfo . prog ,
138141
139142 clientOptions,
143+ accelerateUploading : persistInfo . accelerateUploading ,
140144 storageClasses : persistInfo . storageClasses ,
141145
142146 overwrite : persistInfo . overwrite ,
@@ -162,6 +166,9 @@ export default class UploadJob extends TransferJob {
162166 protected readonly options : Readonly < RequiredOptions & OptionalOptions >
163167 private isForceOverwrite : boolean = false
164168
169+ // - for accelerate uploading
170+ accelerateUploading : boolean = false
171+
165172 // - for resume from break point -
166173 uploadedId : string
167174 uploadedParts : UploadedPart [ ]
@@ -174,6 +181,7 @@ export default class UploadJob extends TransferJob {
174181
175182 this . options = lodash . merge ( { } , DEFAULT_OPTIONS , config ) ;
176183
184+ this . accelerateUploading = this . options . accelerateUploading ;
177185 this . uploadedId = this . options . uploadedId ;
178186 this . uploadedParts = [
179187 ...this . options . uploadedParts ,
@@ -193,6 +201,7 @@ export default class UploadJob extends TransferJob {
193201 ...super . uiData ,
194202 from : this . options . from ,
195203 to : this . options . to ,
204+ accelerateUploading : this . accelerateUploading ,
196205 } ;
197206 }
198207
@@ -276,6 +285,7 @@ export default class UploadJob extends TransferJob {
276285 header : {
277286 contentType : mime . getType ( this . options . from . path ) ,
278287 } ,
288+ accelerateUploading : this . accelerateUploading ,
279289 recovered : this . uploadedId && this . uploadedParts
280290 ? {
281291 uploadId : this . uploadedId ,
@@ -419,6 +429,7 @@ export default class UploadJob extends TransferJob {
419429 overwrite : this . options . overwrite ,
420430 storageClassName : this . options . storageClassName ,
421431 backendMode : this . options . clientOptions . backendMode ,
432+ accelerateUploading : this . options . accelerateUploading ,
422433
423434 // real-time info
424435 prog : {
@@ -480,6 +491,12 @@ export default class UploadJob extends TransferJob {
480491 this . uploadedId = "" ;
481492 this . uploadedParts = [ ] ;
482493 }
494+ // handle accelerate uploading is not available
495+ if ( err . toString ( ) . includes ( "transfer acceleration is not configured" ) ) {
496+ this . accelerateUploading = false ;
497+ await this . retry ( ) ;
498+ return ;
499+ }
483500
484501 this . _status = Status . Failed ;
485502 this . message = err . toString ( ) ;
0 commit comments