Skip to content

Commit

Permalink
ddl/ingest: add mutex to disk root (#41029)
Browse files Browse the repository at this point in the history
close #40970
  • Loading branch information
tangenta committed Feb 3, 2023
1 parent ddd0810 commit f7d5db2
Showing 1 changed file with 17 additions and 4 deletions.
21 changes: 17 additions & 4 deletions ddl/ingest/disk_root.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
package ingest

import (
"sync"

lcom "github.com/pingcap/tidb/br/pkg/lightning/common"
"github.com/pingcap/tidb/sessionctx/variable"
"github.com/pingcap/tidb/util/logutil"
Expand All @@ -37,6 +39,7 @@ type diskRootImpl struct {
currentUsage uint64
maxQuota uint64
bcCtx *backendCtxManager
mu sync.RWMutex
}

// NewDiskRootImpl creates a new DiskRoot.
Expand All @@ -49,22 +52,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 err
}
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 f7d5db2

Please sign in to comment.