Skip to content

Commit 335d407

Browse files
authored
feat: allow deploy cancellation during file upload (#305)
* fix: cancel deploy during file upload * Return the right error
1 parent d91c32e commit 335d407

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

go/porcelain/deploy.go

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,7 @@ func (n *Netlify) uploadFiles(ctx context.Context, d *models.Deploy, files *depl
361361
sharedErr := &uploadError{err: nil, mutex: &sync.Mutex{}}
362362
sem := make(chan int, n.uploadLimit)
363363
wg := &sync.WaitGroup{}
364+
defer wg.Wait()
364365

365366
var required []string
366367
switch t {
@@ -384,16 +385,19 @@ func (n *Netlify) uploadFiles(ctx context.Context, d *models.Deploy, files *depl
384385
for _, sha := range required {
385386
if files, exist := files.Hashed[sha]; exist {
386387
for _, file := range files {
387-
sem <- 1
388-
wg.Add(1)
389-
390-
go n.uploadFile(ctx, d, file, observer, t, timeout, wg, sem, sharedErr)
388+
select {
389+
case sem <- 1:
390+
sem <- 1
391+
wg.Add(1)
392+
393+
go n.uploadFile(ctx, d, file, observer, t, timeout, wg, sem, sharedErr)
394+
case <-ctx.Done():
395+
return errors.Wrap(ctx.Err(), "aborted file upload early")
396+
}
391397
}
392398
}
393399
}
394400

395-
wg.Wait()
396-
397401
return sharedErr.err
398402
}
399403

0 commit comments

Comments
 (0)