aboutsummaryrefslogtreecommitdiff
path: root/weed/topology/node.go
diff options
context:
space:
mode:
authorqieqieplus <admin@qieqie.me>2021-05-06 18:46:14 +0800
committerqieqieplus <admin@qieqie.me>2021-05-06 18:55:44 +0800
commitc4d32f6937236a83377e3937e311222fc04bd084 (patch)
tree6d803bc4df6d7d889b8ca883d5ad5181502ebe5f /weed/topology/node.go
parentc48ef786702e4c62f644631d37d31218f7447fe4 (diff)
downloadseaweedfs-c4d32f6937236a83377e3937e311222fc04bd084.tar.xz
seaweedfs-c4d32f6937236a83377e3937e311222fc04bd084.zip
ahead of time volume assignment
Diffstat (limited to 'weed/topology/node.go')
-rw-r--r--weed/topology/node.go12
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)
}
}
}