Skip to content

Commit 5cc94a5

Browse files
authored
Merge pull request #50094 from thaJeztah/rm_non_compliant_registry_fallback
remove fallback for non-OCI-compliant docker.pkg.github.com registry
2 parents 8330a08 + f98b700 commit 5cc94a5

2 files changed

Lines changed: 6 additions & 57 deletions

File tree

distribution/errors.go

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -114,23 +114,6 @@ func translatePullError(err error, ref reference.Named) error {
114114
return errdefs.Unknown(err)
115115
}
116116

117-
func isNotFound(err error) bool {
118-
switch v := err.(type) {
119-
case errcode.Errors:
120-
for _, e := range v {
121-
if isNotFound(e) {
122-
return true
123-
}
124-
}
125-
case errcode.Error:
126-
switch v.Code {
127-
case errcode.ErrorCodeDenied, v2.ErrorCodeManifestUnknown, v2.ErrorCodeNameUnknown:
128-
return true
129-
}
130-
}
131-
return false
132-
}
133-
134117
// continueOnError returns true if we should fallback to the next endpoint
135118
// as a result of this error.
136119
func continueOnError(err error, mirrorEndpoint bool) bool {

distribution/pull_v2.go

Lines changed: 6 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -341,19 +341,16 @@ func (p *puller) pullTag(ctx context.Context, ref reference.Named, platform *oci
341341
dgst digest.Digest
342342
mt string
343343
size int64
344-
tagged reference.NamedTagged
345-
isTagged bool
346344
)
347345
if digested, isDigested := ref.(reference.Canonical); isDigested {
348346
dgst = digested.Digest()
349347
tagOrDigest = digested.String()
350-
} else if tagged, isTagged = ref.(reference.NamedTagged); isTagged {
348+
} else if tagged, isTagged := ref.(reference.NamedTagged); isTagged {
351349
tagService := p.repo.Tags(ctx)
352350
desc, err := tagService.Get(ctx, tagged.Tag())
353351
if err != nil {
354352
return false, err
355353
}
356-
357354
dgst = desc.Digest
358355
tagOrDigest = tagged.Tag()
359356
mt = desc.MediaType
@@ -367,43 +364,13 @@ func (p *puller) pullTag(ctx context.Context, ref reference.Named, platform *oci
367364
"remote": ref,
368365
}))
369366

370-
desc := ocispec.Descriptor{
367+
manifest, err := p.manifestStore.Get(ctx, ocispec.Descriptor{
371368
MediaType: mt,
372369
Digest: dgst,
373370
Size: size,
374-
}
375-
376-
manifest, err := p.manifestStore.Get(ctx, desc, ref)
371+
}, ref)
377372
if err != nil {
378-
if isTagged && isNotFound(errors.Cause(err)) {
379-
log.G(ctx).WithField("ref", ref).WithError(err).Debug("Falling back to pull manifest by tag")
380-
381-
const msg = `%s Failed to pull manifest by the resolved digest. This registry does not
382-
appear to conform to the distribution registry specification; falling back to
383-
pull by tag. This fallback is DEPRECATED, and will be removed in a future
384-
release. Please contact admins of %s. %s
385-
`
386-
387-
warnEmoji := "\U000026A0\U0000FE0F"
388-
progress.Messagef(p.config.ProgressOutput, "WARNING", msg, warnEmoji, p.endpoint.URL, warnEmoji)
389-
390-
// Fetch by tag worked, but fetch by digest didn't.
391-
// This is a broken registry implementation.
392-
// We'll fallback to the old behavior and get the manifest by tag.
393-
var ms distribution.ManifestService
394-
ms, err = p.repo.Manifests(ctx)
395-
if err != nil {
396-
return false, err
397-
}
398-
399-
manifest, err = ms.Get(ctx, "", distribution.WithTag(tagged.Tag()))
400-
if err != nil {
401-
err = errors.Wrap(err, "error after falling back to get manifest by tag")
402-
}
403-
}
404-
if err != nil {
405-
return false, err
406-
}
373+
return false, err
407374
}
408375

409376
if manifest == nil {
@@ -754,12 +721,11 @@ func (p *puller) pullManifestList(ctx context.Context, ref reference.Named, mfst
754721
return "", "", err
755722
}
756723

757-
desc := ocispec.Descriptor{
724+
manifest, err := p.manifestStore.Get(ctx, ocispec.Descriptor{
758725
Digest: match.Digest,
759726
Size: match.Size,
760727
MediaType: match.MediaType,
761-
}
762-
manifest, err := p.manifestStore.Get(ctx, desc, ref)
728+
}, ref)
763729
if err != nil {
764730
return "", "", err
765731
}

0 commit comments

Comments
 (0)