Skip to content

Commit da677b9

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 da677b9

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

Dockerfile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,9 @@ COPY docs /out/share/doc/nerdctl/docs
250250
RUN (cd /out && find ! -type d | sort | xargs sha256sum > /tmp/SHA256SUMS ) && \
251251
mv /tmp/SHA256SUMS /out/share/doc/nerdctl-full/SHA256SUMS && \
252252
chown -R 0:0 /out
253+
RUN git clone [email protected]:apostasie/buildg.git /tmp/buildg; cd /tmp/buildg; \
254+
go build -o /out/bin/buildg .
255+
253256

254257
FROM scratch AS out-full
255258
COPY --from=build-full /out /

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)