From 33e392e8c286756d4d252768dfea25d7335d9aa9 Mon Sep 17 00:00:00 2001 From: SuperQ Date: Thu, 5 Mar 2026 11:45:02 +0100 Subject: [PATCH] Modernize errors Use standard library `errors.Join()` introduced in Go 1.20.0. This eliminates an external dependency. Signed-off-by: SuperQ --- api/main.go | 32 ++++++++++++++++---------------- go.mod | 3 +-- go.sum | 6 ------ 3 files changed, 17 insertions(+), 24 deletions(-) diff --git a/api/main.go b/api/main.go index 9e81fda..137f67a 100644 --- a/api/main.go +++ b/api/main.go @@ -11,7 +11,6 @@ import ( "time" "collectd.org/meta" - "go.uber.org/multierr" ) // Value represents either a Gauge or a Derive. It is Go's equivalent to the C @@ -107,31 +106,31 @@ func (vl *ValueList) DSName(index int) string { // Check does a sanity check on vl and returns any errors it finds. func (vl *ValueList) Check() error { - var err error + var errs []error if vl.Host == "" { - err = multierr.Append(err, errors.New("Host is unset")) + errs = append(errs, errors.New("Host is unset")) } if vl.Plugin == "" { - err = multierr.Append(err, errors.New("Plugin is unset")) + errs = append(errs, errors.New("Plugin is unset")) } if strings.ContainsRune(vl.Plugin, '-') { - err = multierr.Append(err, errors.New("Plugin contains '-'")) + errs = append(errs, errors.New("Plugin contains '-'")) } if vl.Type == "" { - err = multierr.Append(err, errors.New("Type is unset")) + errs = append(errs, errors.New("Type is unset")) } if strings.ContainsRune(vl.Type, '-') { - err = multierr.Append(err, errors.New("Type contains '-'")) + errs = append(errs, errors.New("Type contains '-'")) } if vl.Interval == 0 { - err = multierr.Append(err, errors.New("Interval is unset")) + errs = append(errs, errors.New("Interval is unset")) } if len(vl.Values) == 0 { - err = multierr.Append(err, errors.New("Values is unset")) + errs = append(errs, errors.New("Values is unset")) } if n, v := len(vl.DSNames), len(vl.Values); n != 0 && v != 0 && n != v { - err = multierr.Append(err, fmt.Errorf("number of values (%d) and number of DS names (%d) don't match", v, n)) + errs = append(errs, fmt.Errorf("number of values (%d) and number of DS names (%d) don't match", v, n)) } nameCount := make(map[string]int) @@ -140,11 +139,11 @@ func (vl *ValueList) Check() error { } for name, count := range nameCount { if count != 1 { - err = multierr.Append(err, fmt.Errorf("data source name %q is not unique", name)) + errs = append(errs, fmt.Errorf("data source name %q is not unique", name)) } } - return err + return errors.Join(errs...) } // Clone returns a copy of vl. @@ -235,17 +234,18 @@ func (f Fanout) Write(ctx context.Context, vl *ValueList) error { close(ch) }() - var errs error + var errs []error for { select { case err, ok := <-ch: if !ok { // channel closed, all goroutines done - return errs + return errors.Join(errs...) } - errs = multierr.Append(errs, err) + errs = append(errs, err) case <-ctx.Done(): - return multierr.Append(errs, ctx.Err()) + errs = append(errs, ctx.Err()) + return errors.Join(errs...) } } } diff --git a/go.mod b/go.mod index ad0c453..2abffec 100644 --- a/go.mod +++ b/go.mod @@ -1,11 +1,10 @@ module collectd.org -go 1.19 +go 1.20.0 require ( github.com/golang/protobuf v1.5.3 github.com/google/go-cmp v0.6.0 - go.uber.org/multierr v1.11.0 golang.org/x/net v0.19.0 google.golang.org/grpc v1.60.1 ) diff --git a/go.sum b/go.sum index ea03bd2..b191c11 100644 --- a/go.sum +++ b/go.sum @@ -1,14 +1,9 @@ -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= -go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= @@ -24,4 +19,3 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=