From fef886534883df100f1417ac0371d11e9601dd7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A2=D0=B5=D1=80=D0=B5=D1=85=D0=BE=D0=B2=20=D0=90=D0=BD?= =?UTF-8?q?=D0=B4=D1=80=D0=B5=D0=B9?= Date: Wed, 5 Aug 2026 14:34:16 +0300 Subject: [PATCH] for 1.29 --- internal/cnpgi/operator/lifecycle.go | 30 +++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/internal/cnpgi/operator/lifecycle.go b/internal/cnpgi/operator/lifecycle.go index 8bb26d8..6f7eb25 100644 --- a/internal/cnpgi/operator/lifecycle.go +++ b/internal/cnpgi/operator/lifecycle.go @@ -430,7 +430,7 @@ func reconcilePodSpec( Drop: []corev1.Capability{"ALL"}, }, } - sidecarTemplate.RestartPolicy = ptr.To(corev1.ContainerRestartPolicyAlways) + sidecarTemplate.Resources = config.resources sidecarTemplate.Args = append(sidecarTemplate.Args, config.additionalArgs...) @@ -492,6 +492,8 @@ func reconcilePodSpec( return err } + wrapMainContainerCommandWithSocketWait(spec, mainContainerName, sidecarTemplate.Name) + return nil } @@ -557,15 +559,15 @@ func injectPluginSidecarPodSpec( return errors.New("main container not found") } - for i := range spec.InitContainers { - if spec.InitContainers[i].Name == sidecar.Name { + for i := range spec.Containers { + if spec.Containers[i].Name == sidecar.Name { sidecarContainerFound = true - spec.InitContainers[i] = *sidecar + spec.Containers[i] = *sidecar } } if !sidecarContainerFound { - spec.InitContainers = append(spec.InitContainers, *sidecar) + spec.Containers = append(spec.Containers, *sidecar) } return nil @@ -642,3 +644,21 @@ func getCNPGJobRole(job *batchv1.Job) string { return "" } + +func wrapMainContainerCommandWithSocketWait(spec *corev1.PodSpec, mainContainerName, sidecarName string) { + socketPath := fmt.Sprintf("/plugins/%s.sock", sidecarName) + waitScript := fmt.Sprintf( + `i=0; while [ ! -S %s ] && [ "$i" -lt 60 ]; do i=$((i+1)); sleep 1; done; exec "$@"`, + socketPath, + ) + + for i := range spec.Containers { + container := &spec.Containers[i] + if container.Name != mainContainerName { + continue + } + fullCommand := append(append([]string{}, container.Command...), container.Args...) + container.Command = []string{"/bin/sh", "-c", waitScript, "--"} + container.Args = fullCommand + } +} \ No newline at end of file