Skip to content

Commit

Permalink
Merge pull request #13274 from miminar/release-1.5-imageimport
Browse files Browse the repository at this point in the history
Merged by openshift-bot
  • Loading branch information
OpenShift Bot authored Mar 13, 2017
2 parents e4200f3 + 3e0d3ec commit 1404858
Show file tree
Hide file tree
Showing 20 changed files with 1,969 additions and 609 deletions.
14 changes: 7 additions & 7 deletions pkg/dockerregistry/server/blobdescriptorservice.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ type blobDescriptorService struct {
// corresponding image stream. This method is invoked from inside of upstream's linkedBlobStore. It expects
// a proper repository object to be set on given context by upper openshift middleware wrappers.
func (bs *blobDescriptorService) Stat(ctx context.Context, dgst digest.Digest) (distribution.Descriptor, error) {
context.GetLogger(ctx).Debugf("(*blobDescriptorService).Stat: starting with digest=%s", dgst.String())
repo, found := RepositoryFrom(ctx)
if !found || repo == nil {
err := fmt.Errorf("failed to retrieve repository from context")
Expand All @@ -71,28 +72,27 @@ func (bs *blobDescriptorService) Stat(ctx context.Context, dgst digest.Digest) (
return desc, nil
}

context.GetLogger(ctx).Debugf("could not stat layer link %q in repository %q: %v", dgst.String(), repo.Named().Name(), err)
context.GetLogger(ctx).Debugf("(*blobDescriptorService).Stat: could not stat layer link %s in repository %s: %v", dgst.String(), repo.Named().Name(), err)

// First attempt: looking for the blob locally
desc, err = dockerRegistry.BlobStatter().Stat(ctx, dgst)
if err == nil {
context.GetLogger(ctx).Debugf("(*blobDescriptorService).Stat: blob %s exists in the global blob store", dgst.String())
// only non-empty layers is wise to check for existence in the image stream.
// schema v2 has no empty layers.
if !isEmptyDigest(dgst) {
// ensure it's referenced inside of corresponding image stream
if !imageStreamHasBlob(repo, dgst) {
context.GetLogger(ctx).Debugf("(*blobDescriptorService).Stat: blob %s is neither empty nor referenced in image stream %s", dgst.String(), repo.Named().Name())
return distribution.Descriptor{}, distribution.ErrBlobUnknown
}
}
return desc, nil
}

if err == distribution.ErrBlobUnknown {
if err == distribution.ErrBlobUnknown && RemoteBlobAccessCheckEnabledFrom(ctx) {
// Second attempt: looking for the blob on a remote server
remoteGetter, found := RemoteBlobGetterFrom(ctx)
if found {
desc, err = remoteGetter.Stat(ctx, dgst)
}
desc, err = repo.remoteBlobGetter.Stat(ctx, dgst)
}

return desc, err
Expand Down Expand Up @@ -136,7 +136,7 @@ func imageStreamHasBlob(r *repository, dgst digest.Digest) bool {
}

// verify directly with etcd
is, err := r.getImageStream()
is, err := r.imageStreamGetter.get()
if err != nil {
context.GetLogger(r.ctx).Errorf("failed to get image stream: %v", err)
return logFound(false)
Expand Down
Loading

0 comments on commit 1404858

Please sign in to comment.