From 90620503da669cb258379cd9a8496a58635842ef Mon Sep 17 00:00:00 2001 From: Qiu Jian Date: Tue, 3 Mar 2020 02:08:55 +0800 Subject: [PATCH] fix: clean up pending usage no matter whether object upload is success --- pkg/compute/models/buckets.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pkg/compute/models/buckets.go b/pkg/compute/models/buckets.go index 1d799dc8f4..55ba42284b 100644 --- a/pkg/compute/models/buckets.go +++ b/pkg/compute/models/buckets.go @@ -939,6 +939,9 @@ func (bucket *SBucket) PerformUpload( if err := quotas.CheckSetPendingQuota(ctx, userCred, &pendingUsage); err != nil { return nil, httperrors.NewOutOfQuotaError("%s", err) } + + // always cancel pending usage + defer quotas.CancelPendingUsage(ctx, userCred, &pendingUsage, &pendingUsage) } err = cloudprovider.UploadObject(ctx, iBucket, key, 0, appParams.Request.Body, sizeBytes, cloudprovider.TBucketACLType(aclStr), storageClass, meta, false) @@ -951,10 +954,6 @@ func (bucket *SBucket) PerformUpload( bucket.syncWithCloudBucket(ctx, userCred, iBucket, nil, true) - if !pendingUsage.IsEmpty() { - quotas.CancelPendingUsage(ctx, userCred, &pendingUsage, &pendingUsage) - } - return nil, nil }