Skip to content

Commit 600b7a5

Browse files
authored
fix: make termination context-bounded (#6885)
Signed-off-by: Alexandr Zaytsev <alexandr.zaytsev@flant.com>
1 parent 2d1f9ec commit 600b7a5

File tree

10 files changed

+25
-21
lines changed

10 files changed

+25
-21
lines changed

cmd/werf/compose/main.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ func extractImageNamesFromComposeConfig(ctx context.Context, customConfigPathLis
111111

112112
err := cmd.Run()
113113
if err != nil {
114-
graceful.Terminate(err, werfExec.ExitCode(err))
114+
graceful.Terminate(ctx, err, werfExec.ExitCode(err))
115115
var ee *exec.ExitError
116116
if errors.As(err, &ee) {
117117
return nil, fmt.Errorf("error running command %q: %w\n\nStdout:\n%s\nStderr:\n%s", cmd, err, stdout.String(), stderr.String())
@@ -532,7 +532,7 @@ func run(ctx context.Context, containerBackend container_backend.ContainerBacken
532532
cmd.Env = append(os.Environ(), envArray...)
533533

534534
if err := cmd.Run(); err != nil {
535-
graceful.Terminate(err, werfExec.ExitCode(err))
535+
graceful.Terminate(ctx, err, werfExec.ExitCode(err))
536536
return fmt.Errorf("error running command %q: %s", cmd, err)
537537
}
538538
}

cmd/werf/kube_run/kube_run.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -490,7 +490,7 @@ func createPod(ctx context.Context, namespace, pod, image, secret string, extraA
490490

491491
if err := cmd.Run(); err != nil {
492492
if errors.Is(ctx.Err(), context.Canceled) {
493-
graceful.Terminate(err, werfExec.ExitCode(err))
493+
graceful.Terminate(ctx, err, werfExec.ExitCode(err))
494494
}
495495
return fmt.Errorf("error running pod: %w", err)
496496
}
@@ -644,7 +644,7 @@ func getPodPhase(ctx context.Context, namespace, pod string, extraArgs []string)
644644

645645
if err := cmd.Run(); err != nil {
646646
if errors.Is(ctx.Err(), context.Canceled) {
647-
graceful.Terminate(err, werfExec.ExitCode(err))
647+
graceful.Terminate(ctx, err, werfExec.ExitCode(err))
648648
}
649649
return "", fmt.Errorf("error getting pod %s/%s spec: %w", namespace, pod, err)
650650
}
@@ -666,7 +666,7 @@ func isPodReady(ctx context.Context, namespace, pod string, extraArgs []string)
666666

667667
if err := cmd.Run(); err != nil {
668668
if errors.Is(ctx.Err(), context.Canceled) {
669-
graceful.Terminate(err, werfExec.ExitCode(err))
669+
graceful.Terminate(ctx, err, werfExec.ExitCode(err))
670670
}
671671
return false, fmt.Errorf("error getting pod %s/%s spec: %w", namespace, pod, err)
672672
}
@@ -697,7 +697,7 @@ func copyFromPod(ctx context.Context, namespace, pod, container string, copyFrom
697697

698698
if err := cmd.Run(); err != nil {
699699
if errors.Is(ctx.Err(), context.Canceled) {
700-
graceful.Terminate(err, werfExec.ExitCode(err))
700+
graceful.Terminate(ctx, err, werfExec.ExitCode(err))
701701
}
702702
logboek.Context(ctx).Warn().LogF("Error copying %q from pod %s/s: %s\n", copyFrom.Src, namespace, pod, err)
703703
}
@@ -721,7 +721,7 @@ func copyToPod(ctx context.Context, namespace, pod, container string, copyFrom c
721721

722722
if err := cmd.Run(); err != nil {
723723
if errors.Is(ctx.Err(), context.Canceled) {
724-
graceful.Terminate(err, werfExec.ExitCode(err))
724+
graceful.Terminate(ctx, err, werfExec.ExitCode(err))
725725
}
726726
return fmt.Errorf("error copying %q to pod %s/%s: %w", copyFrom.Src, namespace, pod, err)
727727
}
@@ -748,7 +748,7 @@ func stopContainer(ctx context.Context, namespace, pod, container string, extraA
748748

749749
if err := cmd.Run(); err != nil {
750750
if errors.Is(ctx.Err(), context.Canceled) {
751-
graceful.Terminate(err, werfExec.ExitCode(err))
751+
graceful.Terminate(ctx, err, werfExec.ExitCode(err))
752752
}
753753
logboek.Context(ctx).Warn().LogF("Error stopping service container %s/%s/%s for copying files: %s\n", namespace, pod, container, err)
754754
}
@@ -783,7 +783,7 @@ func execCommandInPod(ctx context.Context, namespace, pod, container string, com
783783

784784
if err := cmd.Run(); err != nil {
785785
if errors.Is(ctx.Err(), context.Canceled) {
786-
graceful.Terminate(err, werfExec.ExitCode(err))
786+
graceful.Terminate(ctx, err, werfExec.ExitCode(err))
787787
}
788788
return fmt.Errorf("error running command %q in pod %s/%s: %w", cmd, namespace, pod, err)
789789
}

cmd/werf/main.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,20 +35,20 @@ func main() {
3535

3636
shouldTerminate, err := common.ContainerBackendProcessStartupHook()
3737
if err != nil {
38-
graceful.Terminate(err, 1)
38+
graceful.Terminate(ctx, err, 1)
3939
return
4040
} else if shouldTerminate {
4141
return
4242
}
4343

4444
if err := process_exterminator.Init(); err != nil {
45-
graceful.Terminate(fmt.Errorf("process exterminator initialization failed: %w", err), 1)
45+
graceful.Terminate(ctx, fmt.Errorf("process exterminator initialization failed: %w", err), 1)
4646
return
4747
}
4848

4949
rootCmd, err := root.ConstructRootCmd(ctx)
5050
if err != nil {
51-
graceful.Terminate(err, 1)
51+
graceful.Terminate(ctx, err, 1)
5252
return
5353
}
5454

@@ -66,15 +66,15 @@ func main() {
6666
if err := rootCmd.Execute(); err != nil {
6767
if helm_v3.IsPluginError(err) {
6868
common.ShutdownTelemetry(ctx, helm_v3.PluginErrorCode(err))
69-
graceful.Terminate(err, helm_v3.PluginErrorCode(err))
69+
graceful.Terminate(ctx, err, helm_v3.PluginErrorCode(err))
7070
return
7171
} else if errors.Is(err, action.ErrChangesPlanned) {
7272
common.ShutdownTelemetry(ctx, 2)
73-
graceful.Terminate(action.ErrChangesPlanned, 2)
73+
graceful.Terminate(ctx, action.ErrChangesPlanned, 2)
7474
return
7575
} else {
7676
common.ShutdownTelemetry(ctx, 1)
77-
graceful.Terminate(err, 1)
77+
graceful.Terminate(ctx, err, 1)
7878
return
7979
}
8080
}

cmd/werf/run/run.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ func runMain(ctx context.Context) error {
301301
} else {
302302
if err := run(ctx, containerBackend, giterminismManager); err != nil {
303303
if statusErr, ok := err.(cli.StatusError); ok {
304-
graceful.Terminate(err, statusErr.StatusCode)
304+
graceful.Terminate(ctx, err, statusErr.StatusCode)
305305
return err
306306
}
307307

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ require (
6060
github.com/spf13/pflag v1.0.5
6161
github.com/werf/3p-helm v0.0.0-20250523104754-b2fc45bbcb87
6262
github.com/werf/3p-helm-for-werf-helm v0.0.0-20241217155820-089f92cd5c9d
63-
github.com/werf/common-go v0.0.0-20250520111308-b0eda28dde0d
63+
github.com/werf/common-go v0.0.0-20250528135810-c90e95ac760d
6464
github.com/werf/copy-recurse v0.2.7
6565
github.com/werf/kubedog v0.13.1-0.20250411133038-3d8084fab0ec
6666
github.com/werf/kubedog-for-werf-helm v0.0.0-20241217155728-9d45c48b82b6

go.sum

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1396,6 +1396,10 @@ github.com/werf/3p-oras v0.9.1-0.20240115121544-03962ecbd40a h1:PsU9szHZlIH+Cjcu
13961396
github.com/werf/3p-oras v0.9.1-0.20240115121544-03962ecbd40a/go.mod h1:XTePf8biMMCkqbuuWBZ24xOwo3hZej+BBM0uvd8aGqk=
13971397
github.com/werf/common-go v0.0.0-20250520111308-b0eda28dde0d h1:nVN0E4lQdToFiPty19uwj5TF+bCI/kAp5LLG4stWdO4=
13981398
github.com/werf/common-go v0.0.0-20250520111308-b0eda28dde0d/go.mod h1:taKDUxKmGfqNOlVx1O0ad5vdV4duKexTLO7Rch9HfeA=
1399+
github.com/werf/common-go v0.0.0-20250528124618-0cd250047c1b h1:BSlx/TC6R0peqoaU7Sfy3Ov1jlE9zyjZJyIBxvf3V1A=
1400+
github.com/werf/common-go v0.0.0-20250528124618-0cd250047c1b/go.mod h1:taKDUxKmGfqNOlVx1O0ad5vdV4duKexTLO7Rch9HfeA=
1401+
github.com/werf/common-go v0.0.0-20250528135810-c90e95ac760d h1:/Bf6TdAhVuA3OEACYPrq3qV0xajuLNNR+rY2DcbIvzk=
1402+
github.com/werf/common-go v0.0.0-20250528135810-c90e95ac760d/go.mod h1:taKDUxKmGfqNOlVx1O0ad5vdV4duKexTLO7Rch9HfeA=
13991403
github.com/werf/copy-recurse v0.2.7 h1:3FTOarbJ9uhFLi75oeUCioK9zxZwuV7o28kuUBPDZPM=
14001404
github.com/werf/copy-recurse v0.2.7/go.mod h1:6Ypb+qN+hRBJgoCgEkX1vpbqcQ+8q69BQ3hi8s8Y6Qc=
14011405
github.com/werf/kubedog v0.13.1-0.20250411133038-3d8084fab0ec h1:tyfkagRcJVtfBF4aoxmnE6/idE7YIPo4RqdJQXNoJRg=

pkg/docker_registry/azure_cr.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ func (r *azureCr) azRun(ctx context.Context, args ...string) error {
130130

131131
if err != nil {
132132
if errors.Is(ctx.Err(), context.Canceled) {
133-
graceful.Terminate(err, werfExec.ExitCode(err))
133+
graceful.Terminate(ctx, err, werfExec.ExitCode(err))
134134
}
135135

136136
return fmt.Errorf(

pkg/true_git/git_cmd.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ func (c *GitCmd) Run(ctx context.Context) error {
6666

6767
if err := c.Cmd.Run(); err != nil {
6868
if errors.Is(ctx.Err(), context.Canceled) {
69-
graceful.Terminate(err, werfExec.ExitCode(err))
69+
graceful.Terminate(ctx, err, werfExec.ExitCode(err))
7070
}
7171

7272
var errExit *exec.ExitError

pkg/true_git/patch.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ WaitForData:
239239

240240
if err := cmd.Wait(); err != nil {
241241
if errors.Is(ctx.Err(), context.Canceled) {
242-
graceful.Terminate(err, werfExec.ExitCode(err))
242+
graceful.Terminate(ctx, err, werfExec.ExitCode(err))
243243
}
244244
return nil, fmt.Errorf("git diff error: %w\nunrecognized output:\n%s", err, p.UnrecognizedCapture.String())
245245
}

pkg/werf/global_warnings/global_warnings.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ func IsMultiwerfUpToDate(ctx context.Context) (bool, error) {
7474
var stdout bytes.Buffer
7575
cmd.Stdout = &stdout
7676
if err := cmd.Run(); err != nil {
77-
graceful.Terminate(err, werfExec.ExitCode(err))
77+
graceful.Terminate(ctx, err, werfExec.ExitCode(err))
7878
return false, fmt.Errorf("unable to get installed version of multiwerf: %w", err)
7979
}
8080

0 commit comments

Comments
 (0)