Skip to content

Commit 4b8da56

Browse files
committed
refactor(scheduler): replace goto with error handling function
Signed-off-by: yxxhero <[email protected]>
1 parent 1adf148 commit 4b8da56

File tree

2 files changed

+15
-14
lines changed

2 files changed

+15
-14
lines changed

go.sum

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
1212
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
1313
github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
1414
github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
15-
github.com/ccoveille/go-safecast v1.8.0 h1:vx5q4QzC8MJuESZLOKZXp+63gPCt4qsaeVOFMTFlDCk=
16-
github.com/ccoveille/go-safecast v1.8.0/go.mod h1:QqwNjxQ7DAqY0C721OIO9InMk9zCwcsO7tnRuHytad8=
1715
github.com/ccoveille/go-safecast v1.8.2 h1:+d+s5UGQiCVJX9oYc8XvYcB2zCMBlax6lIP7YdxXLHA=
1816
github.com/ccoveille/go-safecast v1.8.2/go.mod h1:M0Ubpl11x63fE7iOfk5MtngQFXsntcRzOoSsFDqQYDY=
1917
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=

pkg/scheduler/scheduler.go

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -325,7 +325,7 @@ func (s *Scheduler) getNodesUsage(nodes *[]string, task *corev1.Pod) (*map[strin
325325
failedNodes := make(map[string]string)
326326
allNodes, err := s.ListNodes()
327327
if err != nil {
328-
return &overallnodeMap, failedNodes, err
328+
return nil, nil, err
329329
}
330330

331331
for _, node := range allNodes {
@@ -454,6 +454,7 @@ func (s *Scheduler) getPodUsage() (map[string]device.PodUseDeviceStat, error) {
454454
}
455455

456456
func (s *Scheduler) Bind(args extenderv1.ExtenderBindingArgs) (*extenderv1.ExtenderBindingResult, error) {
457+
457458
klog.InfoS("Attempting to bind pod to node", "pod", args.PodName, "namespace", args.PodNamespace, "node", args.Node)
458459
var res *extenderv1.ExtenderBindingResult
459460

@@ -480,37 +481,39 @@ func (s *Scheduler) Bind(args extenderv1.ExtenderBindingArgs) (*extenderv1.Exten
480481
util.BindTimeAnnotations: strconv.FormatInt(time.Now().Unix(), 10),
481482
}
482483

484+
// Function to release node locks in case of binding failure
485+
releaseNodeLocks := func() (*extenderv1.ExtenderBindingResult, error) {
486+
klog.InfoS("Release node locks", "node", args.Node)
487+
for _, val := range device.GetDevices() {
488+
val.ReleaseNodeLock(node, current)
489+
}
490+
s.recordScheduleBindingResultEvent(current, EventReasonBindingFailed, []string{}, err)
491+
return &extenderv1.ExtenderBindingResult{Error: err.Error()}, nil
492+
}
493+
483494
for _, val := range device.GetDevices() {
484495
err = val.LockNode(node, current)
485496
if err != nil {
486497
klog.ErrorS(err, "Failed to lock node", "node", args.Node, "device", val)
487-
goto ReleaseNodeLocks
498+
return releaseNodeLocks()
488499
}
489500
}
490501

491502
err = util.PatchPodAnnotations(current, tmppatch)
492503
if err != nil {
493504
klog.ErrorS(err, "Failed to patch pod annotations", "pod", klog.KObj(current))
494-
goto ReleaseNodeLocks
505+
return releaseNodeLocks()
495506
}
496507

497508
err = s.kubeClient.CoreV1().Pods(args.PodNamespace).Bind(context.Background(), binding, metav1.CreateOptions{})
498509
if err != nil {
499510
klog.ErrorS(err, "Failed to bind pod", "pod", args.PodName, "namespace", args.PodNamespace, "node", args.Node)
500-
goto ReleaseNodeLocks
511+
return releaseNodeLocks()
501512
}
502513

503514
s.recordScheduleBindingResultEvent(current, EventReasonBindingSucceed, []string{args.Node}, nil)
504515
klog.InfoS("Successfully bound pod to node", "pod", args.PodName, "namespace", args.PodNamespace, "node", args.Node)
505516
return &extenderv1.ExtenderBindingResult{Error: ""}, nil
506-
507-
ReleaseNodeLocks:
508-
klog.InfoS("Release node locks", "node", args.Node)
509-
for _, val := range device.GetDevices() {
510-
val.ReleaseNodeLock(node, current)
511-
}
512-
s.recordScheduleBindingResultEvent(current, EventReasonBindingFailed, []string{}, err)
513-
return &extenderv1.ExtenderBindingResult{Error: err.Error()}, nil
514517
}
515518

516519
func (s *Scheduler) Filter(args extenderv1.ExtenderArgs) (*extenderv1.ExtenderFilterResult, error) {

0 commit comments

Comments
 (0)