From 911d21c73607fe245537bbcc80a4168ba3c69ab8 Mon Sep 17 00:00:00 2001 From: mdrakos Date: Mon, 25 Jan 2021 14:40:44 -0800 Subject: [PATCH 1/2] Finish build in message handler on success --- pkg/platform/api/buildlogstream/streamer.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/platform/api/buildlogstream/streamer.go b/pkg/platform/api/buildlogstream/streamer.go index 395033edce..7dce4a3660 100644 --- a/pkg/platform/api/buildlogstream/streamer.go +++ b/pkg/platform/api/buildlogstream/streamer.go @@ -103,6 +103,7 @@ func (r *Request) responseReader(conn *websocket.Conn, readErr chan error) { case "build_failed": readErr <- locale.WrapError(artifactErr, "err_logstream_build_failed", "Build failed with error message: {{.V0}}.", msg.ErrorMessage) case "build_succeeded": + r.msgHandler.BuildFinished() readErr <- nil case "artifact_started": if !artifactMapped { @@ -117,7 +118,7 @@ func (r *Request) responseReader(conn *websocket.Conn, readErr chan error) { if !artifactMapped { continue // ignore } - + // NOTE: fix to ignore current noop "final pkg artifact" if msg.ArtifactID == *r.recipe.RecipeID { break @@ -130,4 +131,3 @@ func (r *Request) responseReader(conn *websocket.Conn, readErr chan error) { } } } - From dc6e33c42c717f4ec7035ef3e3d135715a193862 Mon Sep 17 00:00:00 2001 From: mdrakos Date: Tue, 26 Jan 2021 09:26:18 -0800 Subject: [PATCH 2/2] Ensure progress bars are completed when an the error channel is written --- pkg/platform/api/buildlogstream/streamer.go | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/pkg/platform/api/buildlogstream/streamer.go b/pkg/platform/api/buildlogstream/streamer.go index 7dce4a3660..78d9d13e85 100644 --- a/pkg/platform/api/buildlogstream/streamer.go +++ b/pkg/platform/api/buildlogstream/streamer.go @@ -74,7 +74,7 @@ func (r *Request) Wait() error { } } -func (r *Request) responseReader(conn *websocket.Conn, readErr chan error) { +func (r *Request) responseReader(conn *websocket.Conn, errCh chan error) { artifactMap := model.ArtifactMap(r.recipe) total := len(artifactMap) end := 0 @@ -84,13 +84,13 @@ func (r *Request) responseReader(conn *websocket.Conn, readErr chan error) { var artifactErr error defer func() { - readErr <- nil + r.writeError(errCh, nil) }() for { var msg message err := conn.ReadJSON(&msg) if err != nil { - readErr <- locale.WrapError(err, "err_websocket_read", "Could not read websocket response: {{.V0}}.", err.Error()) + r.writeError(errCh, locale.WrapError(err, "err_websocket_read", "Could not read websocket response: {{.V0}}.", err.Error())) return } @@ -101,10 +101,9 @@ func (r *Request) responseReader(conn *websocket.Conn, readErr chan error) { switch msg.Type { case "build_failed": - readErr <- locale.WrapError(artifactErr, "err_logstream_build_failed", "Build failed with error message: {{.V0}}.", msg.ErrorMessage) + r.writeError(errCh, locale.WrapError(artifactErr, "err_logstream_build_failed", "Build failed with error message: {{.V0}}.", msg.ErrorMessage)) case "build_succeeded": - r.msgHandler.BuildFinished() - readErr <- nil + r.writeError(errCh, nil) case "artifact_started": if !artifactMapped { continue // ignore @@ -131,3 +130,8 @@ func (r *Request) responseReader(conn *websocket.Conn, readErr chan error) { } } } + +func (r *Request) writeError(errCh chan error, err error) { + r.msgHandler.BuildFinished() + errCh <- err +}