Skip to content

Commit eb9035c

Browse files
committed
exponential retry on name resolution to registries
Signed-off-by: Jordan Keister <[email protected]>
1 parent 81056f9 commit eb9035c

File tree

1 file changed

+20
-10
lines changed

1 file changed

+20
-10
lines changed

pkg/image/containerdregistry/registry.go

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,26 @@ func (r *Registry) Pull(ctx context.Context, ref image.Reference) error {
5656
return err
5757
}
5858

59-
name, root, err := resolver.Resolve(ctx, ref.String())
60-
if err != nil {
61-
return fmt.Errorf("error resolving name for image ref %s: %v", ref.String(), err)
59+
retryBackoff := wait.Backoff{
60+
Duration: 1 * time.Second,
61+
Factor: 1.0,
62+
Jitter: 0.1,
63+
Steps: 5,
64+
}
65+
66+
var name string
67+
var root ocispec.Descriptor
68+
if err := retry.OnError(retryBackoff,
69+
func(pullErr error) bool {
70+
r.log.Warnf("Error resolving registry %q: %v. Retrying", ref.String(), pullErr)
71+
return true
72+
},
73+
func() error {
74+
name, root, err = resolver.Resolve(ctx, ref.String())
75+
return err
76+
},
77+
); err != nil {
78+
return fmt.Errorf("error resolving remote name %s: %v", ref.String(), err)
6279
}
6380
r.log.Debugf("resolved name: %s", name)
6481

@@ -67,13 +84,6 @@ func (r *Registry) Pull(ctx context.Context, ref image.Reference) error {
6784
return err
6885
}
6986

70-
retryBackoff := wait.Backoff{
71-
Duration: 1 * time.Second,
72-
Factor: 1.0,
73-
Jitter: 0.1,
74-
Steps: 5,
75-
}
76-
7787
if err := retry.OnError(retryBackoff,
7888
func(pullErr error) bool {
7989
if nonRetriablePullError.MatchString(pullErr.Error()) {

0 commit comments

Comments
 (0)