Retry image creation after update not found

Signed-off-by: Derek McGowan <derek@mcgstyle.net>
This commit is contained in:
Derek McGowan 2018-05-04 14:31:27 -07:00
parent 28caf9027e
commit 2bc9f49ffd
No known key found for this signature in database
GPG Key ID: F58C5D0A4405ACDB

View File

@ -345,19 +345,26 @@ func (c *Client) Pull(ctx context.Context, ref string, opts ...RemoteOpt) (Image
} }
is := c.ImageService() is := c.ImageService()
if created, err := is.Create(ctx, imgrec); err != nil { for {
if !errdefs.IsAlreadyExists(err) { if created, err := is.Create(ctx, imgrec); err != nil {
return nil, err if !errdefs.IsAlreadyExists(err) {
} return nil, err
}
updated, err := is.Update(ctx, imgrec) updated, err := is.Update(ctx, imgrec)
if err != nil { if err != nil {
return nil, err // if image was removed, try create again
} if errdefs.IsNotFound(err) {
continue
}
return nil, err
}
imgrec = updated imgrec = updated
} else { } else {
imgrec = created imgrec = created
}
break
} }
img := &image{ img := &image{