From f815e9bd9ad4ebc683bbcc414e1681a6f0e3c29e Mon Sep 17 00:00:00 2001 From: withchao <993506633@qq.com> Date: Sun, 23 Apr 2023 10:46:52 +0800 Subject: [PATCH] s3 --- pkg/common/db/controller/storage.go | 21 +++++++++++---------- pkg/common/db/table/relation/object_put.go | 1 - 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/pkg/common/db/controller/storage.go b/pkg/common/db/controller/storage.go index c91ec4490..b327a2597 100644 --- a/pkg/common/db/controller/storage.go +++ b/pkg/common/db/controller/storage.go @@ -157,8 +157,15 @@ func (c *s3Database) ApplyPut(ctx context.Context, req *third.ApplyPutReq) (*thi if put.PutID == "" { put.PutID = c.UUID() } - if _, err := c.put.Take(ctx, put.PutID); err == nil { - return nil, errs.ErrDuplicateKey.Wrap(fmt.Sprintf("duplicate put id %s", put.PutID)) + if v, err := c.put.Take(ctx, put.PutID); err == nil { + now := time.Now().UnixMilli() + if v.EffectiveTime.UnixMilli() <= now { + if err := c.put.DelPut(ctx, []string{v.PutID}); err != nil { + return nil, err + } + } else { + return nil, errs.ErrDuplicateKey.Wrap(fmt.Sprintf("duplicate put id %s", put.PutID)) + } } else if !c.isNotFound(err) { return nil, err } @@ -203,9 +210,6 @@ func (c *s3Database) GetPut(ctx context.Context, req *third.GetPutReq) (*third.G if err != nil { return nil, err } - if up.Complete { - return nil, errs.ErrFileUploadedComplete.Wrap("put completed") - } reader, err := c.obj.GetObject(ctx, &obj.BucketObject{Bucket: c.obj.TempBucket(), Name: path.Join(up.Path, urlsName)}) if err != nil { return nil, err @@ -273,9 +277,6 @@ func (c *s3Database) ConfirmPut(ctx context.Context, req *third.ConfirmPutReq) ( } } }() - if put.Complete { - return nil, errs.ErrFileUploadedComplete.Wrap("put completed") - } now := time.Now().UnixMilli() if put.EffectiveTime.UnixMilli() < now { return nil, errs.ErrFileUploadedExpired.Wrap("put expired") @@ -403,8 +404,8 @@ func (c *s3Database) ConfirmPut(ctx context.Context, req *third.ConfirmPutReq) ( if err := c.info.SetObject(ctx, o); err != nil { return nil, err } - if err := c.put.SetCompleted(ctx, put.PutID); err != nil { - log.ZError(ctx, "SetCompleted", err, "PutID", put.PutID) + if err := c.put.DelPut(ctx, []string{put.PutID}); err != nil { + log.ZError(ctx, "DelPut", err, "PutID", put.PutID) } return &third.ConfirmPutResp{ Url: c.urlName(o.Name), diff --git a/pkg/common/db/table/relation/object_put.go b/pkg/common/db/table/relation/object_put.go index 67d9d9379..62ffe61e7 100644 --- a/pkg/common/db/table/relation/object_put.go +++ b/pkg/common/db/table/relation/object_put.go @@ -18,7 +18,6 @@ type ObjectPutModel struct { ObjectSize int64 `gorm:"column:object_size"` FragmentSize int64 `gorm:"column:fragment_size"` PutURLsHash string `gorm:"column:put_urls_hash"` - Complete bool `gorm:"column:complete"` ValidTime *time.Time `gorm:"column:valid_time"` EffectiveTime time.Time `gorm:"column:effective_time"` CreateTime time.Time `gorm:"column:create_time"`