From 697632c916efea079ee758d00a1f765ddc272e6e Mon Sep 17 00:00:00 2001 From: Aditya <60684641+0x0elliot@users.noreply.github.com> Date: Wed, 12 Nov 2025 02:13:16 +0530 Subject: [PATCH] fix: patch network on the fly for workers --- functions/onprem/orborus/orborus.go | 30 ++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/functions/onprem/orborus/orborus.go b/functions/onprem/orborus/orborus.go index a0f78845..b5bcf486 100755 --- a/functions/onprem/orborus/orborus.go +++ b/functions/onprem/orborus/orborus.go @@ -765,7 +765,36 @@ func deployServiceWorkers(image string) { if err == nil { log.Printf("[DEBUG] Successfully deployed workers with %d replica(s) on %d node(s)", replicas, cnt) + // wait for service to be ready + time.Sleep(time.Duration(rand.Intn(4)+1) * time.Second) + //log.Printf("[DEBUG] Servicecreate request: %#v %#v", service, err) + // patch service network + // this is an edgecase that we noticed on docker version 29 + // and API version 1.44 + services, serr := dockercli.ServiceList(ctx, types.ServiceListOptions{}) + if serr == nil { + for _, svc := range services { + if svc.Spec.Annotations.Name == innerContainerName { + log.Printf("[DEBUG] Found service %s (%s) — patching network attach", innerContainerName, svc.ID) + + spec := svc.Spec + spec.TaskTemplate.Networks = append(spec.TaskTemplate.Networks, swarm.NetworkAttachmentConfig{ + Target: networkID, + }) + + _, uerr := dockercli.ServiceUpdate(ctx, svc.ID, svc.Version, spec, types.ServiceUpdateOptions{}) + if uerr != nil { + log.Printf("[WARNING] Failed to patch service %s with network %s: %v", innerContainerName, networkID, uerr) + } else { + log.Printf("[INFO] Successfully attached network %s to service %s", networkID, innerContainerName) + } + break + } + } + } else { + log.Printf("[WARNING] Failed to list services for patching network attach: %v", serr) + } } else { if !strings.Contains(fmt.Sprintf("%s", err), "Already Exists") && !strings.Contains(fmt.Sprintf("%s", err), "is already in use by service") { log.Printf("[ERROR] Failed making service: %s", err) @@ -3926,7 +3955,6 @@ func sendPipelineHealthStatus() (shuffle.LakeConfig, error) { err := deployTenzirNode() if err != nil { if (!strings.Contains(err.Error(), "SHUFFLE_SKIP_PIPELINES") && !strings.Contains(err.Error(), "Kubernetes not implemented for Tenzir node")) && !strings.Contains(err.Error(), "Tenzir Node is already running") && !strings.Contains(err.Error(), "docker daemon") { - log.Printf("[ERROR] Tenzir node connection problem: %s", err) } else {