mirror of
https://github.com/containers/podman.git
synced 2025-06-20 09:03:43 +08:00
Fix flake on failed podman-remote build
We have a race condition where podman build can fail but still return an exit code of 0. This PR ensures that as soon as the build fails, the failed flag is set eliminating the race. Fixes: https://github.com/containers/podman/issues/10029 [NO TESTS NEEDED] Tests of failed builds are already in place, and the elimination of the race should be enough. Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
This commit is contained in:
@ -462,12 +462,17 @@ func BuildImage(w http.ResponseWriter, r *http.Request) {
|
||||
buildOptions.Timestamp = &ts
|
||||
}
|
||||
|
||||
var (
|
||||
imageID string
|
||||
failed bool
|
||||
)
|
||||
|
||||
runCtx, cancel := context.WithCancel(context.Background())
|
||||
var imageID string
|
||||
go func() {
|
||||
defer cancel()
|
||||
imageID, _, err = runtime.Build(r.Context(), buildOptions, query.Dockerfile)
|
||||
if err != nil {
|
||||
failed = true
|
||||
stderr.Write([]byte(err.Error() + "\n"))
|
||||
}
|
||||
}()
|
||||
@ -483,8 +488,6 @@ func BuildImage(w http.ResponseWriter, r *http.Request) {
|
||||
w.Header().Add("Content-Type", "application/json")
|
||||
flush()
|
||||
|
||||
var failed bool
|
||||
|
||||
body := w.(io.Writer)
|
||||
if logrus.IsLevelEnabled(logrus.DebugLevel) {
|
||||
if v, found := os.LookupEnv("PODMAN_RETAIN_BUILD_ARTIFACT"); found {
|
||||
@ -525,7 +528,6 @@ loop:
|
||||
}
|
||||
flush()
|
||||
case e := <-stderr.Chan():
|
||||
failed = true
|
||||
m.Error = string(e)
|
||||
if err := enc.Encode(m); err != nil {
|
||||
logrus.Warnf("Failed to json encode error %v", err)
|
||||
|
Reference in New Issue
Block a user