aboutsummaryrefslogtreecommitdiff
path: root/weed/shell/command_ec_balance.go
diff options
context:
space:
mode:
authorjustin <leyou240@live.cn>2022-04-18 10:35:43 +0800
committerjustin <leyou240@live.cn>2022-04-18 10:35:43 +0800
commit3551ca2fcf423464afb2db4b5792c22ec94c2bfd (patch)
treeee1f372e32fb03d93aeb0825ec0f068ef1fce161 /weed/shell/command_ec_balance.go
parentc6ec5269f4b34d79ab8e13050623501b8befda32 (diff)
downloadseaweedfs-3551ca2fcf423464afb2db4b5792c22ec94c2bfd.tar.xz
seaweedfs-3551ca2fcf423464afb2db4b5792c22ec94c2bfd.zip
enhancement: replace sort.Slice with slices.SortFunc to reduce reflection
Diffstat (limited to 'weed/shell/command_ec_balance.go')
-rw-r--r--weed/shell/command_ec_balance.go15
1 files changed, 7 insertions, 8 deletions
diff --git a/weed/shell/command_ec_balance.go b/weed/shell/command_ec_balance.go
index 6cd91119b..393d44b80 100644
--- a/weed/shell/command_ec_balance.go
+++ b/weed/shell/command_ec_balance.go
@@ -4,12 +4,11 @@ import (
"flag"
"fmt"
"github.com/chrislusf/seaweedfs/weed/pb"
- "github.com/chrislusf/seaweedfs/weed/storage/types"
- "io"
- "sort"
-
"github.com/chrislusf/seaweedfs/weed/storage/erasure_coding"
"github.com/chrislusf/seaweedfs/weed/storage/needle"
+ "github.com/chrislusf/seaweedfs/weed/storage/types"
+ "golang.org/x/exp/slices"
+ "io"
)
func init() {
@@ -411,8 +410,8 @@ func doBalanceEcRack(commandEnv *CommandEnv, ecRack *EcRack, applyBalancing bool
hasMove := true
for hasMove {
hasMove = false
- sort.Slice(rackEcNodes, func(i, j int) bool {
- return rackEcNodes[i].freeEcSlot > rackEcNodes[j].freeEcSlot
+ slices.SortFunc(rackEcNodes, func(a, b *EcNode) bool {
+ return a.freeEcSlot > b.freeEcSlot
})
emptyNode, fullNode := rackEcNodes[0], rackEcNodes[len(rackEcNodes)-1]
emptyNodeShardCount, fullNodeShardCount := ecNodeIdToShardCount[emptyNode.info.Id], ecNodeIdToShardCount[fullNode.info.Id]
@@ -492,8 +491,8 @@ func pickNEcShardsToMoveFrom(ecNodes []*EcNode, vid needle.VolumeId, n int) map[
})
}
}
- sort.Slice(candidateEcNodes, func(i, j int) bool {
- return candidateEcNodes[i].shardCount > candidateEcNodes[j].shardCount
+ slices.SortFunc(candidateEcNodes, func(a, b *CandidateEcNode) bool {
+ return a.shardCount > b.shardCount
})
for i := 0; i < n; i++ {
selectedEcNodeIndex := -1