Skip to content

Commit

Permalink
Fix default scheduler crash if scheduler extender filter returns a no…
Browse files Browse the repository at this point in the history
…t found node
  • Loading branch information
yqwang-ms committed Aug 14, 2019
1 parent f7f1b2d commit 5927ec4
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 8 deletions.
20 changes: 13 additions & 7 deletions pkg/scheduler/core/extender.go
Expand Up @@ -253,8 +253,8 @@ func convertToNodeNameToVictims(
} }


// Filter based on extender implemented predicate functions. The filtered list is // Filter based on extender implemented predicate functions. The filtered list is
// expected to be a subset of the supplied list. failedNodesMap optionally contains // expected to be a subset of the supplied list; otherwise the function returns an error.
// the list of failed nodes and failure reasons. // failedNodesMap optionally contains the list of failed nodes and failure reasons.
func (h *HTTPExtender) Filter( func (h *HTTPExtender) Filter(
pod *v1.Pod, pod *v1.Pod,
nodes []*v1.Node, nodeNameToInfo map[string]*schedulernodeinfo.NodeInfo, nodes []*v1.Node, nodeNameToInfo map[string]*schedulernodeinfo.NodeInfo,
Expand Down Expand Up @@ -298,14 +298,20 @@ func (h *HTTPExtender) Filter(
} }


if h.nodeCacheCapable && result.NodeNames != nil { if h.nodeCacheCapable && result.NodeNames != nil {
nodeResult = make([]*v1.Node, 0, len(*result.NodeNames)) nodeResult = make([]*v1.Node, len(*result.NodeNames))
for i := range *result.NodeNames { for i, nodeName := range *result.NodeNames {
nodeResult = append(nodeResult, nodeNameToInfo[(*result.NodeNames)[i]].Node()) if node, ok := nodeNameToInfo[nodeName]; ok {
nodeResult[i] = node.Node()
} else {
return nil, nil, fmt.Errorf(
"extender %q claims a filtered node %q which is not found in nodeNameToInfo map",
h.extenderURL, nodeName)
}
} }
} else if result.Nodes != nil { } else if result.Nodes != nil {
nodeResult = make([]*v1.Node, 0, len(result.Nodes.Items)) nodeResult = make([]*v1.Node, len(result.Nodes.Items))
for i := range result.Nodes.Items { for i := range result.Nodes.Items {
nodeResult = append(nodeResult, &result.Nodes.Items[i]) nodeResult[i] = &result.Nodes.Items[i]
} }
} }


Expand Down
2 changes: 1 addition & 1 deletion pkg/scheduler/scheduler.go
Expand Up @@ -304,7 +304,7 @@ func (sched *Scheduler) preempt(preemptor *v1.Pod, scheduleErr error) (string, e


node, victims, nominatedPodsToClear, err := sched.config.Algorithm.Preempt(preemptor, sched.config.NodeLister, scheduleErr) node, victims, nominatedPodsToClear, err := sched.config.Algorithm.Preempt(preemptor, sched.config.NodeLister, scheduleErr)
if err != nil { if err != nil {
klog.Errorf("Error preempting victims to make room for %v/%v.", preemptor.Namespace, preemptor.Name) klog.Errorf("Error preempting victims to make room for %v/%v: %v", preemptor.Namespace, preemptor.Name, err)
return "", err return "", err
} }
var nodeName = "" var nodeName = ""
Expand Down

0 comments on commit 5927ec4

Please sign in to comment.