Skip to content

Commit 02c7e29

Browse files
authored
Merge pull request #1186 from ydb-platform/pool-errgroup
use errgroup for close internal/pool
2 parents 008137f + 918f67e commit 02c7e29

File tree

1 file changed

+11
-13
lines changed

1 file changed

+11
-13
lines changed

internal/pool/pool.go

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import (
44
"context"
55
"time"
66

7+
"golang.org/x/sync/errgroup"
8+
79
"github.com/ydb-platform/ydb-go-sdk/v3/internal/pool/stats"
810
"github.com/ydb-platform/ydb-go-sdk/v3/internal/stack"
911
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xcontext"
@@ -465,20 +467,16 @@ func (p *Pool[PT, T]) Close(ctx context.Context) (finalErr error) {
465467
p.mu.Lock()
466468
defer p.mu.Unlock()
467469

468-
errs := make([]error, 0, len(p.index))
469-
470+
var g errgroup.Group
470471
for item := range p.index {
471-
if err := item.Close(ctx); err != nil {
472-
errs = append(errs, err)
473-
}
472+
item := item
473+
g.Go(func() error {
474+
return item.Close(ctx)
475+
})
474476
}
475-
476-
switch len(errs) {
477-
case 0:
478-
return nil
479-
case 1:
480-
return errs[0]
481-
default:
482-
return xerrors.Join(errs...)
477+
if err := g.Wait(); err != nil {
478+
return xerrors.WithStackTrace(err)
483479
}
480+
481+
return nil
484482
}

0 commit comments

Comments
 (0)