volume.balance: balance read only volumes first
This commit is contained in:
@@ -120,21 +120,6 @@ func balanceVolumeServers(commandEnv *CommandEnv, diskTypes []types.DiskType, vo
|
|||||||
|
|
||||||
func balanceVolumeServersByDiskType(commandEnv *CommandEnv, diskType types.DiskType, volumeReplicas map[uint32][]*VolumeReplica, nodes []*Node, volumeSizeLimit uint64, collection string, applyBalancing bool) error {
|
func balanceVolumeServersByDiskType(commandEnv *CommandEnv, diskType types.DiskType, volumeReplicas map[uint32][]*VolumeReplica, nodes []*Node, volumeSizeLimit uint64, collection string, applyBalancing bool) error {
|
||||||
|
|
||||||
// balance writable volumes
|
|
||||||
for _, n := range nodes {
|
|
||||||
n.selectVolumes(func(v *master_pb.VolumeInformationMessage) bool {
|
|
||||||
if collection != "ALL_COLLECTIONS" {
|
|
||||||
if v.Collection != collection {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return v.DiskType == string(diskType) && (!v.ReadOnly && v.Size < volumeSizeLimit)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
if err := balanceSelectedVolume(commandEnv, volumeReplicas, nodes, capacityByMaxVolumeCount(diskType), sortWritableVolumes, applyBalancing); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
// balance readable volumes
|
// balance readable volumes
|
||||||
for _, n := range nodes {
|
for _, n := range nodes {
|
||||||
n.selectVolumes(func(v *master_pb.VolumeInformationMessage) bool {
|
n.selectVolumes(func(v *master_pb.VolumeInformationMessage) bool {
|
||||||
@@ -150,6 +135,21 @@ func balanceVolumeServersByDiskType(commandEnv *CommandEnv, diskType types.DiskT
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// balance writable volumes
|
||||||
|
for _, n := range nodes {
|
||||||
|
n.selectVolumes(func(v *master_pb.VolumeInformationMessage) bool {
|
||||||
|
if collection != "ALL_COLLECTIONS" {
|
||||||
|
if v.Collection != collection {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return v.DiskType == string(diskType) && (!v.ReadOnly && v.Size < volumeSizeLimit)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if err := balanceSelectedVolume(commandEnv, volumeReplicas, nodes, capacityByMaxVolumeCount(diskType), sortWritableVolumes, applyBalancing); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user