Browse Source
fix no more writables volumes while disk free space is sufficient (#4491)
Co-authored-by: wang wusong <wangwusong@virtaitech.com>
pull/4493/head
wusong
2 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
17 additions and
0 deletions
-
weed/topology/node.go
-
weed/topology/topology_vacuum.go
|
|
@ -243,6 +243,7 @@ func (n *NodeImpl) CollectDeadNodeAndFullVolumes(freshThreshHold int64, volumeSi |
|
|
|
if n.IsRack() { |
|
|
|
for _, c := range n.Children() { |
|
|
|
dn := c.(*DataNode) //can not cast n to DataNode
|
|
|
|
dn.RLock() |
|
|
|
for _, v := range dn.GetVolumes() { |
|
|
|
if v.Size >= volumeSizeLimit { |
|
|
|
//fmt.Println("volume",v.Id,"size",v.Size,">",volumeSizeLimit)
|
|
|
@ -259,6 +260,7 @@ func (n *NodeImpl) CollectDeadNodeAndFullVolumes(freshThreshHold int64, volumeSi |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
dn.RUnlock() |
|
|
|
} |
|
|
|
} else { |
|
|
|
for _, c := range n.Children() { |
|
|
|
|
|
@ -172,6 +172,21 @@ func (t *Topology) batchVacuumVolumeCommit(grpcDialOption grpc.DialOption, vl *V |
|
|
|
} |
|
|
|
|
|
|
|
if isCommitSuccess { |
|
|
|
//reset all vacuumed volumes size
|
|
|
|
for _, dn := range vacuumLocationList.list { |
|
|
|
vInfo, err := dn.GetVolumesById(vid) |
|
|
|
if err != nil { |
|
|
|
glog.V(0).Infof("get volume info for volume: %d failed %v", vid, err) |
|
|
|
return false |
|
|
|
} |
|
|
|
|
|
|
|
dn.Lock() |
|
|
|
disk := dn.getOrCreateDisk(vInfo.DiskType) |
|
|
|
vInfo.Size = 0 |
|
|
|
disk.doAddOrUpdateVolume(vInfo) |
|
|
|
dn.Unlock() |
|
|
|
} |
|
|
|
|
|
|
|
for _, dn := range vacuumLocationList.list { |
|
|
|
vl.SetVolumeAvailable(dn, vid, isReadOnly) |
|
|
|
} |
|
|
|