forget pod first after bind failed

Signed-off-by: sakeven <jc5930@sina.cn>
This commit is contained in:
sakeven 2017-07-04 11:04:45 +08:00
parent 4ae3b032f4
commit e9aee2b249

View File

@ -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