From 6de786185d6c02046d28daf6bbeb2cef7798241e Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Sun, 1 Aug 2021 22:32:50 -0700 Subject: [PATCH] volume.balance: balance read only volumes first --- weed/shell/command_volume_balance.go | 30 ++++++++++++++-------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/weed/shell/command_volume_balance.go b/weed/shell/command_volume_balance.go index ad7da0e44..06a5ebc92 100644 --- a/weed/shell/command_volume_balance.go +++ b/weed/shell/command_volume_balance.go @@ -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 { - // 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 for _, n := range nodes { n.selectVolumes(func(v *master_pb.VolumeInformationMessage) bool { @@ -150,6 +135,21 @@ func balanceVolumeServersByDiskType(commandEnv *CommandEnv, diskType types.DiskT 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 }