Procházet zdrojové kódy

Merge pull request #918 from jmorganca/mxyng/fix-out-of-space

fix(download): no retry when out of space
Michael Yang před 1 rokem
rodič
revize
9bc5864a03
1 změnil soubory, kde provedl 3 přidání a 1 odebrání
  1. 3 1
      server/download.go

+ 3 - 1
server/download.go

@@ -15,6 +15,7 @@ import (
 	"strings"
 	"strings"
 	"sync"
 	"sync"
 	"sync/atomic"
 	"sync/atomic"
+	"syscall"
 	"time"
 	"time"
 
 
 	"golang.org/x/sync/errgroup"
 	"golang.org/x/sync/errgroup"
@@ -158,7 +159,8 @@ func (b *blobDownload) run(ctx context.Context, requestURL *url.URL, opts *Regis
 				w := io.NewOffsetWriter(file, part.StartsAt())
 				w := io.NewOffsetWriter(file, part.StartsAt())
 				err := b.downloadChunk(inner, requestURL, w, part, opts)
 				err := b.downloadChunk(inner, requestURL, w, part, opts)
 				switch {
 				switch {
-				case errors.Is(err, context.Canceled):
+				case errors.Is(err, context.Canceled), errors.Is(err, syscall.ENOSPC):
+					// return immediately if the context is canceled or the device is out of space
 					return err
 					return err
 				case err != nil:
 				case err != nil:
 					log.Printf("%s part %d attempt %d failed: %v, retrying", b.Digest[7:19], i, try, err)
 					log.Printf("%s part %d attempt %d failed: %v, retrying", b.Digest[7:19], i, try, err)