mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Merge pull request #21676 from aaronlehmann/tmpfile-close
Pull: only close temporary file once
This commit is contained in:
commit
3d4b3cb424
2 changed files with 27 additions and 2 deletions
|
@ -334,7 +334,20 @@ func (ld *v1LayerDescriptor) Download(ctx context.Context, progressOutput progre
|
||||||
logrus.Debugf("Downloaded %s to tempfile %s", ld.ID(), ld.tmpFile.Name())
|
logrus.Debugf("Downloaded %s to tempfile %s", ld.ID(), ld.tmpFile.Name())
|
||||||
|
|
||||||
ld.tmpFile.Seek(0, 0)
|
ld.tmpFile.Seek(0, 0)
|
||||||
return ld.tmpFile, ld.layerSize, nil
|
|
||||||
|
// hand off the temporary file to the download manager, so it will only
|
||||||
|
// be closed once
|
||||||
|
tmpFile := ld.tmpFile
|
||||||
|
ld.tmpFile = nil
|
||||||
|
|
||||||
|
return ioutils.NewReadCloserWrapper(tmpFile, func() error {
|
||||||
|
tmpFile.Close()
|
||||||
|
err := os.RemoveAll(tmpFile.Name())
|
||||||
|
if err != nil {
|
||||||
|
logrus.Errorf("Failed to remove temp file: %s", tmpFile.Name())
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}), ld.layerSize, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ld *v1LayerDescriptor) Close() {
|
func (ld *v1LayerDescriptor) Close() {
|
||||||
|
|
|
@ -278,7 +278,19 @@ func (ld *v2LayerDescriptor) Download(ctx context.Context, progressOutput progre
|
||||||
ld.verifier = nil
|
ld.verifier = nil
|
||||||
return nil, 0, xfer.DoNotRetry{Err: err}
|
return nil, 0, xfer.DoNotRetry{Err: err}
|
||||||
}
|
}
|
||||||
return tmpFile, size, nil
|
|
||||||
|
// hand off the temporary file to the download manager, so it will only
|
||||||
|
// be closed once
|
||||||
|
ld.tmpFile = nil
|
||||||
|
|
||||||
|
return ioutils.NewReadCloserWrapper(tmpFile, func() error {
|
||||||
|
tmpFile.Close()
|
||||||
|
err := os.RemoveAll(tmpFile.Name())
|
||||||
|
if err != nil {
|
||||||
|
logrus.Errorf("Failed to remove temp file: %s", tmpFile.Name())
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}), size, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ld *v2LayerDescriptor) Close() {
|
func (ld *v2LayerDescriptor) Close() {
|
||||||
|
|
Loading…
Reference in a new issue