Skip to content

Commit

Permalink
Drop go.uber.org/multierr in favor of errors.Join (#3441)
Browse files Browse the repository at this point in the history
  • Loading branch information
stefanvanburen authored Nov 1, 2024
1 parent 4828637 commit 5c44d3e
Show file tree
Hide file tree
Showing 54 changed files with 148 additions and 172 deletions.
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ require (
go.lsp.dev/jsonrpc2 v0.10.0
go.lsp.dev/protocol v0.12.0
go.uber.org/atomic v1.11.0
go.uber.org/multierr v1.11.0
go.uber.org/zap v1.27.0
go.uber.org/zap/exp v0.3.0
golang.org/x/crypto v0.28.0
Expand Down Expand Up @@ -119,6 +118,7 @@ require (
go.opentelemetry.io/otel/metric v1.31.0 // indirect
go.opentelemetry.io/otel/trace v1.31.0 // indirect
go.uber.org/mock v0.5.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
golang.org/x/sys v0.26.0 // indirect
golang.org/x/text v0.19.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20240924160255-9d4c2d233b61 // indirect
Expand Down
11 changes: 5 additions & 6 deletions private/buf/bufctl/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@ import (
"github.com/bufbuild/buf/private/pkg/storage/storageos"
"github.com/bufbuild/buf/private/pkg/syserror"
"github.com/bufbuild/protovalidate-go"
"go.uber.org/multierr"
"google.golang.org/protobuf/proto"
)

Expand Down Expand Up @@ -562,7 +561,7 @@ func (c *controller) PutImage(
return err
}
defer func() {
retErr = multierr.Append(retErr, writeCloser.Close())
retErr = errors.Join(retErr, writeCloser.Close())
}()
_, err = writeCloser.Write(data)
return err
Expand Down Expand Up @@ -692,7 +691,7 @@ func (c *controller) PutMessage(
return err
}
_, err = writeCloser.Write(data)
return multierr.Append(err, writeCloser.Close())
return errors.Join(err, writeCloser.Close())
}

func (c *controller) getImage(
Expand Down Expand Up @@ -799,7 +798,7 @@ func (c *controller) getWorkspaceForProtoFileRef(
return nil, err
}
defer func() {
retErr = multierr.Append(retErr, readBucketCloser.Close())
retErr = errors.Join(retErr, readBucketCloser.Close())
}()
options := []bufworkspace.WorkspaceBucketOption{
bufworkspace.WithProtoFileTargetPath(
Expand Down Expand Up @@ -839,7 +838,7 @@ func (c *controller) getWorkspaceForSourceRef(
return nil, err
}
defer func() {
retErr = multierr.Append(retErr, readBucketCloser.Close())
retErr = errors.Join(retErr, readBucketCloser.Close())
}()
options := []bufworkspace.WorkspaceBucketOption{
bufworkspace.WithConfigOverride(
Expand Down Expand Up @@ -915,7 +914,7 @@ func (c *controller) getImageForMessageRef(
return nil, err
}
defer func() {
retErr = multierr.Append(retErr, readCloser.Close())
retErr = errors.Join(retErr, readCloser.Close())
}()
data, err := io.ReadAll(readCloser)
if err != nil {
Expand Down
5 changes: 2 additions & 3 deletions private/buf/bufcurl/headers.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,13 @@ package bufcurl

import (
"bufio"
"errors"
"fmt"
"io"
"net/http"
"os"
"path/filepath"
"strings"

"go.uber.org/multierr"
)

// headersBlockList contains disallowed headers. These are headers that are part
Expand Down Expand Up @@ -124,7 +123,7 @@ func readHeadersFile(headerFile string, stopAtBlankLine bool, headers http.Heade
if f != nil {
closeErr := f.Close()
if closeErr != nil {
err = multierr.Append(err, ErrorHasFilename(closeErr, headerFile))
err = errors.Join(err, ErrorHasFilename(closeErr, headerFile))
}
}
}()
Expand Down
9 changes: 4 additions & 5 deletions private/buf/buffetch/internal/reader.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ import (
"github.com/bufbuild/buf/private/pkg/syserror"
"github.com/klauspost/compress/zstd"
"github.com/klauspost/pgzip"
"go.uber.org/multierr"
)

type reader struct {
Expand Down Expand Up @@ -123,15 +122,15 @@ func (r *reader) GetReadBucketCloser(
if retReadBucketCloser != nil {
castReadBucketCloser, ok := retReadBucketCloser.(*readBucketCloser)
if !ok {
retErr = multierr.Append(
retErr = errors.Join(
retErr,
syserror.Newf("expected *readBucketCloser but got %T", retReadBucketCloser),
)
return
}
var err error
retReadBucketCloser, err = castReadBucketCloser.copyToInMemory(ctx)
retErr = multierr.Append(retErr, err)
retErr = errors.Join(retErr, err)
}
}()
}
Expand Down Expand Up @@ -422,7 +421,7 @@ func (r *reader) getFileReadCloserAndSize(
}
defer func() {
if retErr != nil {
retErr = multierr.Append(retErr, readCloser.Close())
retErr = errors.Join(retErr, readCloser.Close())
}
}()
if keepFileCompression {
Expand Down Expand Up @@ -531,7 +530,7 @@ func (r *reader) getFileReadCloserAndSizePotentiallyCompressedHTTP(
if response.StatusCode != http.StatusOK {
err := fmt.Errorf("got HTTP status code %d", response.StatusCode)
if response.Body != nil {
return nil, -1, multierr.Append(err, response.Body.Close())
return nil, -1, errors.Join(err, response.Body.Close())
}
return nil, -1, err
}
Expand Down
3 changes: 1 addition & 2 deletions private/buf/buffetch/internal/writer.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ import (
"github.com/bufbuild/buf/private/pkg/app"
"github.com/bufbuild/buf/private/pkg/ioext"
"github.com/klauspost/compress/zstd"
"go.uber.org/multierr"
)

type writer struct {
Expand Down Expand Up @@ -111,7 +110,7 @@ func (w *writer) putFileWriteCloser(
}
defer func() {
if retErr != nil {
retErr = multierr.Append(retErr, writeCloser.Close())
retErr = errors.Join(retErr, writeCloser.Close())
}
}()
if noFileCompression {
Expand Down
6 changes: 3 additions & 3 deletions private/buf/bufformat/bufformat.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ package bufformat

import (
"context"
"errors"
"io"

"github.com/bufbuild/buf/private/bufpkg/bufmodule"
Expand All @@ -25,7 +26,6 @@ import (
"github.com/bufbuild/protocompile/ast"
"github.com/bufbuild/protocompile/parser"
"github.com/bufbuild/protocompile/reporter"
"go.uber.org/multierr"
)

// FormatModuleSet formats and writes the target files into a read bucket.
Expand Down Expand Up @@ -56,7 +56,7 @@ func FormatBucket(ctx context.Context, bucket storage.ReadBucket) (_ storage.Rea
return err
}
defer func() {
retErr = multierr.Append(retErr, readObjectCloser.Close())
retErr = errors.Join(retErr, readObjectCloser.Close())
}()
fileNode, err := parser.Parse(readObjectCloser.ExternalPath(), readObjectCloser, reporter.NewHandler(nil))
if err != nil {
Expand All @@ -67,7 +67,7 @@ func FormatBucket(ctx context.Context, bucket storage.ReadBucket) (_ storage.Rea
return err
}
defer func() {
retErr = multierr.Append(retErr, writeObjectCloser.Close())
retErr = errors.Join(retErr, writeObjectCloser.Close())
}()
if err := FormatFileNode(writeObjectCloser, fileNode); err != nil {
return err
Expand Down
11 changes: 5 additions & 6 deletions private/buf/bufformat/formatter.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ import (
"unicode/utf8"

"github.com/bufbuild/protocompile/ast"
"go.uber.org/multierr"
)

// formatter writes an *ast.FileNode as a .proto file.
Expand Down Expand Up @@ -127,7 +126,7 @@ func (f *formatter) In() {
func (f *formatter) Out() {
if f.indent <= 0 {
// Unreachable.
f.err = multierr.Append(
f.err = errors.Join(
f.err,
errors.New("internal error: attempted to decrement indentation at zero"),
)
Expand Down Expand Up @@ -180,7 +179,7 @@ func (f *formatter) WriteString(elem string) {
if !strings.ContainsRune(prevBlockList, f.lastWritten) &&
!strings.ContainsRune(nextBlockList, first) {
if _, err := f.writer.Write([]byte{' '}); err != nil {
f.err = multierr.Append(f.err, err)
f.err = errors.Join(f.err, err)
return
}
}
Expand All @@ -190,7 +189,7 @@ func (f *formatter) WriteString(elem string) {
}
f.lastWritten, _ = utf8.DecodeLastRuneInString(elem)
if _, err := f.writer.Write([]byte(elem)); err != nil {
f.err = multierr.Append(f.err, err)
f.err = errors.Join(f.err, err)
}
}

Expand Down Expand Up @@ -1389,7 +1388,7 @@ func (f *formatter) writeCompositeValueForArrayLiteral(
case *ast.MessageLiteralNode:
f.writeMessageLiteralForArray(node, lastElement)
default:
f.err = multierr.Append(f.err, fmt.Errorf("unexpected array value node %T", node))
f.err = errors.Join(f.err, fmt.Errorf("unexpected array value node %T", node))
}
}

Expand Down Expand Up @@ -1779,7 +1778,7 @@ func (f *formatter) writeNode(node ast.Node) {
case *ast.EmptyDeclNode:
// Nothing to do here.
default:
f.err = multierr.Append(f.err, fmt.Errorf("unexpected node: %T", node))
f.err = errors.Join(f.err, fmt.Errorf("unexpected node: %T", node))
}
}

Expand Down
4 changes: 2 additions & 2 deletions private/buf/bufgen/features.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
package bufgen

import (
"errors"
"fmt"
"log/slog"
"sort"
Expand All @@ -23,7 +24,6 @@ import (
"github.com/bufbuild/buf/private/bufpkg/bufconfig"
"github.com/bufbuild/buf/private/bufpkg/bufimage"
"github.com/bufbuild/buf/private/pkg/slicesext"
"go.uber.org/multierr"
"google.golang.org/protobuf/reflect/protoreflect"
"google.golang.org/protobuf/types/descriptorpb"
"google.golang.org/protobuf/types/pluginpb"
Expand Down Expand Up @@ -194,7 +194,7 @@ func checkRequiredFeatures(
}
}
}
return multierr.Combine(errs...)
return errors.Join(errs...)
}

func featureName(feature pluginpb.CodeGeneratorResponse_Feature) string {
Expand Down
4 changes: 0 additions & 4 deletions private/buf/bufgen/generator.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@ import (
"github.com/bufbuild/buf/private/pkg/slicesext"
"github.com/bufbuild/buf/private/pkg/storage/storageos"
"github.com/bufbuild/buf/private/pkg/thread"
"go.uber.org/multierr"
"google.golang.org/protobuf/types/pluginpb"
)

Expand Down Expand Up @@ -294,9 +293,6 @@ func (g *generator) execPlugins(
jobs,
thread.ParallelizeWithCancelOnFailure(),
); err != nil {
if errs := multierr.Errors(err); len(errs) > 0 {
return nil, errs[0]
}
return nil, err
}
if err := validateResponses(responses, pluginConfigs); err != nil {
Expand Down
3 changes: 1 addition & 2 deletions private/buf/bufmigrate/migrate_builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ import (
"github.com/bufbuild/buf/private/pkg/stringutil"
"github.com/bufbuild/buf/private/pkg/syserror"
"github.com/google/uuid"
"go.uber.org/multierr"
)

type migrateBuilder struct {
Expand Down Expand Up @@ -89,7 +88,7 @@ func (m *migrateBuilder) addBufGenYAML(ctx context.Context, bufGenYAMLFilePath s
return err
}
defer func() {
retErr = multierr.Append(retErr, file.Close())
retErr = errors.Join(retErr, file.Close())
}()
bufGenYAML, err := bufconfig.ReadBufGenYAMLFile(file)
if err != nil {
Expand Down
11 changes: 5 additions & 6 deletions private/buf/bufmigrate/migrator.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ import (
"github.com/bufbuild/buf/private/pkg/storage/storagemem"
"github.com/bufbuild/buf/private/pkg/wasm"
"github.com/google/uuid"
"go.uber.org/multierr"
)

type migrator struct {
Expand Down Expand Up @@ -256,7 +255,7 @@ func (m *migrator) getOriginalAndAddedFileBuckets(
return nil, nil, err
}
defer func() {
retErr = multierr.Append(retErr, writeObjectCloser.Close())
retErr = errors.Join(retErr, writeObjectCloser.Close())
}()
if err := bufconfig.WriteBufYAMLFile(writeObjectCloser, migratedBufYAMLFile); err != nil {
return nil, nil, err
Expand All @@ -279,7 +278,7 @@ func (m *migrator) getOriginalAndAddedFileBuckets(
return nil, nil, err
}
defer func() {
retErr = multierr.Append(retErr, writeObjectCloser.Close())
retErr = errors.Join(retErr, writeObjectCloser.Close())
}()
if err := bufconfig.WriteBufLockFile(writeObjectCloser, migratedBufLockFile); err != nil {
return nil, nil, err
Expand All @@ -303,7 +302,7 @@ func (m *migrator) getOriginalAndAddedFileBuckets(
return nil, nil, err
}
defer func() {
retErr = multierr.Append(retErr, writeObjectCloser.Close())
retErr = errors.Join(retErr, writeObjectCloser.Close())
}()
if err := bufconfig.WriteBufGenYAMLFile(writeObjectCloser, migratedBufGenYAMLFile); err != nil {
return nil, nil, err
Expand Down Expand Up @@ -595,7 +594,7 @@ func resolvedDeclaredAndLockedDependencies(
return iTime.After(jTime)
})
if len(errs) > 0 {
return nil, nil, multierr.Combine(errs...)
return nil, nil, errors.Join(errs...)
}
depModuleFullNameToResolvedRef[moduleFullName] = refs[0]
}
Expand Down Expand Up @@ -623,7 +622,7 @@ func resolvedDeclaredAndLockedDependencies(
return iTime.After(jTime)
})
if len(errs) > 0 {
return nil, nil, multierr.Combine(errs...)
return nil, nil, errors.Join(errs...)
}
resolvedDepModuleKeys = append(resolvedDepModuleKeys, lockKeys[0])
}
Expand Down
4 changes: 2 additions & 2 deletions private/buf/bufprint/bufprint.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ package bufprint
import (
"context"
"encoding/json"
"errors"
"fmt"
"io"
"reflect"
Expand All @@ -32,7 +33,6 @@ import (
"github.com/bufbuild/buf/private/pkg/protostat"
"github.com/bufbuild/buf/private/pkg/stringutil"
"github.com/bufbuild/buf/private/pkg/syserror"
"go.uber.org/multierr"
"google.golang.org/protobuf/proto"
"google.golang.org/protobuf/types/known/timestamppb"
)
Expand Down Expand Up @@ -314,7 +314,7 @@ func WithTabWriter(
) (retErr error) {
tabWriter := newTabWriter(writer)
defer func() {
retErr = multierr.Append(retErr, tabWriter.Flush())
retErr = errors.Join(retErr, tabWriter.Flush())
}()
if err := tabWriter.Write(header...); err != nil {
return err
Expand Down
Loading

0 comments on commit 5c44d3e

Please sign in to comment.