From b594068ca9b46ea1ae33b440185c292caa3eb054 Mon Sep 17 00:00:00 2001 From: Benjamin Elder Date: Wed, 22 Jan 2025 15:03:15 -0800 Subject: [PATCH] retry image pulls once, fail if that doesn't work --- pkg/build/nodeimage/buildcontext.go | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/pkg/build/nodeimage/buildcontext.go b/pkg/build/nodeimage/buildcontext.go index 47da153c..f0eb09be 100644 --- a/pkg/build/nodeimage/buildcontext.go +++ b/pkg/build/nodeimage/buildcontext.go @@ -267,18 +267,22 @@ func (c *buildContext) prePullImagesAndWriteManifests(bits kube.Bits, parsedVers }() fns := []func() error{} + osArch := dockerBuildOsAndArch(c.arch) for _, image := range requiredImages { image := image // https://golang.org/doc/faq#closures_and_goroutines - fns = append(fns, func() error { - if !builtImages.Has(image) { - if err = importer.Pull(image, dockerBuildOsAndArch(c.arch)); err != nil { + if !builtImages.Has(image) { + fns = append(fns, func() error { + if err = importer.Pull(image, osArch); err != nil { c.logger.Warnf("Failed to pull %s with error: %v", image, err) runE := exec.RunErrorForError(err) c.logger.Warn(string(runE.Output)) + c.logger.Warnf("Retrying %s pull after 1s ...", image) + time.Sleep(time.Second) + return importer.Pull(image, osArch) } - } - return nil - }) + return nil + }) + } } if err := errors.AggregateConcurrent(fns); err != nil { return nil, err