From cbae9f2d631e854558daeb08d0d2ebbde94c32d7 Mon Sep 17 00:00:00 2001 From: yashsinghcodes Date: Thu, 8 Jan 2026 15:04:53 +0530 Subject: [PATCH 1/4] check worker deployment in k8s before deploying --- functions/onprem/orborus/orborus.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/functions/onprem/orborus/orborus.go b/functions/onprem/orborus/orborus.go index 9a70a774..3efdbdc6 100755 --- a/functions/onprem/orborus/orborus.go +++ b/functions/onprem/orborus/orborus.go @@ -1448,6 +1448,19 @@ func deployK8sWorker(image string, identifier string, env []string) error { } } + existing, err := clientset.AppsV1().Deployments(kubernetesNamespace).List(ctx, metav1.ListOptions{ + LabelSelector: "app.kubernetes.io/name=shuffle-worker", + }) + if err != nil { + log.Printf("[ERROR] Failed listing existing deployments: %v", err) + return err + } + + if len(existing.Items) > 0 { + log.Printf("[INFO] Found existing deployments, skipping creation") + return nil + } + replicaNumberInt32 := int32(replicaNumber) // worker makes authenticated requests to the k8s api to create app deployments. // Therefore, it needs to have access to the service account token. From bdf181616ae27ef8fa9e60bdb882b348cc8b87a2 Mon Sep 17 00:00:00 2001 From: yashsinghcodes Date: Wed, 14 Jan 2026 17:51:04 +0530 Subject: [PATCH 2/4] check app deployment in k8s before deploying --- functions/onprem/worker/worker.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/functions/onprem/worker/worker.go b/functions/onprem/worker/worker.go index abf793fc..2e36c728 100644 --- a/functions/onprem/worker/worker.go +++ b/functions/onprem/worker/worker.go @@ -413,6 +413,8 @@ func deployk8sApp(image string, identifier string, env []string) error { kubernetesNamespace = "default" } + ctx := context.Background() + log.Printf("[DEBUG] Deploying k8s app with identifier %s to namespace %s", identifier, kubernetesNamespace) deployport, err := strconv.Atoi(os.Getenv("SHUFFLE_APP_EXPOSED_PORT")) if err != nil { @@ -624,6 +626,21 @@ func deployk8sApp(image string, identifier string, env []string) error { } } + existing, err := clientset.AppsV1().Deployments(kubernetesNamespace).List( + ctx, + metav1.ListOptions{ + LabelSelector: fmt.Sprintf("app: %s", name), + }, + ) + if err != nil { + log.Printf("[ERROR] Failed listing existing deployments: %v", err) + } + + if len(existing.Items) > 0 { + log.Printf("[INFO] Found existing deployments, skipping creation") + return errors.New("Found existing deployment") + } + replicaNumberInt32 := int32(replicaNumber) // apps do not need access the k8s api. automountServiceAccountToken := false From 99735636c412696ef8a98d699a0093bc5699c346 Mon Sep 17 00:00:00 2001 From: yashsinghcodes Date: Wed, 14 Jan 2026 17:53:00 +0530 Subject: [PATCH 3/4] fix: don't return if listing fails --- functions/onprem/orborus/orborus.go | 1 - 1 file changed, 1 deletion(-) diff --git a/functions/onprem/orborus/orborus.go b/functions/onprem/orborus/orborus.go index 3efdbdc6..2d7ba43f 100755 --- a/functions/onprem/orborus/orborus.go +++ b/functions/onprem/orborus/orborus.go @@ -1453,7 +1453,6 @@ func deployK8sWorker(image string, identifier string, env []string) error { }) if err != nil { log.Printf("[ERROR] Failed listing existing deployments: %v", err) - return err } if len(existing.Items) > 0 { From 9295991f56f1ab72b3f8481068f21cd35dda0eed Mon Sep 17 00:00:00 2001 From: yashsinghcodes Date: Wed, 21 Jan 2026 19:25:22 +0530 Subject: [PATCH 4/4] worker changed return value in deployk8s app --- functions/onprem/worker/worker.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/onprem/worker/worker.go b/functions/onprem/worker/worker.go index 2e36c728..2f57954b 100644 --- a/functions/onprem/worker/worker.go +++ b/functions/onprem/worker/worker.go @@ -638,7 +638,7 @@ func deployk8sApp(image string, identifier string, env []string) error { if len(existing.Items) > 0 { log.Printf("[INFO] Found existing deployments, skipping creation") - return errors.New("Found existing deployment") + return nil } replicaNumberInt32 := int32(replicaNumber)