|
|
@ -682,6 +682,8 @@ func (fs *FSObjects) CompleteMultipartUpload(ctx context.Context, bucket string, |
|
|
|
return oi, toObjectErr(err, bucket, object) |
|
|
|
return oi, toObjectErr(err, bucket, object) |
|
|
|
} |
|
|
|
} |
|
|
|
fsRemoveAll(ctx, uploadIDDir) |
|
|
|
fsRemoveAll(ctx, uploadIDDir) |
|
|
|
|
|
|
|
// It is safe to ignore any directory not empty error (in case there were multiple uploadIDs on the same object)
|
|
|
|
|
|
|
|
fsRemoveDir(ctx, fs.getMultipartSHADir(bucket, object)) |
|
|
|
fi, err := fsStatFile(ctx, pathJoin(fs.fsPath, bucket, object)) |
|
|
|
fi, err := fsStatFile(ctx, pathJoin(fs.fsPath, bucket, object)) |
|
|
|
if err != nil { |
|
|
|
if err != nil { |
|
|
|
return oi, toObjectErr(err, bucket, object) |
|
|
|
return oi, toObjectErr(err, bucket, object) |
|
|
@ -769,6 +771,9 @@ func (fs *FSObjects) cleanupStaleMultipartUploads(ctx context.Context, cleanupIn |
|
|
|
} |
|
|
|
} |
|
|
|
if now.Sub(fi.ModTime()) > expiry { |
|
|
|
if now.Sub(fi.ModTime()) > expiry { |
|
|
|
fsRemoveAll(ctx, pathJoin(fs.fsPath, minioMetaMultipartBucket, entry, uploadID)) |
|
|
|
fsRemoveAll(ctx, pathJoin(fs.fsPath, minioMetaMultipartBucket, entry, uploadID)) |
|
|
|
|
|
|
|
// It is safe to ignore any directory not empty error (in case there were multiple uploadIDs on the same object)
|
|
|
|
|
|
|
|
fsRemoveDir(ctx, pathJoin(fs.fsPath, minioMetaMultipartBucket, entry)) |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|