Skip to content

Commit

Permalink
This is an automated cherry-pick of #41029
Browse files Browse the repository at this point in the history
Signed-off-by: ti-chi-bot <ti-community-prow-bot@tidb.io>
  • Loading branch information
tangenta authored and ti-chi-bot committed Feb 3, 2023
1 parent 66b3ac8 commit 75a7327
Showing 1 changed file with 20 additions and 4 deletions.
24 changes: 20 additions & 4 deletions ddl/ingest/disk_root.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,12 @@
package ingest

import (
<<<<<<< HEAD
"github.com/pingcap/errors"
=======
"sync"

>>>>>>> f7d5db24b3 (ddl/ingest: add mutex to disk root (#41029))
lcom "github.com/pingcap/tidb/br/pkg/lightning/common"
"github.com/pingcap/tidb/sessionctx/variable"
"github.com/pingcap/tidb/util/logutil"
Expand All @@ -38,6 +43,7 @@ type diskRootImpl struct {
currentUsage uint64
maxQuota uint64
bcCtx *backendCtxManager
mu sync.RWMutex
}

// NewDiskRootImpl creates a new DiskRoot.
Expand All @@ -50,22 +56,32 @@ func NewDiskRootImpl(path string, bcCtx *backendCtxManager) DiskRoot {

// CurrentUsage implements DiskRoot interface.
func (d *diskRootImpl) CurrentUsage() uint64 {
return d.currentUsage
d.mu.RLock()
usage := d.currentUsage
d.mu.RUnlock()
return usage
}

// MaxQuota implements DiskRoot interface.
func (d *diskRootImpl) MaxQuota() uint64 {
return d.maxQuota
d.mu.RLock()
quota := d.maxQuota
d.mu.RUnlock()
return quota
}

// UpdateUsageAndQuota implements DiskRoot interface.
func (d *diskRootImpl) UpdateUsageAndQuota() error {
d.currentUsage = d.bcCtx.TotalDiskUsage()
totalDiskUsage := d.bcCtx.TotalDiskUsage()
sz, err := lcom.GetStorageSize(d.path)
if err != nil {
logutil.BgLogger().Error(LitErrGetStorageQuota, zap.Error(err))
return errors.New(LitErrGetStorageQuota)
}
d.maxQuota = mathutil.Min(variable.DDLDiskQuota.Load(), uint64(capacityThreshold*float64(sz.Capacity)))
maxQuota := mathutil.Min(variable.DDLDiskQuota.Load(), uint64(capacityThreshold*float64(sz.Capacity)))
d.mu.Lock()
d.currentUsage = totalDiskUsage
d.maxQuota = maxQuota
d.mu.Unlock()
return nil
}

0 comments on commit 75a7327

Please sign in to comment.