Closed yanminhui closed 4 years ago
使用分片传输,在多线程情况下,PartList 无法保证分片序号按非降序排列,在进行分片重组校验时(即 CompleteMultipartUpload),返回 InvalidPartOrder。
PartList
CompleteMultipartUpload
InvalidPartOrder
class ALIBABACLOUD_OSS_EXPORT CompleteMultipartUploadRequest : public OssObjectRequest { public: CompleteMultipartUploadRequest(const std::string& bucket , const std::string& key); CompleteMultipartUploadRequest(const std::string& bucket , const std::string& key , const PartList& partList); CompleteMultipartUploadRequest(const std::string& bucket , const std::string& key , const PartList& partList , const std::string& uploadId); // ... };
在 CompleteMultipartUploadRequest 中未对分片序号排列进行检查校正,同时,服务端也没有对此进行处理,直接返回 InvalidPartOrder。
CompleteMultipartUploadRequest
1)这部分需要调用方 自己保证。 2)接口定义时都是const 类型,也不方便替客户做纠正。
现象
使用分片传输,在多线程情况下,
PartList
无法保证分片序号按非降序排列,在进行分片重组校验时(即CompleteMultipartUpload
),返回InvalidPartOrder
。问题
在
CompleteMultipartUploadRequest
中未对分片序号排列进行检查校正,同时,服务端也没有对此进行处理,直接返回InvalidPartOrder
。解决
CompleteMultipartUploadRequest
进行检测,替用户纠正排列顺序。