mirror of https://github.com/milvus-io/milvus.git
Fix container/list removal in iteration (#17382)
Signed-off-by: Congqi Xia <congqi.xia@zilliz.com>pull/17385/head
parent
af994b5e1c
commit
ac6394d0fd
|
@ -9,7 +9,9 @@ type scheduleReadTaskPolicy func(sqTasks *list.List, targetUsage int32) ([]readT
|
|||
func defaultScheduleReadPolicy(sqTasks *list.List, targetUsage int32) ([]readTask, int32) {
|
||||
var ret []readTask
|
||||
usage := int32(0)
|
||||
for e := sqTasks.Front(); e != nil; e = e.Next() {
|
||||
var next *list.Element
|
||||
for e := sqTasks.Front(); e != nil; e = next {
|
||||
next = e.Next()
|
||||
t, _ := e.Value.(readTask)
|
||||
tUsage := t.CPUUsage()
|
||||
if usage+tUsage > targetUsage {
|
||||
|
|
|
@ -139,7 +139,9 @@ func (s *taskScheduler) tryEvictUnsolvedReadTask(headCount int) {
|
|||
return
|
||||
}
|
||||
timeoutErr := fmt.Errorf("deadline exceed")
|
||||
for e := s.unsolvedReadTasks.Front(); e != nil; e = e.Next() {
|
||||
var next *list.Element
|
||||
for e := s.unsolvedReadTasks.Front(); e != nil; e = next {
|
||||
next = e.Next()
|
||||
t, ok := e.Value.(readTask)
|
||||
if !ok {
|
||||
s.unsolvedReadTasks.Remove(e)
|
||||
|
@ -157,7 +159,8 @@ func (s *taskScheduler) tryEvictUnsolvedReadTask(headCount int) {
|
|||
}
|
||||
metrics.QueryNodeEvictedReadReqCount.WithLabelValues(fmt.Sprint(Params.QueryNodeCfg.GetNodeID())).Add(float64(diff))
|
||||
busyErr := fmt.Errorf("server is busy")
|
||||
for e := s.unsolvedReadTasks.Front(); e != nil && diff > 0; e = e.Next() {
|
||||
for e := s.unsolvedReadTasks.Front(); e != nil && diff > 0; e = next {
|
||||
next = e.Next()
|
||||
diff--
|
||||
s.unsolvedReadTasks.Remove(e)
|
||||
t, ok := e.Value.(readTask)
|
||||
|
@ -316,7 +319,9 @@ func (s *taskScheduler) Close() {
|
|||
}
|
||||
|
||||
func (s *taskScheduler) tryMergeReadTasks() {
|
||||
for e := s.unsolvedReadTasks.Front(); e != nil; e = e.Next() {
|
||||
var next *list.Element
|
||||
for e := s.unsolvedReadTasks.Front(); e != nil; e = next {
|
||||
next = e.Next()
|
||||
t, ok := e.Value.(readTask)
|
||||
if !ok {
|
||||
s.unsolvedReadTasks.Remove(e)
|
||||
|
|
Loading…
Reference in New Issue