diff --git a/content/local/writer.go b/content/local/writer.go index 223b14544..3a94744e7 100644 --- a/content/local/writer.go +++ b/content/local/writer.go @@ -74,6 +74,9 @@ func (w *writer) Write(p []byte) (n int, err error) { } func (w *writer) Commit(ctx context.Context, size int64, expected digest.Digest, opts ...content.Opt) error { + // Ensure even on error the writer is fully closed + defer unlock(w.ref) + var base content.Info for _, opt := range opts { if err := opt(&base); err != nil { @@ -81,8 +84,6 @@ func (w *writer) Commit(ctx context.Context, size int64, expected digest.Digest, } } - // Ensure even on error the writer is fully closed - defer unlock(w.ref) fp := w.fp w.fp = nil diff --git a/diff/walking/differ.go b/diff/walking/differ.go index a45a5630b..1c82860d7 100644 --- a/diff/walking/differ.go +++ b/diff/walking/differ.go @@ -106,14 +106,15 @@ func (s *walkingDiff) Compare(ctx context.Context, lower, upper []mount.Mount, o } }() if !newReference { - if err := cw.Truncate(0); err != nil { + if err = cw.Truncate(0); err != nil { return err } } if isCompressed { dgstr := digest.SHA256.Digester() - compressed, err := compression.CompressStream(cw, compression.Gzip) + var compressed io.WriteCloser + compressed, err = compression.CompressStream(cw, compression.Gzip) if err != nil { return errors.Wrap(err, "failed to get compressed stream") }