From 363ba1672fcc03d0d1c2b5c59d3e8f595717a961 Mon Sep 17 00:00:00 2001 From: KrKOo Date: Wed, 27 Mar 2024 13:33:49 +0100 Subject: [PATCH] fix waiting for k8s jobs --- worker/kubernetes.go | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/worker/kubernetes.go b/worker/kubernetes.go index af5cbc3a..4370a604 100644 --- a/worker/kubernetes.go +++ b/worker/kubernetes.go @@ -91,7 +91,7 @@ func (kcmd KubernetesCommand) Run(ctx context.Context) error { } defer watcher.Stop() - waitForJobFinnish(ctx, watcher) + waitForJobFinish(ctx, watcher) pods, err := clientset.CoreV1().Pods(kcmd.Namespace).List(ctx, metav1.ListOptions{LabelSelector: fmt.Sprintf("job-name=%s-%d", taskId, kcmd.JobId)}) if err != nil { @@ -145,18 +145,21 @@ func (kcmd KubernetesCommand) Stop() error { } // Waits until the job finishes -func waitForJobFinnish(ctx context.Context, watcher watch.Interface) { +func waitForJobFinish(ctx context.Context, watcher watch.Interface) { for { select { case event := <-watcher.ResultChan(): + if event.Type == watch.Error || event.Type == watch.Deleted { + return + } else if event.Type == watch.Bookmark { + continue + } + job := event.Object.(*v1.Job) if job.Status.Succeeded > 0 || job.Status.Failed > 0 { return - } else if event.Type == watch.Deleted { - return } - case <-ctx.Done(): return }