diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2021-04-15 07:18:35 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-15 07:18:35 -0400 |
commit | b2a3bb4a6180b390c87565c49798990384f16976 (patch) | |
tree | 25845cf18193a3613f623737495fa8c682786542 /pkg/bindings/images/build.go | |
parent | df6c7c2ae5fb77a557d5616f8b422c45a43fe0ff (diff) | |
parent | 855a5a89dd24e9ef5527a34b14ef0d37cd039a26 (diff) | |
download | podman-b2a3bb4a6180b390c87565c49798990384f16976.tar.gz podman-b2a3bb4a6180b390c87565c49798990384f16976.tar.bz2 podman-b2a3bb4a6180b390c87565c49798990384f16976.zip |
Merge pull request #10034 from rhatdan/build
Fix flake on failed podman-remote build : try 2
Diffstat (limited to 'pkg/bindings/images/build.go')
-rw-r--r-- | pkg/bindings/images/build.go | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/pkg/bindings/images/build.go b/pkg/bindings/images/build.go index 34d6cee05..c0e5706a5 100644 --- a/pkg/bindings/images/build.go +++ b/pkg/bindings/images/build.go @@ -340,6 +340,7 @@ func Build(ctx context.Context, containerFiles []string, options entities.BuildO re := regexp.MustCompile(`[0-9a-f]{12}`) var id string + var mErr error for { var s struct { Stream string `json:"stream,omitempty"` @@ -347,11 +348,21 @@ func Build(ctx context.Context, containerFiles []string, options entities.BuildO } if err := dec.Decode(&s); err != nil { if errors.Is(err, io.EOF) { - return &entities.BuildReport{ID: id}, nil + if mErr == nil && id == "" { + mErr = errors.New("stream dropped, unexpected failure") + } + break } s.Error = err.Error() + "\n" } + select { + case <-response.Request.Context().Done(): + return &entities.BuildReport{ID: id}, mErr + default: + // non-blocking select + } + switch { case s.Stream != "": stdout.Write([]byte(s.Stream)) @@ -359,11 +370,12 @@ func Build(ctx context.Context, containerFiles []string, options entities.BuildO id = strings.TrimSuffix(s.Stream, "\n") } case s.Error != "": - return nil, errors.New(s.Error) + mErr = errors.New(s.Error) default: return &entities.BuildReport{ID: id}, errors.New("failed to parse build results stream, unexpected input") } } + return &entities.BuildReport{ID: id}, mErr } func nTar(excludes []string, sources ...string) (io.ReadCloser, error) { |