From e9aee2b249a949270186bdd4c74786bf73c6815b Mon Sep 17 00:00:00 2001 From: sakeven Date: Tue, 4 Jul 2017 11:04:45 +0800 Subject: [PATCH] forget pod first after bind failed Signed-off-by: sakeven --- plugin/pkg/scheduler/scheduler.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/plugin/pkg/scheduler/scheduler.go b/plugin/pkg/scheduler/scheduler.go index 9105f79a98d..e684133feb5 100644 --- a/plugin/pkg/scheduler/scheduler.go +++ b/plugin/pkg/scheduler/scheduler.go @@ -220,9 +220,6 @@ func (sched *Scheduler) bind(assumed *v1.Pod, b *v1.Binding) error { // If binding succeeded then PodScheduled condition will be updated in apiserver so that // it's atomic with setting host. err := sched.config.Binder.Bind(b) - if err := sched.config.SchedulerCache.FinishBinding(assumed); err != nil { - return fmt.Errorf("scheduler cache FinishBinding failed: %v", err) - } if err != nil { glog.V(1).Infof("Failed to bind pod: %v/%v", assumed.Namespace, assumed.Name) if err := sched.config.SchedulerCache.ForgetPod(assumed); err != nil { @@ -237,6 +234,11 @@ func (sched *Scheduler) bind(assumed *v1.Pod, b *v1.Binding) error { }) return err } + + if err := sched.config.SchedulerCache.FinishBinding(assumed); err != nil { + return fmt.Errorf("scheduler cache FinishBinding failed: %v", err) + } + metrics.BindingLatency.Observe(metrics.SinceInMicroseconds(bindingStart)) sched.config.Recorder.Eventf(assumed, v1.EventTypeNormal, "Scheduled", "Successfully assigned %v to %v", assumed.Name, b.Target.Name) return nil