@@ -2099,7 +2099,7 @@ - (AWSTask *)callFinishMultiPartForUploadTask:(AWSS3TransferUtilityMultiPartUplo
2099
2099
return [self .s3 completeMultipartUpload: compReq];
2100
2100
}
2101
2101
2102
- - (AWSTask *) callAbortMultiPartForUploadTask : (AWSS3TransferUtilityMultiPartUploadTask *) uploadTask {
2102
+ - (AWSTask *)callAbortMultiPartForUploadTask : (AWSS3TransferUtilityMultiPartUploadTask *)uploadTask {
2103
2103
AWSS3AbortMultipartUploadRequest *abortReq = [AWSS3AbortMultipartUploadRequest new ];
2104
2104
abortReq.bucket = uploadTask.bucket ;
2105
2105
abortReq.uploadId = uploadTask.uploadID ;
@@ -2377,61 +2377,35 @@ - (void)URLSession:(NSURLSession *)session
2377
2377
eTag: subTask.eTag
2378
2378
status: subTask.status
2379
2379
retry_count: transferUtilityMultiPartUploadTask.retryCount databaseQueue: self .databaseQueue];
2380
+
2381
+ [transferUtilityMultiPartUploadTask moveTasksToInProgress ];
2382
+ [transferUtilityMultiPartUploadTask completeIfDone ];
2380
2383
2381
2384
// If there are parts waiting to be uploaded, pick from the waiting parts list and move it to inProgress
2382
- if ([transferUtilityMultiPartUploadTask.waitingPartsDictionary count ] > 0 ) {
2383
- long numberOfPartsInProgress = [transferUtilityMultiPartUploadTask.inProgressPartsDictionary count ];
2384
- while (numberOfPartsInProgress < [self .transferUtilityConfiguration.multiPartConcurrencyLimit integerValue ]) {
2385
- if ([transferUtilityMultiPartUploadTask.waitingPartsDictionary count ] > 0 ) {
2386
- // Get a part from the waitingList
2387
- AWSS3TransferUtilityUploadSubTask *nextSubTask = [[transferUtilityMultiPartUploadTask.waitingPartsDictionary allValues ] objectAtIndex: 0 ];
2388
-
2389
- // Add to inProgress list
2390
- [transferUtilityMultiPartUploadTask.inProgressPartsDictionary setObject: nextSubTask forKey: @(nextSubTask.taskIdentifier)];
2391
-
2392
- // Remove it from the waitingList
2393
- [transferUtilityMultiPartUploadTask.waitingPartsDictionary removeObjectForKey: @(nextSubTask.taskIdentifier)];
2394
- AWSDDLogDebug (@" Moving Task[%@ ] to progress for Multipart[%@ ]" , @(nextSubTask.taskIdentifier ), transferUtilityMultiPartUploadTask.uploadID );
2395
- [nextSubTask.sessionTask resume ];
2396
- numberOfPartsInProgress++;
2397
- continue ;
2398
- }
2399
- break ;
2400
- }
2401
- }
2402
- else if ([transferUtilityMultiPartUploadTask.inProgressPartsDictionary count ] == 0 ) {
2403
- // If there are no more inProgress parts, then we are done.
2404
-
2405
- // Validate that all the content has been uploaded.
2406
- int64_t totalBytesSent = 0 ;
2407
- for (AWSS3TransferUtilityUploadSubTask *aSubTask in transferUtilityMultiPartUploadTask.completedPartsSet ) {
2408
- totalBytesSent += aSubTask.totalBytesExpectedToSend ;
2409
- }
2410
-
2411
- if (totalBytesSent != transferUtilityMultiPartUploadTask.contentLength .longLongValue ) {
2412
- NSString *errorMessage = [NSString stringWithFormat: @" Expected to send [%@ ], but sent [%@ ] and there are no remaining parts. Failing transfer " ,
2413
- transferUtilityMultiPartUploadTask.contentLength, @(totalBytesSent)];
2414
- AWSDDLogDebug (@" %@ " , errorMessage);
2415
- NSDictionary *userInfo = [NSDictionary dictionaryWithObject: errorMessage
2416
- forKey: @" Message" ];
2417
-
2418
- transferUtilityMultiPartUploadTask.error = [NSError errorWithDomain: AWSS3TransferUtilityErrorDomain
2419
- code: AWSS3TransferUtilityErrorClientError
2420
- userInfo: userInfo];
2421
-
2422
- // Execute call back if provided.
2423
- [self completeTask: transferUtilityMultiPartUploadTask];
2424
-
2425
- // Abort the request, so the server can clean up any partials.
2426
- [self callAbortMultiPartForUploadTask: transferUtilityMultiPartUploadTask];
2427
-
2428
- // clean up.
2429
- [self cleanupForMultiPartUploadTask: transferUtilityMultiPartUploadTask];
2430
- return ;
2431
- }
2432
-
2433
- [self completeMultiPartForUploadTask: transferUtilityMultiPartUploadTask];
2434
- }
2385
+ // if ([transferUtilityMultiPartUploadTask.waitingPartsDictionary count] > 0) {
2386
+ // long numberOfPartsInProgress = [transferUtilityMultiPartUploadTask.inProgressPartsDictionary count];
2387
+ // while (numberOfPartsInProgress < [self.transferUtilityConfiguration.multiPartConcurrencyLimit integerValue]) {
2388
+ // if ([transferUtilityMultiPartUploadTask.waitingPartsDictionary count] > 0) {
2389
+ // //Get a part from the waitingList
2390
+ // AWSS3TransferUtilityUploadSubTask *nextSubTask = [[transferUtilityMultiPartUploadTask.waitingPartsDictionary allValues] objectAtIndex:0];
2391
+ //
2392
+ // //Add to inProgress list
2393
+ // [transferUtilityMultiPartUploadTask.inProgressPartsDictionary setObject:nextSubTask forKey:@(nextSubTask.taskIdentifier)];
2394
+ //
2395
+ // //Remove it from the waitingList
2396
+ // [transferUtilityMultiPartUploadTask.waitingPartsDictionary removeObjectForKey:@(nextSubTask.taskIdentifier)];
2397
+ // AWSDDLogDebug(@"Moving Task[%@] to progress for Multipart[%@]", @(nextSubTask.taskIdentifier), transferUtilityMultiPartUploadTask.uploadID);
2398
+ // [nextSubTask.sessionTask resume];
2399
+ // numberOfPartsInProgress++;
2400
+ // continue;
2401
+ // }
2402
+ // break;
2403
+ // }
2404
+ // }
2405
+ // else
2406
+ // if (transferUtilityMultiPartUploadTask.inProgressPartsDictionary.count == 0) {
2407
+ //
2408
+ // }
2435
2409
}
2436
2410
}
2437
2411
else if ([task isKindOfClass: [NSURLSessionDownloadTask class ]]) {
@@ -2580,7 +2554,7 @@ - (void)completeTask:(AWSS3TransferUtilityTask *)task removeCompletedTask:(BOOL)
2580
2554
2581
2555
}
2582
2556
2583
- - (void ) cleanupForMultiPartUploadTask : (AWSS3TransferUtilityMultiPartUploadTask *) task {
2557
+ - (void )cleanupForMultiPartUploadTask : (AWSS3TransferUtilityMultiPartUploadTask *)task {
2584
2558
2585
2559
// Add it to list of completed Tasks
2586
2560
[self .completedTaskDictionary setObject: task forKey: task.transferID];
0 commit comments