diff --git a/solver/errdefs/op.go b/solver/errdefs/op.go index a3c448a06..61068b6e4 100644 --- a/solver/errdefs/op.go +++ b/solver/errdefs/op.go @@ -11,9 +11,10 @@ func (e *OpError) Unwrap() error { return e.error } -func WithOp(err error, op *pb.Op) error { - if err == nil { - return nil +func WithOp(err error, iface interface{}) error { + op, ok := iface.(*pb.Op) + if err == nil || !ok { + return err } return &OpError{error: err, Op: op} } diff --git a/solver/jobs.go b/solver/jobs.go index fc4c1f8ce..932d9d0f1 100644 --- a/solver/jobs.go +++ b/solver/jobs.go @@ -10,7 +10,6 @@ import ( "github.com/moby/buildkit/client" "github.com/moby/buildkit/session" "github.com/moby/buildkit/solver/errdefs" - "github.com/moby/buildkit/solver/pb" "github.com/moby/buildkit/util/flightcontrol" "github.com/moby/buildkit/util/progress" "github.com/moby/buildkit/util/tracing" @@ -623,7 +622,7 @@ func (s *sharedOp) LoadCache(ctx context.Context, rec *CacheRecord) (Result, err func (s *sharedOp) CalcSlowCache(ctx context.Context, index Index, p PreprocessFunc, f ResultBasedCacheFunc, res Result) (dgst digest.Digest, err error) { defer func() { err = WrapSlowCache(err, index, NewSharedResult(res).Clone()) - err = errdefs.WithOp(err, s.st.vtx.Sys().(*pb.Op)) + err = errdefs.WithOp(err, s.st.vtx.Sys()) err = errdefs.WrapVertex(err, s.st.origDigest) }() key, err := s.g.Do(ctx, fmt.Sprintf("slow-compute-%d", index), func(ctx context.Context) (interface{}, error) { @@ -686,7 +685,7 @@ func (s *sharedOp) CalcSlowCache(ctx context.Context, index Index, p PreprocessF func (s *sharedOp) CacheMap(ctx context.Context, index int) (resp *cacheMapResp, err error) { defer func() { - err = errdefs.WithOp(err, s.st.vtx.Sys().(*pb.Op)) + err = errdefs.WithOp(err, s.st.vtx.Sys()) err = errdefs.WrapVertex(err, s.st.origDigest) }() op, err := s.getOp() @@ -745,7 +744,7 @@ func (s *sharedOp) CacheMap(ctx context.Context, index int) (resp *cacheMapResp, func (s *sharedOp) Exec(ctx context.Context, inputs []Result) (outputs []Result, exporters []ExportableCacheKey, err error) { defer func() { - err = errdefs.WithOp(err, s.st.vtx.Sys().(*pb.Op)) + err = errdefs.WithOp(err, s.st.vtx.Sys()) err = errdefs.WrapVertex(err, s.st.origDigest) }() op, err := s.getOp()