From 121d24cfc76ca1c03f89ceb70e72ee9de7ab465f Mon Sep 17 00:00:00 2001 From: kidddddddddddddddddddddd <1062602710@qq.com> Date: Mon, 5 Sep 2022 12:43:45 +0800 Subject: [PATCH] changes in non-test files --- .../framework/plugins/interpodaffinity/filtering.go | 5 ++--- pkg/scheduler/framework/plugins/interpodaffinity/scoring.go | 5 ++--- pkg/scheduler/internal/queue/scheduling_queue.go | 5 ++++- pkg/scheduler/schedule_one.go | 4 +++- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/pkg/scheduler/framework/plugins/interpodaffinity/filtering.go b/pkg/scheduler/framework/plugins/interpodaffinity/filtering.go index a9e7848c219..b84fc8a788b 100644 --- a/pkg/scheduler/framework/plugins/interpodaffinity/filtering.go +++ b/pkg/scheduler/framework/plugins/interpodaffinity/filtering.go @@ -240,9 +240,8 @@ func (pl *InterPodAffinity) PreFilter(ctx context.Context, cycleState *framework s := &preFilterState{} - s.podInfo = framework.NewPodInfo(pod) - if s.podInfo.ParseError != nil { - return nil, framework.NewStatus(framework.UnschedulableAndUnresolvable, fmt.Sprintf("parsing pod: %+v", s.podInfo.ParseError)) + if s.podInfo, err = framework.NewPodInfo(pod); err != nil { + return nil, framework.NewStatus(framework.UnschedulableAndUnresolvable, fmt.Sprintf("parsing pod: %+v", err)) } for i := range s.podInfo.RequiredAffinityTerms { diff --git a/pkg/scheduler/framework/plugins/interpodaffinity/scoring.go b/pkg/scheduler/framework/plugins/interpodaffinity/scoring.go index 190a9527045..322ea854378 100644 --- a/pkg/scheduler/framework/plugins/interpodaffinity/scoring.go +++ b/pkg/scheduler/framework/plugins/interpodaffinity/scoring.go @@ -162,10 +162,9 @@ func (pl *InterPodAffinity) PreScore( topologyScore: make(map[string]map[string]int64), } - state.podInfo = framework.NewPodInfo(pod) - if state.podInfo.ParseError != nil { + if state.podInfo, err = framework.NewPodInfo(pod); err != nil { // Ideally we never reach here, because errors will be caught by PreFilter - return framework.AsStatus(fmt.Errorf("failed to parse pod: %w", state.podInfo.ParseError)) + return framework.AsStatus(fmt.Errorf("failed to parse pod: %w", err)) } for i := range state.podInfo.PreferredAffinityTerms { diff --git a/pkg/scheduler/internal/queue/scheduling_queue.go b/pkg/scheduler/internal/queue/scheduling_queue.go index e6a87906bd7..ffb30d5611e 100644 --- a/pkg/scheduler/internal/queue/scheduling_queue.go +++ b/pkg/scheduler/internal/queue/scheduling_queue.go @@ -762,8 +762,11 @@ func (p *PriorityQueue) podsCompareBackoffCompleted(podInfo1, podInfo2 interface // newQueuedPodInfo builds a QueuedPodInfo object. func (p *PriorityQueue) newQueuedPodInfo(pod *v1.Pod, plugins ...string) *framework.QueuedPodInfo { now := p.clock.Now() + // ignore this err since apiserver doesn't properly validate affinity terms + // and we can't fix the validation for backwards compatibility. + podInfo, _ := framework.NewPodInfo(pod) return &framework.QueuedPodInfo{ - PodInfo: framework.NewPodInfo(pod), + PodInfo: podInfo, Timestamp: now, InitialAttemptTimestamp: now, UnschedulablePlugins: sets.NewString(plugins...), diff --git a/pkg/scheduler/schedule_one.go b/pkg/scheduler/schedule_one.go index 133c81b38f1..c4d5ae75def 100644 --- a/pkg/scheduler/schedule_one.go +++ b/pkg/scheduler/schedule_one.go @@ -900,7 +900,9 @@ func (sched *Scheduler) handleSchedulingFailure(ctx context.Context, fwk framewo klog.InfoS("Pod has been assigned to node. Abort adding it back to queue.", "pod", klog.KObj(pod), "node", cachedPod.Spec.NodeName) } else { // As is from SharedInformer, we need to do a DeepCopy() here. - podInfo.PodInfo = framework.NewPodInfo(cachedPod.DeepCopy()) + // ignore this err since apiserver doesn't properly validate affinity terms + // and we can't fix the validation for backwards compatibility. + podInfo.PodInfo, _ = framework.NewPodInfo(cachedPod.DeepCopy()) if err := sched.SchedulingQueue.AddUnschedulableIfNotPresent(podInfo, sched.SchedulingQueue.SchedulingCycle()); err != nil { klog.ErrorS(err, "Error occurred") }