diff --git a/go.mod b/go.mod index c98e9bb..28a3abe 100644 --- a/go.mod +++ b/go.mod @@ -6,6 +6,7 @@ require ( github.com/dustin/go-humanize v1.0.1 github.com/go-chi/chi/v5 v5.1.0 github.com/rs/zerolog v1.33.0 + golang.org/x/sync v0.9.0 ) require ( diff --git a/go.sum b/go.sum index cd82a65..16d4e6f 100644 --- a/go.sum +++ b/go.sum @@ -14,6 +14,8 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= +golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= +golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/src/media/fetch.go b/src/media/fetch.go index ef98f1b..e031e98 100644 --- a/src/media/fetch.go +++ b/src/media/fetch.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "github.com/dustin/go-humanize" + "golang.org/x/sync/errgroup" "html/template" "media-roller/src/utils" "net/http" @@ -23,7 +24,6 @@ import ( "io" "os" "os/exec" - "sync" ) type Media struct { @@ -156,16 +156,15 @@ func downloadMedia(url string) (string, string, error) { return "", err.Error(), err } - var wg sync.WaitGroup - wg.Add(1) + eg := errgroup.Group{} - go func() { + eg.Go(func() error { _, errStdout = io.Copy(stdout, stdoutIn) - wg.Done() - }() + return nil + }) _, errStderr = io.Copy(stderr, stderrIn) - wg.Wait() + _ = eg.Wait() log.Info().Msgf("Done with %s", id) err = cmd.Wait()