forked from TrueCloudLab/distribution
Merge pull request #3567 from justadogistaken/fix/image-cache-incomplete
fix image cache incompletely
This commit is contained in:
commit
5f1974ab8b
1 changed files with 9 additions and 3 deletions
|
@ -130,14 +130,19 @@ func (pbs *proxyBlobStore) ServeBlob(ctx context.Context, w http.ResponseWriter,
|
||||||
inflight[dgst] = struct{}{}
|
inflight[dgst] = struct{}{}
|
||||||
mu.Unlock()
|
mu.Unlock()
|
||||||
|
|
||||||
|
// storeLocalCtx will be independent with ctx, because ctx it used to fetch remote image.
|
||||||
|
// There would be a situation, that is pulling remote bytes ends before pbs.storeLocal( 'Copy', 'Commit' ...)
|
||||||
|
// Then the registry fails to cache the layer, even though the layer had been served to client.
|
||||||
|
storeLocalCtx, cancel := context.WithCancel(context.Background())
|
||||||
go func(dgst digest.Digest) {
|
go func(dgst digest.Digest) {
|
||||||
if err := pbs.storeLocal(ctx, dgst); err != nil {
|
defer cancel()
|
||||||
dcontext.GetLogger(ctx).Errorf("Error committing to storage: %s", err.Error())
|
if err := pbs.storeLocal(storeLocalCtx, dgst); err != nil {
|
||||||
|
dcontext.GetLogger(storeLocalCtx).Errorf("Error committing to storage: %s", err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
blobRef, err := reference.WithDigest(pbs.repositoryName, dgst)
|
blobRef, err := reference.WithDigest(pbs.repositoryName, dgst)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
dcontext.GetLogger(ctx).Errorf("Error creating reference: %s", err)
|
dcontext.GetLogger(storeLocalCtx).Errorf("Error creating reference: %s", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -146,6 +151,7 @@ func (pbs *proxyBlobStore) ServeBlob(ctx context.Context, w http.ResponseWriter,
|
||||||
|
|
||||||
_, err = pbs.copyContent(ctx, dgst, w)
|
_, err = pbs.copyContent(ctx, dgst, w)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
cancel()
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
|
Loading…
Reference in a new issue