فهرست منبع

Merge pull request #38413 from slp/master

layer/layer_store: ensure NewInputTarStream resources are released
Yong Tang 6 سال پیش
والد
کامیت
d147fe0582
1فایلهای تغییر یافته به همراه4 افزوده شده و 3 حذف شده
  1. 4 3
      layer/layer_store.go

+ 4 - 3
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)
 	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 {
 	if err != nil {
 		return err
 		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.size = applySize
 	layer.diffID = DiffID(digester.Digest())
 	layer.diffID = DiffID(digester.Digest())