Skip to content

Commit b6e33bc

Browse files
authored
Merge pull request moby#5142 from tonistiigi/externalerr-release-fix
llbsolver: fix possible early delete of external error
2 parents 4096e93 + 3d00c54 commit b6e33bc

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

frontend/dockerfile/dockerfile_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7485,6 +7485,8 @@ COPY notexist /foo
74857485
}, nil)
74867486
require.Error(t, err)
74877487

7488+
expectedError := err
7489+
74887490
cl, err := c.ControlClient().ListenBuildHistory(sb.Context(), &controlapi.BuildHistoryRequest{
74897491
EarlyExit: true,
74907492
Ref: ref,
@@ -7495,7 +7497,7 @@ COPY notexist /foo
74957497
for {
74967498
resp, err := cl.Recv()
74977499
if err == io.EOF {
7498-
require.Equal(t, true, got)
7500+
require.Equal(t, true, got, "expected error was %+v", expectedError)
74997501
break
75007502
}
75017503
require.NoError(t, err)

solver/llbsolver/history.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -710,7 +710,7 @@ func (w *Writer) Commit(ctx context.Context) (*ocispecs.Descriptor, func(), erro
710710
}, nil
711711
}
712712

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

730-
defer w.Discard()
730+
defer func() {
731+
if retErr != nil {
732+
w.Discard()
733+
}
734+
}()
731735

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

0 commit comments

Comments
 (0)