aliyun / aliyun-oss-cpp-sdk

Aliyun OSS SDK for C++
Other
188 stars 88 forks source link

InvalidPartOrder #71

Closed yanminhui closed 4 years ago

yanminhui commented 4 years ago

现象

使用分片传输,在多线程情况下,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

解决

huiguangjun commented 4 years ago

1)这部分需要调用方 自己保证。 2)接口定义时都是const 类型,也不方便替客户做纠正。