From c49d55b2a48c44ddd678a71b42341a208522f8ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miloslav=20Trma=C4=8D?= Date: Mon, 18 Aug 2025 19:51:08 +0200 Subject: [PATCH] Use WaitGroup.Go MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Should not change behavior. Signed-off-by: Miloslav Trmač --- cmd/skopeo/proxy.go | 13 ++++--------- integration/proxy_test.go | 12 ++++-------- 2 files changed, 8 insertions(+), 17 deletions(-) diff --git a/cmd/skopeo/proxy.go b/cmd/skopeo/proxy.go index c3992c5e1..bdbc67af6 100644 --- a/cmd/skopeo/proxy.go +++ b/cmd/skopeo/proxy.go @@ -332,7 +332,6 @@ func (h *proxyHandler) allocPipe() (*os.File, *activePipe, error) { w: pipew, } h.activePipes[uint32(pipew.Fd())] = &f - f.wg.Add(1) return piper, &f, nil } @@ -345,14 +344,12 @@ func (h *proxyHandler) returnBytes(retval any, buf []byte) (replyBuf, error) { return ret, err } - go func() { - // Signal completion when we return - defer f.wg.Done() + f.wg.Go(func() { _, err = io.Copy(f.w, bytes.NewReader(buf)) if err != nil { f.err = err } - }() + }) ret.value = retval ret.fd = piper @@ -583,10 +580,8 @@ func (h *proxyHandler) GetBlob(args []any) (replyBuf, error) { blobr.Close() return ret, err } - go func() { - // Signal completion when we return + f.wg.Go(func() { defer blobr.Close() - defer f.wg.Done() verifier := d.Verifier() tr := io.TeeReader(blobr, verifier) n, err := io.Copy(f.w, tr) @@ -600,7 +595,7 @@ func (h *proxyHandler) GetBlob(args []any) (replyBuf, error) { if !verifier.Verified() { f.err = fmt.Errorf("corrupted blob, expecting %s", d.String()) } - }() + }) ret.value = blobSize ret.fd = piper diff --git a/integration/proxy_test.go b/integration/proxy_test.go index d86c9b145..067575f6a 100644 --- a/integration/proxy_test.go +++ b/integration/proxy_test.go @@ -214,9 +214,7 @@ func (p *proxy) callGetRawBlob(args []any) (rval any, buf []byte, err error) { var wg sync.WaitGroup fetchchan := make(chan byteFetch, 1) errchan := make(chan proxyError, 1) - wg.Add(1) - go func() { - defer wg.Done() + wg.Go(func() { defer close(fetchchan) defer fd.datafd.Close() buf, err := io.ReadAll(fd.datafd) @@ -224,10 +222,8 @@ func (p *proxy) callGetRawBlob(args []any) (rval any, buf []byte, err error) { content: buf, err: err, } - }() - wg.Add(1) - go func() { - defer wg.Done() + }) + wg.Go(func() { defer fd.errfd.Close() defer close(errchan) buf, err := io.ReadAll(fd.errfd) @@ -248,7 +244,7 @@ func (p *proxy) callGetRawBlob(args []any) (rval any, buf []byte, err error) { panic(unmarshalErr) } errchan <- proxyErr - }() + }) wg.Wait() errMsg := <-errchan