From 0347fc3d937b1230dcb8234043e68623c42c73b2 Mon Sep 17 00:00:00 2001 From: Justin Chadwell Date: Fri, 26 Aug 2022 11:28:18 +0100 Subject: [PATCH] solver: correct cache nil return value in Exec Signed-off-by: Justin Chadwell --- solver/jobs.go | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/solver/jobs.go b/solver/jobs.go index c7fb1c8fa9b5..d2a52c39e61b 100644 --- a/solver/jobs.go +++ b/solver/jobs.go @@ -619,8 +619,9 @@ type sharedOp struct { subBuilder *subBuilder err error - execRes *execRes - execErr error + execRes *execRes + execDone bool + execErr error cacheRes []*CacheMap cacheDone bool @@ -817,10 +818,10 @@ func (s *sharedOp) Exec(ctx context.Context, inputs []Result) (outputs []Result, } flightControlKey := "exec" res, err := s.g.Do(ctx, flightControlKey, func(ctx context.Context) (ret interface{}, retErr error) { - if s.execErr != nil { - return nil, s.execErr - } - if s.execRes != nil { + if s.execDone { + if s.execErr != nil { + return nil, s.execErr + } return s.execRes, nil } release, err := op.Acquire(ctx) @@ -857,6 +858,7 @@ func (s *sharedOp) Exec(ctx context.Context, inputs []Result) (outputs []Result, } } if complete { + s.execDone = true if res != nil { var subExporters []ExportableCacheKey s.subBuilder.mu.Lock()