images: assurance and debug info on image layers

when pushing or saving layers, report sizes for validation. And ensure
that the files written are sync'ed.

Docker-DCO-1.1-Signed-off-by: Vincent Batts <vbatts@redhat.com> (github: vbatts)
This commit is contained in:
Vincent Batts 2014-03-19 14:34:12 -04:00
parent 47470d299d
commit 367a679b92
2 changed files with 12 additions and 2 deletions

View File

@ -617,6 +617,9 @@ func NewTempArchive(src Archive, dir string) (*TempArchive, error) {
if _, err := io.Copy(f, src); err != nil {
return nil, err
}
if err = f.Sync(); err != nil {
return nil, err
}
if _, err := f.Seek(0, 0); err != nil {
return nil, err
}

View File

@ -378,10 +378,15 @@ func (srv *Server) exportImage(img *image.Image, tempdir string) error {
if err != nil {
return err
}
if _, err = io.Copy(fsTar, fs); err != nil {
if written, err := io.Copy(fsTar, fs); err != nil {
return err
} else {
utils.Debugf("rendered layer for %s of [%d] size", i.ID, written)
}
if err = fsTar.Close(); err != nil {
return err
}
fsTar.Close()
// find parent
if i.Parent != "" {
@ -1537,6 +1542,8 @@ func (srv *Server) pushImage(r *registry.Registry, out io.Writer, remote, imgID,
defer os.RemoveAll(layerData.Name())
// Send the layer
utils.Debugf("rendered layer for %s of [%d] size", imgData.ID, layerData.Size)
checksum, checksumPayload, err := r.PushImageLayerRegistry(imgData.ID, utils.ProgressReader(layerData, int(layerData.Size), out, sf, false, utils.TruncateID(imgData.ID), "Pushing"), ep, token, jsonRaw)
if err != nil {
return "", err