Transfer: Push: fix failure on pushing duplicated blobs

Signed-off-by: Kohei Tokunaga <ktokunaga.mail@gmail.com>
This commit is contained in:
Kohei Tokunaga 2024-05-31 18:08:45 +09:00
parent 21c244d436
commit 0e8cc91463
No known key found for this signature in database
GPG Key ID: 6CE0A04690DB3FB3

View File

@ -158,7 +158,13 @@ func (p *progressPusher) WrapHandler(h images.Handler) images.Handler {
func (p *progressPusher) Push(ctx context.Context, d ocispec.Descriptor) (content.Writer, error) { func (p *progressPusher) Push(ctx context.Context, d ocispec.Descriptor) (content.Writer, error) {
ref := remotes.MakeRefKey(ctx, d) ref := remotes.MakeRefKey(ctx, d)
p.status.add(ref, d) p.status.add(ref, d)
cw, err := p.Pusher.Push(ctx, d) var cw content.Writer
var err error
if cs, ok := p.Pusher.(content.Ingester); ok {
cw, err = content.OpenWriter(ctx, cs, content.WithRef(ref), content.WithDescriptor(d))
} else {
cw, err = p.Pusher.Push(ctx, d)
}
if err != nil { if err != nil {
if errdefs.IsAlreadyExists(err) { if errdefs.IsAlreadyExists(err) {
p.progress.MarkExists(d) p.progress.MarkExists(d)