diff --git a/layer/layer_store.go b/layer/layer_store.go index bc3e8719fc..1601465c04 100644 --- a/layer/layer_store.go +++ b/layer/layer_store.go @@ -253,13 +253,14 @@ func (ls *layerStore) applyTar(tx *fileMetadataTransaction, ts io.Reader, parent } applySize, err := ls.driver.ApplyDiff(layer.cacheID, parent, rdr) + // discard trailing data but ensure metadata is picked up to reconstruct stream + // unconditionally call io.Copy here before checking err to ensure the resources + // allocated by NewInputTarStream above are always released + io.Copy(ioutil.Discard, rdr) // ignore error as reader may be closed if err != nil { return err } - // Discard trailing data but ensure metadata is picked up to reconstruct stream - io.Copy(ioutil.Discard, rdr) // ignore error as reader may be closed - layer.size = applySize layer.diffID = DiffID(digester.Digest())