replace github.com/hashicorp/go-multierror with errors.Join

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
Sebastiaan van Stijn committed 2025-08-20 16:24:49 +02:00
1 parent f9b9b363d6
commit 8322c04df8
9 files changed
+64 -63

No files matched your search

+14 -10
View File
@@ -2,6 +2,7 @@ package cache
import (
"context"
stderrors "errors"
"fmt"
"maps"
"os"
@@ -19,7 +20,6 @@ import (
"github.com/containerd/containerd/v2/core/snapshots"
"github.com/containerd/containerd/v2/pkg/labels"
cerrdefs "github.com/containerd/errdefs"
"github.com/hashicorp/go-multierror"
"github.com/moby/buildkit/cache/config"
"github.com/moby/buildkit/identity"
"github.com/moby/buildkit/session"
@@ -146,12 +146,15 @@ type diffParents struct {
}
// caller must hold cacheManager.mu
func (p parentRefs) release(ctx context.Context) (rerr error) {
func (p parentRefs) release(ctx context.Context) error {
var errs []error
switch {
case p.layerParent != nil:
p.layerParent.mu.Lock()
defer p.layerParent.mu.Unlock()
rerr = p.layerParent.release(ctx)
if err := p.layerParent.release(ctx); err != nil {
errs = append(errs, err)
}
case len(p.mergeParents) > 0:
for i, parent := range p.mergeParents {
if parent == nil {
@@ -159,7 +162,7 @@ func (p parentRefs) release(ctx context.Context) (rerr error) {
}
parent.mu.Lock()
if err := parent.release(ctx); err != nil {
rerr = multierror.Append(rerr, err).ErrorOrNil()
errs = append(errs, err)
} else {
p.mergeParents[i] = nil
}
@@ -170,7 +173,7 @@ func (p parentRefs) release(ctx context.Context) (rerr error) {
p.diffParents.lower.mu.Lock()
defer p.diffParents.lower.mu.Unlock()
if err := p.diffParents.lower.release(ctx); err != nil {
rerr = multierror.Append(rerr, err).ErrorOrNil()
errs = append(errs, err)
} else {
p.diffParents.lower = nil
}
@@ -179,14 +182,14 @@ func (p parentRefs) release(ctx context.Context) (rerr error) {
p.diffParents.upper.mu.Lock()
defer p.diffParents.upper.mu.Unlock()
if err := p.diffParents.upper.release(ctx); err != nil {
rerr = multierror.Append(rerr, err).ErrorOrNil()
errs = append(errs, err)
} else {
p.diffParents.upper = nil
}
}
}
return rerr
return stderrors.Join(errs...)
}
func (p parentRefs) cloneParentRefs() parentRefs {
@@ -598,18 +601,19 @@ func (cr *cacheRecord) layerDigestChain() []digest.Digest {
type RefList []ImmutableRef
func (l RefList) Release(ctx context.Context) (rerr error) {
func (l RefList) Release(ctx context.Context) error {
var errs []error
for i, r := range l {
if r == nil {
continue
}
if err := r.Release(ctx); err != nil {
rerr = multierror.Append(rerr, err).ErrorOrNil()
errs = append(errs, err)
} else {
l[i] = nil
}
}
return rerr
return stderrors.Join(errs...)
}
func (sr *immutableRef) LayerChain() RefList {
+7 -7
View File
@@ -2,12 +2,12 @@ package main
import (
"context"
stderrors "errors"
"fmt"
"io"
"text/tabwriter"
"time"
"github.com/hashicorp/go-multierror"
controlapi "github.com/moby/buildkit/api/services/control"
bccommon "github.com/moby/buildkit/cmd/buildctl/common"
"github.com/moby/buildkit/util/appcontext"
@@ -42,12 +42,12 @@ func pruneHistories(clicontext *cli.Context) error {
return err
}
var rerr error
if format := clicontext.String("format"); format != "" {
tmpl, err := bccommon.ParseTemplate(format)
if err != nil {
return err
}
var errs []error
for {
ev, err := resp.Recv()
if errors.Is(err, io.EOF) {
@@ -62,7 +62,7 @@ func pruneHistories(clicontext *cli.Context) error {
Ref: ev.Record.Ref,
Delete: true,
}); err != nil {
rerr = multierror.Append(rerr, err).ErrorOrNil()
errs = append(errs, err)
continue
}
if err := tmpl.Execute(clicontext.App.Writer, ev); err != nil {
@@ -72,7 +72,7 @@ func pruneHistories(clicontext *cli.Context) error {
return err
}
}
return rerr
return stderrors.Join(errs...)
}
return pruneHistoriesWithTableOutput(ctx, clicontext.App.Writer, controlClient, resp)
}
@@ -82,7 +82,7 @@ func pruneHistoriesWithTableOutput(ctx context.Context, w io.Writer, controlClie
) error {
tw := tabwriter.NewWriter(w, 1, 8, 1, '\t', 0)
fmt.Fprintln(tw, "TYPE\tREF\tCREATED\tCOMPLETED\tGENERATION")
var rerr error
var errs []error
for {
ev, err := eventReceiver.Recv()
if errors.Is(err, io.EOF) {
@@ -98,7 +98,7 @@ func pruneHistoriesWithTableOutput(ctx context.Context, w io.Writer, controlClie
Ref: ev.Record.Ref,
Delete: true,
}); err != nil {
rerr = multierror.Append(rerr, err).ErrorOrNil()
errs = append(errs, err)
continue
}
var (
@@ -115,5 +115,5 @@ func pruneHistoriesWithTableOutput(ctx context.Context, w io.Writer, controlClie
tw.Flush()
}
tw.Flush()
return rerr
return stderrors.Join(errs...)
}
+4 -3
View File
@@ -4,6 +4,7 @@ import (
"context"
"crypto/tls"
"crypto/x509"
stderrors "errors"
"fmt"
"net"
"os"
@@ -20,7 +21,6 @@ import (
"github.com/containerd/platforms"
sddaemon "github.com/coreos/go-systemd/v22/daemon"
"github.com/gofrs/flock"
"github.com/hashicorp/go-multierror"
"github.com/moby/buildkit/cache/remotecache"
"github.com/moby/buildkit/cache/remotecache/azblob"
"github.com/moby/buildkit/cache/remotecache/gha"
@@ -415,12 +415,13 @@ func main() {
}
app.After = func(_ *cli.Context) (err error) {
var errs []error
for _, c := range closers {
if e := c(context.TODO()); e != nil {
err = multierror.Append(err, e)
errs = append(errs, e)
}
}
return err
return stderrors.Join(errs...)
}
profiler.Attach(app)
+9 -6
View File
@@ -2,6 +2,7 @@ package control
import (
"context"
stderrors "errors"
"fmt"
"runtime/trace"
"strconv"
@@ -13,7 +14,6 @@ import (
"github.com/containerd/containerd/v2/core/content"
"github.com/containerd/containerd/v2/plugins/services/content/contentserver"
"github.com/distribution/reference"
"github.com/hashicorp/go-multierror"
"github.com/mitchellh/hashstructure/v2"
controlapi "github.com/moby/buildkit/api/services/control"
apitypes "github.com/moby/buildkit/api/types"
@@ -138,17 +138,20 @@ func NewController(opt Opt) (*Controller, error) {
}
func (c *Controller) Close() error {
rerr := c.opt.HistoryDB.Close()
var errs []error
if err := c.opt.HistoryDB.Close(); err != nil {
errs = append(errs, err)
}
if err := c.opt.WorkerController.Close(); err != nil {
rerr = multierror.Append(rerr, err)
errs = append(errs, err)
}
if err := c.opt.CacheStore.Close(); err != nil {
rerr = multierror.Append(rerr, err)
errs = append(errs, err)
}
if err := c.solver.Close(); err != nil {
rerr = multierror.Append(rerr, err)
errs = append(errs, err)
}
return rerr
return stderrors.Join(errs...)
}
func (c *Controller) Register(server *grpc.Server) {
+1 -1
View File
@@ -41,7 +41,6 @@ require (
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510
github.com/hashicorp/go-cleanhttp v0.5.2
github.com/hashicorp/go-immutable-radix/v2 v2.1.0
github.com/hashicorp/go-multierror v1.1.1
github.com/hashicorp/golang-lru/v2 v2.0.7
github.com/in-toto/in-toto-golang v0.9.0
github.com/klauspost/compress v1.18.0
@@ -158,6 +157,7 @@ require (
github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1 // indirect
github.com/hanwen/go-fuse/v2 v2.6.3 // indirect
github.com/hashicorp/errwrap v1.1.0 // indirect
github.com/hashicorp/go-multierror v1.1.1 // indirect
github.com/hashicorp/go-retryablehttp v0.7.7 // indirect
github.com/kylelemons/godebug v1.1.0 // indirect
github.com/moby/sys/mount v0.3.4 // indirect
+9 -11
View File
@@ -2,6 +2,7 @@ package snapshot
import (
"context"
stderrors "errors"
gofs "io/fs"
"os"
"path/filepath"
@@ -14,7 +15,6 @@ import (
"github.com/containerd/containerd/v2/plugins/snapshots/overlay/overlayutils"
"github.com/containerd/continuity/fs"
"github.com/containerd/continuity/sysx"
"github.com/hashicorp/go-multierror"
"github.com/moby/buildkit/identity"
"github.com/moby/buildkit/util/bklog"
"github.com/moby/buildkit/util/leaseutil"
@@ -34,7 +34,7 @@ func (sn *mergeSnapshotter) diffApply(ctx context.Context, dest Mountable, diffs
defer func() {
releaseErr := a.Release()
if releaseErr != nil {
rerr = multierror.Append(rerr, errors.Wrapf(releaseErr, "failed to release applier")).ErrorOrNil()
rerr = stderrors.Join(rerr, errors.Wrapf(releaseErr, "failed to release applier"))
}
}()
@@ -84,7 +84,7 @@ func (sn *mergeSnapshotter) diffApply(ctx context.Context, dest Mountable, diffs
return snapshots.Usage{}, errors.Wrapf(err, "failed to create differ")
}
defer func() {
rerr = multierror.Append(rerr, d.Release()).ErrorOrNil()
rerr = stderrors.Join(rerr, d.Release())
}()
if err := d.HandleChanges(ctx, a.Apply); err != nil {
return snapshots.Usage{}, errors.Wrapf(err, "failed to handle changes")
@@ -146,7 +146,7 @@ func applierFor(dest Mountable, tryCrossSnapshotLink, userxattr bool) (_ *applie
}
defer func() {
if rerr != nil {
rerr = multierror.Append(rerr, a.Release()).ErrorOrNil()
rerr = stderrors.Join(rerr, a.Release())
}
}()
if tryCrossSnapshotLink {
@@ -191,7 +191,7 @@ func applierFor(dest Mountable, tryCrossSnapshotLink, userxattr bool) (_ *applie
prevRelease := a.release
a.release = func() error {
err := mnter.Unmount()
return multierror.Append(err, prevRelease()).ErrorOrNil()
return stderrors.Join(err, prevRelease())
}
}
@@ -523,7 +523,7 @@ func differFor(lowerMntable, upperMntable Mountable) (_ *differ, rerr error) {
}
defer func() {
if rerr != nil {
rerr = multierror.Append(rerr, d.Release()).ErrorOrNil()
rerr = stderrors.Join(rerr, d.Release())
}
}()
@@ -541,8 +541,7 @@ func differFor(lowerMntable, upperMntable Mountable) (_ *differ, rerr error) {
d.lowerRoot = root
lowerMnts = mnts
d.releaseLower = func() error {
err := mounter.Unmount()
return multierror.Append(err, release()).ErrorOrNil()
return stderrors.Join(mounter.Unmount(), release())
}
}
@@ -560,8 +559,7 @@ func differFor(lowerMntable, upperMntable Mountable) (_ *differ, rerr error) {
d.upperRoot = root
upperMnts = mnts
d.releaseUpper = func() error {
err := mounter.Unmount()
return multierror.Append(err, release()).ErrorOrNil()
return stderrors.Join(mounter.Unmount(), release())
}
}
@@ -779,7 +777,7 @@ func (d *differ) Release() error {
}
}
if d.releaseUpper != nil {
err = multierror.Append(err, d.releaseUpper()).ErrorOrNil()
err = stderrors.Join(err, d.releaseUpper())
if err == nil {
d.releaseUpper = nil
}
+9 -15
View File
@@ -2,35 +2,29 @@ package tracing
import (
"context"
stderrors "errors"
"github.com/hashicorp/go-multierror"
sdktrace "go.opentelemetry.io/otel/sdk/trace"
)
type MultiSpanExporter []sdktrace.SpanExporter
func (m MultiSpanExporter) ExportSpans(ctx context.Context, spans []sdktrace.ReadOnlySpan) (err error) {
func (m MultiSpanExporter) ExportSpans(ctx context.Context, spans []sdktrace.ReadOnlySpan) error {
var errs []error
for _, exp := range m {
if e := exp.ExportSpans(ctx, spans); e != nil {
if err != nil {
err = multierror.Append(err, e)
continue
}
err = e
errs = append(errs, e)
}
}
return err
return stderrors.Join(errs...)
}
func (m MultiSpanExporter) Shutdown(ctx context.Context) (err error) {
func (m MultiSpanExporter) Shutdown(ctx context.Context) error {
var errs []error
for _, exp := range m {
if e := exp.Shutdown(ctx); e != nil {
if err != nil {
err = multierror.Append(err, e)
continue
}
err = e
errs = append(errs, e)
}
}
return err
return stderrors.Join(errs...)
}
+6 -6
View File
@@ -2,6 +2,7 @@ package base
import (
"context"
stderrors "errors"
"fmt"
"os"
"path/filepath"
@@ -13,7 +14,6 @@ import (
"github.com/containerd/containerd/v2/core/remotes/docker"
"github.com/containerd/containerd/v2/pkg/gc"
"github.com/containerd/platforms"
"github.com/hashicorp/go-multierror"
"github.com/moby/buildkit/cache"
"github.com/moby/buildkit/cache/metadata"
"github.com/moby/buildkit/client"
@@ -222,21 +222,21 @@ func (w *Worker) GarbageCollect(ctx context.Context) error {
}
func (w *Worker) Close() error {
var rerr error
var errs []error
if err := w.MetadataStore.Close(); err != nil {
rerr = multierror.Append(rerr, err)
errs = append(errs, err)
}
for _, provider := range w.NetworkProviders {
if err := provider.Close(); err != nil {
rerr = multierror.Append(rerr, err)
errs = append(errs, err)
}
}
if w.ResourceMonitor != nil {
if err := w.ResourceMonitor.Close(); err != nil {
rerr = multierror.Append(rerr, err)
errs = append(errs, err)
}
}
return rerr
return stderrors.Join(errs...)
}
func (w *Worker) ContentStore() *containerdsnapshot.Store {
+5 -4
View File
@@ -1,8 +1,9 @@
package worker
import (
stderrors "errors"
"github.com/containerd/containerd/v2/pkg/filters"
"github.com/hashicorp/go-multierror"
"github.com/moby/buildkit/cache"
"github.com/moby/buildkit/client"
"github.com/pkg/errors"
@@ -16,13 +17,13 @@ type Controller struct {
}
func (c *Controller) Close() error {
var rerr error
var errs []error
for _, w := range c.workers {
if err := w.Close(); err != nil {
rerr = multierror.Append(rerr, err)
errs = append(errs, err)
}
}
return rerr
return stderrors.Join(errs...)
}
// Add adds a local worker.