Skip to content

Commit f45f6e0

Browse files
committed
Workaround buildg time-out
See containerd#4046 Root cause is undiagnosed / unclear, but it seems like in some circumstances, buildg command is too late to read from stdin. This workaround introduces an arbitrary delay before writing to stdin, as a temporary solution to reduce test flakyness. Signed-off-by: apostasie <[email protected]>
1 parent e38cd0a commit f45f6e0

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

cmd/nerdctl/builder/builder.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,13 @@ import (
2121
"os"
2222
"os/exec"
2323
"strings"
24+
"time"
2425

2526
"github.com/docker/go-units"
2627
"github.com/spf13/cobra"
2728

29+
"github.com/containerd/log"
30+
2831
"github.com/containerd/nerdctl/v2/cmd/nerdctl/helpers"
2932
"github.com/containerd/nerdctl/v2/pkg/api/types"
3033
"github.com/containerd/nerdctl/v2/pkg/cmd/builder"
@@ -228,7 +231,18 @@ func debugAction(cmd *cobra.Command, args []string) error {
228231
buildgCmd.Stdout = cmd.OutOrStdout()
229232
buildgCmd.Stderr = cmd.ErrOrStderr()
230233
if err := buildgCmd.Start(); err != nil {
231-
return err
234+
// Tentative workaround for https://github.com/containerd/nerdctl/issues/4046
235+
log.L.Errorf("failed to start buildg: %v", err)
236+
time.Sleep(time.Second)
237+
buildgCmd = exec.Command(buildgBinary, append(buildgArgs, args[0])...)
238+
buildgCmd.Env = os.Environ()
239+
buildgCmd.Stdin = cmd.InOrStdin()
240+
buildgCmd.Stdout = cmd.OutOrStdout()
241+
buildgCmd.Stderr = cmd.ErrOrStderr()
242+
if err := buildgCmd.Start(); err != nil {
243+
log.L.Errorf("failed to start buildg (retry): %v", err)
244+
return err
245+
}
232246
}
233247

234248
return buildgCmd.Wait()

0 commit comments

Comments
 (0)