append
possibly assigns to a wrong variable CRT-D0001334 finalFilters := b.filters
335 conf := solver.GetSchedulerConfig()
336 if witnessFilter := filter.NewPlacementWitnessSafeguard(b.GetName(), conf, solver.GetBasicCluster(), solver.GetRuleManager(), solver.Region, solver.Source, solver.fit); witnessFilter != nil {
337 finalFilters = append(b.filters, witnessFilter)338 }
339 targets = filter.SelectTargetStores(targets, finalFilters, conf, collector, b.filterCounter)
340 sort.Slice(targets, func(i, j int) bool {
508func (conf *hotRegionSchedulerConfig) applyPrioritiesConfig(p prioritiesConfig) {
509 conf.ReadPriorities = append(p.read[:0:0], p.read...)
510 conf.WriteLeaderPriorities = append(p.writeLeader[:0:0], p.writeLeader...)
511 conf.WritePeerPriorities = append(p.writePeer[:0:0], p.writePeer...)512}
513
514func getReadPriorities(c *prioritiesConfig) []string {
507
508func (conf *hotRegionSchedulerConfig) applyPrioritiesConfig(p prioritiesConfig) {
509 conf.ReadPriorities = append(p.read[:0:0], p.read...)
510 conf.WriteLeaderPriorities = append(p.writeLeader[:0:0], p.writeLeader...)511 conf.WritePeerPriorities = append(p.writePeer[:0:0], p.writePeer...)
512}
513
506}
507
508func (conf *hotRegionSchedulerConfig) applyPrioritiesConfig(p prioritiesConfig) {
509 conf.ReadPriorities = append(p.read[:0:0], p.read...)510 conf.WriteLeaderPriorities = append(p.writeLeader[:0:0], p.writeLeader...)
511 conf.WritePeerPriorities = append(p.writePeer[:0:0], p.writePeer...)
512}
534 finalFilters := l.filters
535 conf := solver.GetSchedulerConfig()
536 if leaderFilter := filter.NewPlacementLeaderSafeguard(l.GetName(), conf, solver.GetBasicCluster(), solver.GetRuleManager(), solver.Region, solver.Source, false /*allowMoveLeader*/); leaderFilter != nil {
537 finalFilters = append(l.filters, leaderFilter)538 }
539 target := filter.NewCandidates([]*core.StoreInfo{solver.Target}).
540 FilterTarget(conf, nil, l.filterCounter, finalFilters...).
The builtin function append
returns the updated slice after the append operation.
This resulting slice is usually assigned back to the same variable that contained
the original slice to which new values were appended.
x = []int{1, 3, 5}
append(x, 7) // returns the value []int{1, 3, 5, 7}. This is usually assigned back to x
x := []int{}
y := []int{}
x = append(y, 1) // possibly wrong
x = []int{1, 3, 5}
x = append(x, 7)
x := []int{}
y := []int{}
y = append(y, 1) // append 1 to y