Skip to content

Commit

Permalink
Merge pull request #5142 from tonistiigi/externalerr-release-fix
Browse files Browse the repository at this point in the history
llbsolver: fix possible early delete of external error
  • Loading branch information
tonistiigi committed Jul 10, 2024
2 parents 4096e93 + 3d00c54 commit b6e33bc
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 3 deletions.
4 changes: 3 additions & 1 deletion frontend/dockerfile/dockerfile_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7485,6 +7485,8 @@ COPY notexist /foo
}, nil)
require.Error(t, err)

expectedError := err

cl, err := c.ControlClient().ListenBuildHistory(sb.Context(), &controlapi.BuildHistoryRequest{
EarlyExit: true,
Ref: ref,
Expand All @@ -7495,7 +7497,7 @@ COPY notexist /foo
for {
resp, err := cl.Recv()
if err == io.EOF {
require.Equal(t, true, got)
require.Equal(t, true, got, "expected error was %+v", expectedError)
break
}
require.NoError(t, err)
Expand Down
8 changes: 6 additions & 2 deletions solver/llbsolver/history.go
Original file line number Diff line number Diff line change
Expand Up @@ -710,7 +710,7 @@ func (w *Writer) Commit(ctx context.Context) (*ocispecs.Descriptor, func(), erro
}, nil
}

func (h *HistoryQueue) ImportError(ctx context.Context, err error) (*rpc.Status, *controlapi.Descriptor, func(), error) {
func (h *HistoryQueue) ImportError(ctx context.Context, err error) (_ *rpc.Status, _ *controlapi.Descriptor, _ func(), retErr error) {
st, ok := grpcerrors.AsGRPCStatus(grpcerrors.ToGRPC(ctx, err))
if !ok {
st = status.New(codes.Unknown, err.Error())
Expand All @@ -727,7 +727,11 @@ func (h *HistoryQueue) ImportError(ctx context.Context, err error) (*rpc.Status,
return nil, nil, nil, err
}

defer w.Discard()
defer func() {
if retErr != nil {
w.Discard()
}
}()

if _, err := w.Write(dt); err != nil {
return nil, nil, nil, err
Expand Down

0 comments on commit b6e33bc

Please sign in to comment.