Scheduler queue: fix calculateBackoffDuration overflow in extreme data cases

This commit is contained in:
BinacsLee
2021-09-19 10:09:06 +08:00
parent 25c7b6a2c7
commit f277864aa5
2 changed files with 45 additions and 4 deletions

View File

@@ -742,10 +742,11 @@ func (p *PriorityQueue) getBackoffTime(podInfo *framework.QueuedPodInfo) time.Ti
func (p *PriorityQueue) calculateBackoffDuration(podInfo *framework.QueuedPodInfo) time.Duration {
duration := p.podInitialBackoffDuration
for i := 1; i < podInfo.Attempts; i++ {
duration = duration * 2
if duration > p.podMaxBackoffDuration {
// Use subtraction instead of addition or multiplication to avoid overflow.
if duration > p.podMaxBackoffDuration-duration {
return p.podMaxBackoffDuration
}
duration += duration
}
return duration
}