From 23adc87da33784a34659464da3ff207ae3e70822 Mon Sep 17 00:00:00 2001 From: nugaon Date: Thu, 25 Sep 2025 19:34:55 +0200 Subject: [PATCH] fix: strategy channels of redundancy getter --- pkg/file/redundancy/getter/getter.go | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/pkg/file/redundancy/getter/getter.go b/pkg/file/redundancy/getter/getter.go index 39bf23f87c3..377019f5db8 100644 --- a/pkg/file/redundancy/getter/getter.go +++ b/pkg/file/redundancy/getter/getter.go @@ -244,7 +244,14 @@ func (g *decoder) runStrategy(s Strategy) error { c := make(chan error, len(m)) ctx, cancel := context.WithCancel(context.Background()) - defer cancel() + completed := 0 + defer func() { + cancel() + remaining := len(m) - completed + for i := 0; i < remaining; i++ { + <-c + } + }() for _, i := range m { go func(i int) { @@ -252,7 +259,9 @@ func (g *decoder) runStrategy(s Strategy) error { }(i) } - for range c { + for completed < len(m) { + <-c + completed++ if g.fetchedCnt.Load() >= int32(g.shardCnt) { return nil }