skip unnecessary scheduling attempt when pod's finalizers change

This commit is contained in:
jingxueli 2020-05-14 15:43:54 +08:00
parent 8f8ac98714
commit b1143da370

View File

@ -301,7 +301,7 @@ func responsibleForPod(pod *v1.Pod, profiles profile.Map) bool {
// skipPodUpdate checks whether the specified pod update should be ignored.
// This function will return true if
// - The pod has already been assumed, AND
// - The pod has only its ResourceVersion, Spec.NodeName and/or Annotations
// - The pod has only its ResourceVersion, Spec.NodeName, Annotations, ManagedFields and/or Finalizers
// updated.
func (sched *Scheduler) skipPodUpdate(pod *v1.Pod) bool {
// Non-assumed pods should never be skipped.
@ -338,6 +338,8 @@ func (sched *Scheduler) skipPodUpdate(pod *v1.Pod) bool {
// Same as above, when annotations are modified with ServerSideApply,
// ManagedFields may also change and must be excluded
p.ManagedFields = nil
// Finalizers must be excluded because scheduled result can not be affected
p.Finalizers = nil
return p
}
assumedPodCopy, podCopy := f(assumedPod), f(pod)