diff --git a/plugin/pkg/scheduler/generic_scheduler.go b/plugin/pkg/scheduler/generic_scheduler.go index 86ebbd0b3d0..56f56bee4ca 100644 --- a/plugin/pkg/scheduler/generic_scheduler.go +++ b/plugin/pkg/scheduler/generic_scheduler.go @@ -135,31 +135,35 @@ func (g *genericScheduler) selectHost(priorityList schedulerapi.HostPriorityList // Filters the nodes to find the ones that fit based on the given predicate functions // Each node is passed through the predicate functions to determine if it is a fit func findNodesThatFit(pod *api.Pod, nodeNameToInfo map[string]*schedulercache.NodeInfo, predicateFuncs map[string]algorithm.FitPredicate, nodes api.NodeList, extenders []algorithm.SchedulerExtender) (api.NodeList, FailedPredicateMap, error) { - predicateResultLock := sync.Mutex{} filtered := []api.Node{} failedPredicateMap := FailedPredicateMap{} - errs := []error{} - checkNode := func(i int) { - nodeName := nodes.Items[i].Name - fits, failedPredicate, err := podFitsOnNode(pod, nodeNameToInfo[nodeName], predicateFuncs) + if len(predicateFuncs) == 0 { + filtered = nodes.Items + } else { + predicateResultLock := sync.Mutex{} + errs := []error{} + checkNode := func(i int) { + nodeName := nodes.Items[i].Name + fits, failedPredicate, err := podFitsOnNode(pod, nodeNameToInfo[nodeName], predicateFuncs) - predicateResultLock.Lock() - defer predicateResultLock.Unlock() - if err != nil { - errs = append(errs, err) - return + predicateResultLock.Lock() + defer predicateResultLock.Unlock() + if err != nil { + errs = append(errs, err) + return + } + if fits { + filtered = append(filtered, nodes.Items[i]) + } else { + failedPredicateMap[nodeName] = failedPredicate + } } - if fits { - filtered = append(filtered, nodes.Items[i]) - } else { - failedPredicateMap[nodeName] = failedPredicate + workqueue.Parallelize(16, len(nodes.Items), checkNode) + if len(errs) > 0 { + return api.NodeList{}, FailedPredicateMap{}, errors.NewAggregate(errs) } } - workqueue.Parallelize(16, len(nodes.Items), checkNode) - if len(errs) > 0 { - return api.NodeList{}, FailedPredicateMap{}, errors.NewAggregate(errs) - } if len(filtered) > 0 && len(extenders) != 0 { for _, extender := range extenders {