download: handle inner errors

This commit is contained in:
Michael Yang 2023-10-11 13:49:01 -07:00
parent 630bb75d2a
commit c413a55093

View file

@ -31,11 +31,13 @@ type blobDownload struct {
Total int64
Completed atomic.Int64
done bool
Parts []*blobDownloadPart
context.CancelFunc
done bool
err error
references atomic.Int32
}
@ -125,7 +127,11 @@ func (b *blobDownload) Prepare(ctx context.Context, requestURL *url.URL, opts *R
return nil
}
func (b *blobDownload) Run(ctx context.Context, requestURL *url.URL, opts *RegistryOptions) (err error) {
func (b *blobDownload) Run(ctx context.Context, requestURL *url.URL, opts *RegistryOptions) {
b.err = b.run(ctx, requestURL, opts)
}
func (b *blobDownload) run(ctx context.Context, requestURL *url.URL, opts *RegistryOptions) error {
defer blobDownloadManager.Delete(b.Digest)
ctx, b.CancelFunc = context.WithCancel(ctx)
@ -285,8 +291,8 @@ func (b *blobDownload) Wait(ctx context.Context, fn func(api.ProgressResponse))
Completed: b.Completed.Load(),
})
if b.done {
return nil
if b.done || b.err != nil {
return b.err
}
}
}