diff options
| author | Chris Lu <chrislusf@users.noreply.github.com> | 2021-05-06 10:00:25 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-05-06 10:00:25 -0700 |
| commit | aaad4b578b37accd240686ab08cb9980dfe6a13a (patch) | |
| tree | fbc8be5bfedebd67938388bcc16ab2268406cf8c /weed/topology/node.go | |
| parent | 55a8f57381aaeeb0cfc1326646024a7052928965 (diff) | |
| parent | c4d32f6937236a83377e3937e311222fc04bd084 (diff) | |
| download | seaweedfs-aaad4b578b37accd240686ab08cb9980dfe6a13a.tar.xz seaweedfs-aaad4b578b37accd240686ab08cb9980dfe6a13a.zip | |
Merge pull request #2049 from qieqieplus/async-assign
ahead of time volume assignment
Diffstat (limited to 'weed/topology/node.go')
| -rw-r--r-- | weed/topology/node.go | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/weed/topology/node.go b/weed/topology/node.go index 95d63972e..a23729dd3 100644 --- a/weed/topology/node.go +++ b/weed/topology/node.go @@ -25,7 +25,7 @@ type Node interface { SetParent(Node) LinkChildNode(node Node) UnlinkChildNode(nodeId NodeId) - CollectDeadNodeAndFullVolumes(freshThreshHold int64, volumeSizeLimit uint64) + CollectDeadNodeAndFullVolumes(freshThreshHold int64, volumeSizeLimit uint64, growThreshold float64) IsDataNode() bool IsRack() bool @@ -235,20 +235,22 @@ func (n *NodeImpl) UnlinkChildNode(nodeId NodeId) { } } -func (n *NodeImpl) CollectDeadNodeAndFullVolumes(freshThreshHold int64, volumeSizeLimit uint64) { +func (n *NodeImpl) CollectDeadNodeAndFullVolumes(freshThreshHold int64, volumeSizeLimit uint64, growThreshold float64) { if n.IsRack() { for _, c := range n.Children() { dn := c.(*DataNode) //can not cast n to DataNode for _, v := range dn.GetVolumes() { - if uint64(v.Size) >= volumeSizeLimit { + if v.Size >= volumeSizeLimit { //fmt.Println("volume",v.Id,"size",v.Size,">",volumeSizeLimit) - n.GetTopology().chanFullVolumes <- v + n.GetTopology().chanFullVolumes <- &v + }else if float64(v.Size) > float64(volumeSizeLimit) * growThreshold { + n.GetTopology().chanCrowdedVolumes <- &v } } } } else { for _, c := range n.Children() { - c.CollectDeadNodeAndFullVolumes(freshThreshHold, volumeSizeLimit) + c.CollectDeadNodeAndFullVolumes(freshThreshHold, volumeSizeLimit, growThreshold) } } } |
