fix manifest revision search, closes #1535

Signed-off-by: 姜继忠 <jizhong.jiangjz@alibaba-inc.com>
This commit is contained in:
姜继忠 2016-03-16 14:12:56 +08:00
parent 71d808de07
commit 5f38f0b1fe

View File

@ -384,8 +384,8 @@ var _ distribution.BlobDescriptorService = &linkedBlobStatter{}
func (lbs *linkedBlobStatter) Stat(ctx context.Context, dgst digest.Digest) (distribution.Descriptor, error) { func (lbs *linkedBlobStatter) Stat(ctx context.Context, dgst digest.Digest) (distribution.Descriptor, error) {
var ( var (
resolveErr error found bool
target digest.Digest target digest.Digest
) )
// try the many link path functions until we get success or an error that // try the many link path functions until we get success or an error that
@ -395,19 +395,20 @@ func (lbs *linkedBlobStatter) Stat(ctx context.Context, dgst digest.Digest) (dis
target, err = lbs.resolveWithLinkFunc(ctx, dgst, linkPathFn) target, err = lbs.resolveWithLinkFunc(ctx, dgst, linkPathFn)
if err == nil { if err == nil {
found = true
break // success! break // success!
} }
switch err := err.(type) { switch err := err.(type) {
case driver.PathNotFoundError: case driver.PathNotFoundError:
resolveErr = distribution.ErrBlobUnknown // move to the next linkPathFn, saving the error // do nothing, just move to the next linkPathFn
default: default:
return distribution.Descriptor{}, err return distribution.Descriptor{}, err
} }
} }
if resolveErr != nil { if !found {
return distribution.Descriptor{}, resolveErr return distribution.Descriptor{}, distribution.ErrBlobUnknown
} }
if target != dgst { if target != dgst {