Skip to content

Commit 1a1e249

Browse files
authored
replace multierr with errors.Join (#1224)
1 parent bb7f4ce commit 1a1e249

File tree

4 files changed

+27
-22
lines changed

4 files changed

+27
-22
lines changed

dht.go

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package dht
22

33
import (
44
"context"
5+
"errors"
56
"fmt"
67
"math"
78
"math/rand"
@@ -34,7 +35,6 @@ import (
3435
logging "github.com/ipfs/go-log/v2"
3536
"github.com/multiformats/go-base32"
3637
ma "github.com/multiformats/go-multiaddr"
37-
"go.uber.org/multierr"
3838
"go.uber.org/zap"
3939
"google.golang.org/protobuf/proto"
4040
)
@@ -865,22 +865,26 @@ func (dht *IpfsDHT) Close() error {
865865
dht.cancel()
866866
dht.wg.Wait()
867867

868-
var wg sync.WaitGroup
868+
errc := make(chan error)
869869
closes := [...]func() error{
870870
dht.rtRefreshManager.Close,
871871
dht.providerStore.Close,
872872
}
873-
var errors [len(closes)]error
874-
wg.Add(len(errors))
875-
for i, c := range closes {
876-
go func(i int, c func() error) {
877-
defer wg.Done()
878-
errors[i] = c()
879-
}(i, c)
873+
for _, c := range closes {
874+
go func(c func() error) {
875+
errc <- c()
876+
}(c)
880877
}
881-
wg.Wait()
882878

883-
return multierr.Combine(errors[:]...)
879+
var errs []error
880+
for range len(closes) {
881+
err := <-errc
882+
if err != nil {
883+
errs = append(errs, err)
884+
}
885+
}
886+
887+
return errors.Join(errs...)
884888
}
885889

886890
func mkDsKey(s string) ds.Key {

dual/dual.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ package dual
44

55
import (
66
"context"
7+
"errors"
78
"fmt"
89
"sync"
910

@@ -22,7 +23,6 @@ import (
2223
"github.com/libp2p/go-libp2p/core/routing"
2324
ma "github.com/multiformats/go-multiaddr"
2425
manet "github.com/multiformats/go-multiaddr/net"
25-
"go.uber.org/multierr"
2626
)
2727

2828
const (
@@ -311,10 +311,11 @@ func combineErrors(erra, errb error) error {
311311
// table), return the other.
312312
if erra == kb.ErrLookupFailure {
313313
return errb
314-
} else if errb == kb.ErrLookupFailure {
314+
}
315+
if errb == kb.ErrLookupFailure {
315316
return erra
316317
}
317-
return multierr.Append(erra, errb)
318+
return errors.Join(erra, errb)
318319
}
319320

320321
// Bootstrap allows callers to hint to the routing system to get into a

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ require (
3535
go.opentelemetry.io/otel v1.39.0
3636
go.opentelemetry.io/otel/metric v1.39.0
3737
go.opentelemetry.io/otel/trace v1.39.0
38-
go.uber.org/multierr v1.11.0
3938
go.uber.org/zap v1.27.1
4039
gonum.org/v1/gonum v0.17.0
4140
google.golang.org/protobuf v1.36.11
@@ -136,6 +135,7 @@ require (
136135
go.uber.org/dig v1.19.0 // indirect
137136
go.uber.org/fx v1.24.0 // indirect
138137
go.uber.org/mock v0.5.2 // indirect
138+
go.uber.org/multierr v1.11.0 // indirect
139139
go.yaml.in/yaml/v2 v2.4.3 // indirect
140140
golang.org/x/crypto v0.47.0 // indirect
141141
golang.org/x/exp v0.0.0-20260112195511-716be5621a96 // indirect

rtrefresh/rt_refresh_manager.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package rtrefresh
22

33
import (
44
"context"
5+
"errors"
56
"fmt"
67
"sync"
78
"sync/atomic"
@@ -16,7 +17,6 @@ import (
1617
"go.opentelemetry.io/otel/attribute"
1718
"go.opentelemetry.io/otel/codes"
1819
"go.opentelemetry.io/otel/trace"
19-
"go.uber.org/multierr"
2020
)
2121

2222
var logger = logging.Logger("dht/RtRefreshManager")
@@ -241,10 +241,10 @@ func (r *RtRefreshManager) doRefresh(ctx context.Context, forceRefresh bool) err
241241
ctx, span := internal.StartSpan(ctx, "RefreshManager.doRefresh")
242242
defer span.End()
243243

244-
var merr error
244+
var errs []error
245245

246246
if err := r.queryForSelf(ctx); err != nil {
247-
merr = multierr.Append(merr, err)
247+
errs = append(errs, err)
248248
}
249249

250250
refreshCpls := r.rt.GetTrackedCplsForRefresh()
@@ -261,7 +261,7 @@ func (r *RtRefreshManager) doRefresh(ctx context.Context, forceRefresh bool) err
261261
for c := range refreshCpls {
262262
cpl := uint(c)
263263
if err := rfnc(cpl); err != nil {
264-
merr = multierr.Append(merr, err)
264+
errs = append(errs, err)
265265
} else {
266266
// If we see a gap at a Cpl in the Routing table, we ONLY refresh up until the maximum cpl we
267267
// have in the Routing Table OR (2 * (Cpl+ 1) with the gap), whichever is smaller.
@@ -274,10 +274,10 @@ func (r *RtRefreshManager) doRefresh(ctx context.Context, forceRefresh bool) err
274274
lastCpl := min(2*(c+1), len(refreshCpls)-1)
275275
for i := c + 1; i < lastCpl+1; i++ {
276276
if err := rfnc(uint(i)); err != nil {
277-
merr = multierr.Append(merr, err)
277+
errs = append(errs, err)
278278
}
279279
}
280-
return merr
280+
return errors.Join(errs...)
281281
}
282282
}
283283
}
@@ -288,7 +288,7 @@ func (r *RtRefreshManager) doRefresh(ctx context.Context, forceRefresh bool) err
288288
return ctx.Err()
289289
}
290290

291-
return merr
291+
return errors.Join(errs...)
292292
}
293293

294294
func min(a int, b int) int {

0 commit comments

Comments
 (0)