diff --git a/pkg/common/db/s3/cont/controller.go b/pkg/common/db/s3/cont/controller.go index 7b4ab1901..3b64e5dad 100644 --- a/pkg/common/db/s3/cont/controller.go +++ b/pkg/common/db/s3/cont/controller.go @@ -8,6 +8,7 @@ import ( "fmt" "github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/s3" "github.com/OpenIMSDK/Open-IM-Server/pkg/common/log" + "github.com/OpenIMSDK/Open-IM-Server/pkg/errs" "github.com/google/uuid" "path" "strings" @@ -191,7 +192,7 @@ func (c *Controller) CompleteUpload(ctx context.Context, uploadID string, partHa } md5Sum := md5.Sum([]byte(strings.Join([]string{uploadInfo.ETag}, partSeparator))) if md5val := hex.EncodeToString(md5Sum[:]); md5val != upload.Hash { - return nil, fmt.Errorf("md5 mismatching %s != %s", md5val, upload.Hash) + return nil, errs.ErrArgs.Wrap(fmt.Sprintf("md5 mismatching %s != %s", md5val, upload.Hash)) } // 防止在这个时候,并发操作,导致文件被覆盖 copyInfo, err := c.impl.CopyObject(ctx, uploadInfo.Key, upload.Key+"."+c.UUID()) @@ -199,8 +200,8 @@ func (c *Controller) CompleteUpload(ctx context.Context, uploadID string, partHa return nil, err } cleanObject[copyInfo.Key] = struct{}{} - if copyInfo.ETag != upload.Hash { - return nil, errors.New("copy md5 mismatching") + if copyInfo.ETag != uploadInfo.ETag { + return nil, errors.New("[concurrency]copy md5 mismatching") } if _, err := c.impl.CopyObject(ctx, copyInfo.Key, c.HashPath(upload.Hash)); err != nil { return nil, err