@@ -318,7 +318,10 @@ func DownloadConfig(ctx context.Context, fetch FetcherFunc, ref string, desc oci
318318 rc , err = fetcher .Fetch (ctx , desc )
319319 if err != nil {
320320 log .WithError (err ).Warn ("cannot fetch config" )
321- return false , nil // retry
321+ if retryableError (err ) {
322+ return false , nil // retry
323+ }
324+ return false , err
322325 }
323326 defer rc .Close ()
324327 }
@@ -467,7 +470,10 @@ func DownloadManifest(ctx context.Context, fetch FetcherFunc, desc ociv1.Descrip
467470 rc , err = fetcher .Fetch (ctx , desc )
468471 if err != nil {
469472 log .WithError (err ).Warn ("cannot fetch manifest" )
470- return false , nil // retry
473+ if retryableError (err ) {
474+ return false , nil // retry
475+ }
476+ return false , err
471477 }
472478 mediaType = desc .MediaType
473479 }
@@ -521,7 +527,10 @@ func DownloadManifest(ctx context.Context, fetch FetcherFunc, desc ociv1.Descrip
521527 rc , err = fetcher .Fetch (ctx , md )
522528 if err != nil {
523529 log .WithError (err ).Warn ("cannot download config" )
524- return false , nil // retry
530+ if retryableError (err ) {
531+ return false , nil // retry
532+ }
533+ return false , err
525534 }
526535 rdesc = & md
527536 inpt , err = io .ReadAll (rc )
@@ -587,3 +596,19 @@ func (mh *manifestHandler) putManifest(w http.ResponseWriter, r *http.Request) {
587596func (mh * manifestHandler ) deleteManifest (w http.ResponseWriter , r * http.Request ) {
588597 respondWithError (w , distv2 .ErrorCodeManifestUnknown )
589598}
599+
600+ func retryableError (err error ) bool {
601+ if err == nil {
602+ return false
603+ }
604+ if errors .Is (err , errdefs .ErrNotFound ) || errors .Is (err , errdefs .ErrInvalidArgument ) {
605+ return false
606+ }
607+ if strings .Contains (err .Error (), "not found" ) ||
608+ strings .Contains (err .Error (), "invalid argument" ) ||
609+ strings .Contains (err .Error (), "not implemented" ) ||
610+ strings .Contains (err .Error (), "unsupported media type" ) {
611+ return false
612+ }
613+ return true
614+ }
0 commit comments