@@ -18,53 +18,53 @@ const { logHelper } = require('../../utils');
1818 * @return {undefined }
1919 */
2020function completeMPU ( params , callback ) {
21- if ( ! params || ! params . MultipartUpload ||
22- ! params . MultipartUpload . Parts || ! params . UploadId ||
23- ! params . Bucket || ! params . Key ) {
24- const error = errorInstances . InvalidRequest
25- . customizeDescription ( 'Missing required parameter' ) ;
21+ if ( ! params || ! params . MultipartUpload ||
22+ ! params . MultipartUpload . Parts || ! params . UploadId ||
23+ ! params . Bucket || ! params . Key ) {
24+ const error = errorInstances . InvalidRequest
25+ . customizeDescription ( 'Missing required parameter' ) ;
2626 logHelper ( logger , 'error' , 'error in completeMultipartUpload' , error ) ;
27- return callback ( error ) ;
28- }
29- const partList = params . MultipartUpload . Parts ;
30- // verify that the part list is in order
31- if ( params . MultipartUpload . Parts . length === 0 ) {
32- const error = errorInstances . InvalidRequest
33- . customizeDescription ( 'You must specify at least one part' ) ;
27+ return callback ( error ) ;
28+ }
29+ const partList = params . MultipartUpload . Parts ;
30+ if ( partList . length === 0 ) {
31+ const error = errorInstances . InvalidRequest
32+ . customizeDescription ( 'You must specify at least one part' ) ;
3433 logHelper ( logger , 'error' , 'error in completeMultipartUpload' , error ) ;
35- return callback ( error ) ;
36- }
37- for ( let ind = 1 ; ind < partList . length ; ++ ind ) {
38- if ( partList [ ind - 1 ] . PartNumber >= partList [ ind ] . PartNumber ) {
34+ return callback ( error ) ;
35+ }
36+ for ( let ind = 1 ; ind < partList . length ; ++ ind ) {
37+ if ( partList [ ind - 1 ] . PartNumber >= partList [ ind ] . PartNumber ) {
3938 logHelper ( logger , 'error' , 'error in completeMultipartUpload' ,
4039 errors . InvalidPartOrder ) ;
4140 return callback ( errors . InvalidPartOrder ) ;
4241 }
42+ const mpuHelper = new MpuHelper ( this ) ;
43+ return async . waterfall ( [
44+ next => mpuHelper . splitMerge ( params , partList , 'compose' , next ) ,
45+ ( numParts , next ) => {
46+ mpuHelper . composeFinal ( numParts , params , next ) ;
47+ } ,
48+ ( result , next ) => {
49+ mpuHelper . generateMpuResult ( result , partList , next ) ;
50+ } ,
51+ ( result , aggregateETag , next ) => {
52+ mpuHelper . copyToMain ( result , aggregateETag , params , next ) ;
53+ } ,
54+ ( mpuResult , next ) => {
55+ const delParams = {
56+ Bucket : params . Bucket ,
57+ MPU : params . MPU ,
58+ Prefix : createMpuKey ( params . Key , params . UploadId ) ,
59+ } ;
60+ mpuHelper . removeParts ( delParams , err => {
61+ next ( err , mpuResult ) ;
62+ } ) ;
63+ } ,
64+ ] , ( err , result ) => {
65+ callback ( err , result ) ;
66+ } ) ;
4367 }
44- const mpuHelper = new MpuHelper ( this ) ; // this === GcpClient
45- return async . waterfall ( [
46- next => {
47- // first compose: in mpu bucket
48- // max 10,000 => 313 parts
49- // max component count per object 32
50- logger . trace ( 'completeMultipartUpload: compose' ,
51- { partCount : partList . length } ) ;
52- mpuHelper . splitMerge ( params , partList , 'compose' , next ) ;
53- } ,
54- ( numParts , next ) => mpuHelper . composeFinal ( numParts , params , next ) ,
55- ( result , next ) => mpuHelper . generateMpuResult ( result , partList , next ) ,
56- ( result , aggregateETag , next ) =>
57- mpuHelper . copyToMain ( result , aggregateETag , params , next ) ,
58- ( mpuResult , next ) => {
59- const delParams = {
60- Bucket : params . Bucket ,
61- MPU : params . MPU ,
62- Prefix : createMpuKey ( params . Key , params . UploadId ) ,
63- } ;
64- return mpuHelper . removeParts ( delParams ,
65- err => next ( err , mpuResult ) ) ;
66- } ,
67- ] , callback ) ;
6868}
6969
7070module . exports = completeMPU ;
0 commit comments