chore: Fix linter findings for errorlint (part2) (#12702)

Co-authored-by: Pawel Zak <Pawel Zak>
This commit is contained in:
Paweł Żak 2023-02-22 12:08:46 +01:00 committed by GitHub
parent 97f8a596e2
commit 4201f24020
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
46 changed files with 164 additions and 148 deletions

View File

@ -115,7 +115,7 @@ func (q *Quantile) Init() error {
return fmt.Errorf("unknown algorithm type %q", q.AlgorithmType) return fmt.Errorf("unknown algorithm type %q", q.AlgorithmType)
} }
if _, err := q.newAlgorithm(q.Compression); err != nil { if _, err := q.newAlgorithm(q.Compression); err != nil {
return fmt.Errorf("cannot create %q algorithm: %v", q.AlgorithmType, err) return fmt.Errorf("cannot create %q algorithm: %w", q.AlgorithmType, err)
} }
if len(q.Quantiles) == 0 { if len(q.Quantiles) == 0 {

View File

@ -133,7 +133,7 @@ func (r *Reader) Read(p []byte) (int, error) {
if r.src0 != r.src1 || r.err != nil { if r.src0 != r.src1 || r.err != nil {
var err error var err error
r.dst0 = 0 r.dst0 = 0
r.dst1, n, err = r.t.Transform(r.dst, r.src[r.src0:r.src1], r.err == io.EOF) r.dst1, n, err = r.t.Transform(r.dst, r.src[r.src0:r.src1], errors.Is(r.err, io.EOF))
r.src0 += n r.src0 += n
switch { switch {
@ -145,16 +145,16 @@ func (r *Reader) Read(p []byte) (int, error) {
// cannot read more bytes into src. // cannot read more bytes into src.
r.transformComplete = r.err != nil r.transformComplete = r.err != nil
continue continue
case err == ErrShortDst && (r.dst1 != 0 || n != 0): case errors.Is(err, ErrShortDst) && (r.dst1 != 0 || n != 0):
// Make room in dst by copying out, and try again. // Make room in dst by copying out, and try again.
continue continue
case err == ErrShortSrc && r.src1-r.src0 != len(r.src) && r.err == nil: case errors.Is(err, ErrShortSrc) && r.src1-r.src0 != len(r.src) && r.err == nil:
// Read more bytes into src via the code below, and try again. // Read more bytes into src via the code below, and try again.
default: default:
r.transformComplete = true r.transformComplete = true
// The reader error (r.err) takes precedence over the // The reader error (r.err) takes precedence over the
// transformer error (err) unless r.err is nil or io.EOF. // transformer error (err) unless r.err is nil or io.EOF.
if r.err == nil || r.err == io.EOF { if r.err == nil || errors.Is(r.err, io.EOF) {
r.err = err r.err = err
} }
continue continue

View File

@ -160,7 +160,7 @@ func (c *Client) read(requests []ReadRequest) ([]ReadResponse, error) {
var jResponses []jolokiaResponse var jResponses []jolokiaResponse
if err = json.Unmarshal(responseBody, &jResponses); err != nil { if err = json.Unmarshal(responseBody, &jResponses); err != nil {
return nil, fmt.Errorf("decoding JSON response: %s: %s", err, responseBody) return nil, fmt.Errorf("decoding JSON response: %w: %s", err, responseBody)
} }
return makeReadResponses(jResponses), nil return makeReadResponses(jResponses), nil

View File

@ -9,6 +9,7 @@ import (
"github.com/gopcua/opcua" "github.com/gopcua/opcua"
"github.com/gopcua/opcua/ua" "github.com/gopcua/opcua/ua"
"github.com/influxdata/telegraf" "github.com/influxdata/telegraf"
"github.com/influxdata/telegraf/config" "github.com/influxdata/telegraf/config"
) )
@ -184,7 +185,7 @@ func (o *OpcUAClient) Connect() error {
defer cancel() defer cancel()
if err := o.Client.Connect(ctx); err != nil { if err := o.Client.Connect(ctx); err != nil {
o.State = Disconnected o.State = Disconnected
return fmt.Errorf("error in Client Connection: %s", err) return fmt.Errorf("error in Client Connection: %w", err)
} }
o.State = Connected o.State = Connected

View File

@ -47,7 +47,7 @@ func generateCert(host string, rsaBits int, certFile, keyFile string, dur time.D
priv, err := rsa.GenerateKey(rand.Reader, rsaBits) priv, err := rsa.GenerateKey(rand.Reader, rsaBits)
if err != nil { if err != nil {
return "", "", fmt.Errorf("failed to generate private key: %s", err) return "", "", fmt.Errorf("failed to generate private key: %w", err)
} }
notBefore := time.Now() notBefore := time.Now()
@ -56,7 +56,7 @@ func generateCert(host string, rsaBits int, certFile, keyFile string, dur time.D
serialNumberLimit := new(big.Int).Lsh(big.NewInt(1), 128) serialNumberLimit := new(big.Int).Lsh(big.NewInt(1), 128)
serialNumber, err := rand.Int(rand.Reader, serialNumberLimit) serialNumber, err := rand.Int(rand.Reader, serialNumberLimit)
if err != nil { if err != nil {
return "", "", fmt.Errorf("failed to generate serial number: %s", err) return "", "", fmt.Errorf("failed to generate serial number: %w", err)
} }
template := x509.Certificate{ template := x509.Certificate{
@ -87,33 +87,33 @@ func generateCert(host string, rsaBits int, certFile, keyFile string, dur time.D
derBytes, err := x509.CreateCertificate(rand.Reader, &template, &template, publicKey(priv), priv) derBytes, err := x509.CreateCertificate(rand.Reader, &template, &template, publicKey(priv), priv)
if err != nil { if err != nil {
return "", "", fmt.Errorf("failed to create certificate: %s", err) return "", "", fmt.Errorf("failed to create certificate: %w", err)
} }
certOut, err := os.Create(certFile) certOut, err := os.Create(certFile)
if err != nil { if err != nil {
return "", "", fmt.Errorf("failed to open %s for writing: %s", certFile, err) return "", "", fmt.Errorf("failed to open %s for writing: %w", certFile, err)
} }
if err := pem.Encode(certOut, &pem.Block{Type: "CERTIFICATE", Bytes: derBytes}); err != nil { if err := pem.Encode(certOut, &pem.Block{Type: "CERTIFICATE", Bytes: derBytes}); err != nil {
return "", "", fmt.Errorf("failed to write data to %s: %s", certFile, err) return "", "", fmt.Errorf("failed to write data to %s: %w", certFile, err)
} }
if err := certOut.Close(); err != nil { if err := certOut.Close(); err != nil {
return "", "", fmt.Errorf("error closing %s: %s", certFile, err) return "", "", fmt.Errorf("error closing %s: %w", certFile, err)
} }
keyOut, err := os.OpenFile(keyFile, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600) keyOut, err := os.OpenFile(keyFile, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600)
if err != nil { if err != nil {
return "", "", fmt.Errorf("failed to open %s for writing: %s", keyFile, err) return "", "", fmt.Errorf("failed to open %s for writing: %w", keyFile, err)
} }
keyBlock, err := pemBlockForKey(priv) keyBlock, err := pemBlockForKey(priv)
if err != nil { if err != nil {
return "", "", fmt.Errorf("error generating block: %v", err) return "", "", fmt.Errorf("error generating block: %w", err)
} }
if err := pem.Encode(keyOut, keyBlock); err != nil { if err := pem.Encode(keyOut, keyBlock); err != nil {
return "", "", fmt.Errorf("failed to write data to %s: %s", keyFile, err) return "", "", fmt.Errorf("failed to write data to %s: %w", keyFile, err)
} }
if err := keyOut.Close(); err != nil { if err := keyOut.Close(); err != nil {
return "", "", fmt.Errorf("error closing %s: %s", keyFile, err) return "", "", fmt.Errorf("error closing %s: %w", keyFile, err)
} }
return certFile, keyFile, nil return certFile, keyFile, nil
@ -137,7 +137,7 @@ func pemBlockForKey(priv interface{}) (*pem.Block, error) {
case *ecdsa.PrivateKey: case *ecdsa.PrivateKey:
b, err := x509.MarshalECPrivateKey(k) b, err := x509.MarshalECPrivateKey(k)
if err != nil { if err != nil {
return nil, fmt.Errorf("unable to marshal ECDSA private key: %v", err) return nil, fmt.Errorf("unable to marshal ECDSA private key: %w", err)
} }
return &pem.Block{Type: "EC PRIVATE KEY", Bytes: b}, nil return &pem.Block{Type: "EC PRIVATE KEY", Bytes: b}, nil
default: default:
@ -282,7 +282,7 @@ func (o *OpcUAClient) generateClientOpts(endpoints []*ua.EndpointDescription) ([
// Check that the selected endpoint is a valid combo // Check that the selected endpoint is a valid combo
err = validateEndpointConfig(endpoints, secPolicy, secMode, authMode) err = validateEndpointConfig(endpoints, secPolicy, secMode, authMode)
if err != nil { if err != nil {
return nil, fmt.Errorf("error validating input: %s", err) return nil, fmt.Errorf("error validating input: %w", err)
} }
opts = append(opts, opcua.SecurityFromEndpoint(serverEndpoint, authMode)) opts = append(opts, opcua.SecurityFromEndpoint(serverEndpoint, authMode))
@ -304,13 +304,13 @@ func (o *OpcUAClient) generateAuth(a string, cert []byte, un, pw string) (ua.Use
if un == "" { if un == "" {
if err != nil { if err != nil {
return 0, nil, fmt.Errorf("error reading the username input: %s", err) return 0, nil, fmt.Errorf("error reading the username input: %w", err)
} }
} }
if pw == "" { if pw == "" {
if err != nil { if err != nil {
return 0, nil, fmt.Errorf("error reading the password input: %s", err) return 0, nil, fmt.Errorf("error reading the password input: %w", err)
} }
} }

View File

@ -110,12 +110,12 @@ func (s *Shim) writeProcessedMetrics() error {
} }
b, err := serializer.Serialize(m) b, err := serializer.Serialize(m)
if err != nil { if err != nil {
return fmt.Errorf("failed to serialize metric: %s", err) return fmt.Errorf("failed to serialize metric: %w", err)
} }
// Write this to stdout // Write this to stdout
_, err = fmt.Fprint(s.stdout, string(b)) _, err = fmt.Fprint(s.stdout, string(b))
if err != nil { if err != nil {
return fmt.Errorf("failed to write metric: %s", err) return fmt.Errorf("failed to write metric: %w", err)
} }
} }
} }

View File

@ -17,7 +17,7 @@ func (s *Shim) AddInput(input telegraf.Input) error {
if p, ok := input.(telegraf.Initializer); ok { if p, ok := input.(telegraf.Initializer); ok {
err := p.Init() err := p.Init()
if err != nil { if err != nil {
return fmt.Errorf("failed to init input: %s", err) return fmt.Errorf("failed to init input: %w", err)
} }
} }
@ -38,7 +38,7 @@ func (s *Shim) RunInput(pollInterval time.Duration) error {
if serviceInput, ok := s.Input.(telegraf.ServiceInput); ok { if serviceInput, ok := s.Input.(telegraf.ServiceInput); ok {
if err := serviceInput.Start(acc); err != nil { if err := serviceInput.Start(acc); err != nil {
return fmt.Errorf("failed to start input: %s", err) return fmt.Errorf("failed to start input: %w", err)
} }
} }
s.gatherPromptCh = make(chan empty, 1) s.gatherPromptCh = make(chan empty, 1)

View File

@ -14,7 +14,7 @@ func (s *Shim) AddOutput(output telegraf.Output) error {
if p, ok := output.(telegraf.Initializer); ok { if p, ok := output.(telegraf.Initializer); ok {
err := p.Init() err := p.Init()
if err != nil { if err != nil {
return fmt.Errorf("failed to init input: %s", err) return fmt.Errorf("failed to init input: %w", err)
} }
} }

View File

@ -1,6 +1,7 @@
package shim package shim
import ( import (
"errors"
"fmt" "fmt"
"sync" "sync"
"time" "time"
@ -24,7 +25,7 @@ func (s *Shim) AddStreamingProcessor(processor telegraf.StreamingProcessor) erro
if p, ok := processor.(telegraf.Initializer); ok { if p, ok := processor.(telegraf.Initializer); ok {
err := p.Init() err := p.Init()
if err != nil { if err != nil {
return fmt.Errorf("failed to init input: %s", err) return fmt.Errorf("failed to init input: %w", err)
} }
} }
@ -55,10 +56,11 @@ func (s *Shim) RunProcessor() error {
for { for {
m, err := parser.Next() m, err := parser.Next()
if err != nil { if err != nil {
if err == influx.EOF { if errors.Is(err, influx.EOF) {
break // stream ended break // stream ended
} }
if parseErr, isParseError := err.(*influx.ParseError); isParseError { var parseErr *influx.ParseError
if errors.As(err, &parseErr) {
fmt.Fprintf(s.stderr, "Failed to parse metric: %s\b", parseErr) fmt.Fprintf(s.stderr, "Failed to parse metric: %s\b", parseErr)
continue continue
} }

View File

@ -101,7 +101,7 @@ func builtinAttrNames(methods map[string]builtinMethod) []string {
// https://github.com/google/starlark-go/blob/master/doc/spec.md#dict·clear // https://github.com/google/starlark-go/blob/master/doc/spec.md#dict·clear
func dictClear(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { func dictClear(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
if err := starlark.UnpackPositionalArgs(b.Name(), args, kwargs, 0); err != nil { if err := starlark.UnpackPositionalArgs(b.Name(), args, kwargs, 0); err != nil {
return starlark.None, fmt.Errorf("%s: %v", b.Name(), err) return starlark.None, fmt.Errorf("%s: %w", b.Name(), err)
} }
type HasClear interface { type HasClear interface {
@ -114,14 +114,14 @@ func dictClear(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple
func dictPop(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { func dictPop(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
var k, d starlark.Value var k, d starlark.Value
if err := starlark.UnpackPositionalArgs(b.Name(), args, kwargs, 1, &k, &d); err != nil { if err := starlark.UnpackPositionalArgs(b.Name(), args, kwargs, 1, &k, &d); err != nil {
return starlark.None, fmt.Errorf("%s: %v", b.Name(), err) return starlark.None, fmt.Errorf("%s: %w", b.Name(), err)
} }
type HasDelete interface { type HasDelete interface {
Delete(k starlark.Value) (starlark.Value, bool, error) Delete(k starlark.Value) (starlark.Value, bool, error)
} }
if v, found, err := b.Receiver().(HasDelete).Delete(k); err != nil { if v, found, err := b.Receiver().(HasDelete).Delete(k); err != nil {
return starlark.None, fmt.Errorf("%s: %v", b.Name(), err) // dict is frozen or key is unhashable return starlark.None, fmt.Errorf("%s: %w", b.Name(), err) // dict is frozen or key is unhashable
} else if found { } else if found {
return v, nil return v, nil
} else if d != nil { } else if d != nil {
@ -133,7 +133,7 @@ func dictPop(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple)
// https://github.com/google/starlark-go/blob/master/doc/spec.md#dict·popitem // https://github.com/google/starlark-go/blob/master/doc/spec.md#dict·popitem
func dictPopitem(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { func dictPopitem(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
if err := starlark.UnpackPositionalArgs(b.Name(), args, kwargs, 0); err != nil { if err := starlark.UnpackPositionalArgs(b.Name(), args, kwargs, 0); err != nil {
return starlark.None, fmt.Errorf("%s: %v", b.Name(), err) return starlark.None, fmt.Errorf("%s: %w", b.Name(), err)
} }
type HasPopItem interface { type HasPopItem interface {
@ -146,10 +146,10 @@ func dictPopitem(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tup
func dictGet(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { func dictGet(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
var key, dflt starlark.Value var key, dflt starlark.Value
if err := starlark.UnpackPositionalArgs(b.Name(), args, kwargs, 1, &key, &dflt); err != nil { if err := starlark.UnpackPositionalArgs(b.Name(), args, kwargs, 1, &key, &dflt); err != nil {
return starlark.None, fmt.Errorf("%s: %v", b.Name(), err) return starlark.None, fmt.Errorf("%s: %w", b.Name(), err)
} }
if v, ok, err := b.Receiver().(starlark.Mapping).Get(key); err != nil { if v, ok, err := b.Receiver().(starlark.Mapping).Get(key); err != nil {
return starlark.None, fmt.Errorf("%s: %v", b.Name(), err) return starlark.None, fmt.Errorf("%s: %w", b.Name(), err)
} else if ok { } else if ok {
return v, nil return v, nil
} else if dflt != nil { } else if dflt != nil {
@ -162,18 +162,18 @@ func dictGet(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple)
func dictSetdefault(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { func dictSetdefault(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
var key, dflt starlark.Value = nil, starlark.None var key, dflt starlark.Value = nil, starlark.None
if err := starlark.UnpackPositionalArgs(b.Name(), args, kwargs, 1, &key, &dflt); err != nil { if err := starlark.UnpackPositionalArgs(b.Name(), args, kwargs, 1, &key, &dflt); err != nil {
return starlark.None, fmt.Errorf("%s: %v", b.Name(), err) return starlark.None, fmt.Errorf("%s: %w", b.Name(), err)
} }
recv := b.Receiver().(starlark.HasSetKey) recv := b.Receiver().(starlark.HasSetKey)
v, found, err := recv.Get(key) v, found, err := recv.Get(key)
if err != nil { if err != nil {
return starlark.None, fmt.Errorf("%s: %v", b.Name(), err) return starlark.None, fmt.Errorf("%s: %w", b.Name(), err)
} }
if !found { if !found {
v = dflt v = dflt
if err := recv.SetKey(key, dflt); err != nil { if err := recv.SetKey(key, dflt); err != nil {
return starlark.None, fmt.Errorf("%s: %v", b.Name(), err) return starlark.None, fmt.Errorf("%s: %w", b.Name(), err)
} }
} }
return v, nil return v, nil
@ -259,7 +259,7 @@ func dictUpdate(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tupl
// https://github.com/google/starlark-go/blob/master/doc/spec.md#dict·items // https://github.com/google/starlark-go/blob/master/doc/spec.md#dict·items
func dictItems(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { func dictItems(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
if err := starlark.UnpackPositionalArgs(b.Name(), args, kwargs, 0); err != nil { if err := starlark.UnpackPositionalArgs(b.Name(), args, kwargs, 0); err != nil {
return starlark.None, fmt.Errorf("%s: %v", b.Name(), err) return starlark.None, fmt.Errorf("%s: %w", b.Name(), err)
} }
items := b.Receiver().(starlark.IterableMapping).Items() items := b.Receiver().(starlark.IterableMapping).Items()
res := make([]starlark.Value, 0, len(items)) res := make([]starlark.Value, 0, len(items))
@ -272,7 +272,7 @@ func dictItems(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple
// https://github.com/google/starlark-go/blob/master/doc/spec.md#dict·keys // https://github.com/google/starlark-go/blob/master/doc/spec.md#dict·keys
func dictKeys(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { func dictKeys(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
if err := starlark.UnpackPositionalArgs(b.Name(), args, kwargs, 0); err != nil { if err := starlark.UnpackPositionalArgs(b.Name(), args, kwargs, 0); err != nil {
return starlark.None, fmt.Errorf("%s: %v", b.Name(), err) return starlark.None, fmt.Errorf("%s: %w", b.Name(), err)
} }
items := b.Receiver().(starlark.IterableMapping).Items() items := b.Receiver().(starlark.IterableMapping).Items()
@ -286,7 +286,7 @@ func dictKeys(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple)
// https://github.com/google/starlark-go/blob/master/doc/spec.md#dict·update // https://github.com/google/starlark-go/blob/master/doc/spec.md#dict·update
func dictValues(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { func dictValues(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
if err := starlark.UnpackPositionalArgs(b.Name(), args, kwargs, 0); err != nil { if err := starlark.UnpackPositionalArgs(b.Name(), args, kwargs, 0); err != nil {
return starlark.None, fmt.Errorf("%s: %v", b.Name(), err) return starlark.None, fmt.Errorf("%s: %w", b.Name(), err)
} }
items := b.Receiver().(starlark.IterableMapping).Items() items := b.Receiver().(starlark.IterableMapping).Items()
res := make([]starlark.Value, 0, len(items)) res := make([]starlark.Value, 0, len(items))

View File

@ -4,9 +4,10 @@ import (
"errors" "errors"
"fmt" "fmt"
"github.com/influxdata/telegraf"
"go.starlark.net/starlark" "go.starlark.net/starlark"
"go.starlark.net/starlarkstruct" "go.starlark.net/starlarkstruct"
"github.com/influxdata/telegraf"
) )
// Builds a module that defines all the supported logging functions which will log using the provided logger // Builds a module that defines all the supported logging functions which will log using the provided logger
@ -29,7 +30,7 @@ func LogModule(logger telegraf.Logger) *starlarkstruct.Module {
func log(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple, logger telegraf.Logger) (starlark.Value, error) { func log(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple, logger telegraf.Logger) (starlark.Value, error) {
var msg starlark.String var msg starlark.String
if err := starlark.UnpackPositionalArgs(b.Name(), args, kwargs, 1, &msg); err != nil { if err := starlark.UnpackPositionalArgs(b.Name(), args, kwargs, 1, &msg); err != nil {
return starlark.None, fmt.Errorf("%s: %v", b.Name(), err) return starlark.None, fmt.Errorf("%s: %w", b.Name(), err)
} }
switch b.Name() { switch b.Name() {
case "log.debug": case "log.debug":

View File

@ -5,12 +5,13 @@ import (
"fmt" "fmt"
"strings" "strings"
"github.com/influxdata/telegraf"
"go.starlark.net/lib/json" "go.starlark.net/lib/json"
"go.starlark.net/lib/math" "go.starlark.net/lib/math"
"go.starlark.net/lib/time" "go.starlark.net/lib/time"
"go.starlark.net/resolve" "go.starlark.net/resolve"
"go.starlark.net/starlark" "go.starlark.net/starlark"
"github.com/influxdata/telegraf"
) )
type Common struct { type Common struct {
@ -108,7 +109,7 @@ func (s *Common) addConstants(builtins *starlark.StringDict) error {
for key, val := range s.Constants { for key, val := range s.Constants {
sVal, err := asStarlarkValue(val) sVal, err := asStarlarkValue(val)
if err != nil { if err != nil {
return fmt.Errorf("converting type %T failed: %v", val, err) return fmt.Errorf("converting type %T failed: %w", val, err)
} }
(*builtins)[key] = sVal (*builtins)[key] = sVal
} }
@ -138,7 +139,8 @@ func (s *Common) Call(name string) (starlark.Value, error) {
} }
func (s *Common) LogError(err error) { func (s *Common) LogError(err error) {
if evalErr, ok := err.(*starlark.EvalError); ok { var evalErr *starlark.EvalError
if errors.As(err, &evalErr) {
for _, line := range strings.Split(evalErr.Backtrace(), "\n") { for _, line := range strings.Split(evalErr.Backtrace(), "\n") {
s.Log.Error(line) s.Log.Error(line)
} }

View File

@ -149,7 +149,7 @@ func (c *ServerConfig) TLSConfig() (*tls.Config, error) {
cipherSuites, err := ParseCiphers(c.TLSCipherSuites) cipherSuites, err := ParseCiphers(c.TLSCipherSuites)
if err != nil { if err != nil {
return nil, fmt.Errorf( return nil, fmt.Errorf(
"could not parse server cipher suites %s: %v", strings.Join(c.TLSCipherSuites, ","), err) "could not parse server cipher suites %s: %w", strings.Join(c.TLSCipherSuites, ","), err)
} }
tlsConfig.CipherSuites = cipherSuites tlsConfig.CipherSuites = cipherSuites
} }
@ -158,7 +158,7 @@ func (c *ServerConfig) TLSConfig() (*tls.Config, error) {
version, err := ParseTLSVersion(c.TLSMaxVersion) version, err := ParseTLSVersion(c.TLSMaxVersion)
if err != nil { if err != nil {
return nil, fmt.Errorf( return nil, fmt.Errorf(
"could not parse tls max version %q: %v", c.TLSMaxVersion, err) "could not parse tls max version %q: %w", c.TLSMaxVersion, err)
} }
tlsConfig.MaxVersion = version tlsConfig.MaxVersion = version
} }
@ -171,15 +171,13 @@ func (c *ServerConfig) TLSConfig() (*tls.Config, error) {
if c.TLSMinVersion != "" { if c.TLSMinVersion != "" {
version, err := ParseTLSVersion(c.TLSMinVersion) version, err := ParseTLSVersion(c.TLSMinVersion)
if err != nil { if err != nil {
return nil, fmt.Errorf( return nil, fmt.Errorf("could not parse tls min version %q: %w", c.TLSMinVersion, err)
"could not parse tls min version %q: %v", c.TLSMinVersion, err)
} }
tlsConfig.MinVersion = version tlsConfig.MinVersion = version
} }
if tlsConfig.MinVersion != 0 && tlsConfig.MaxVersion != 0 && tlsConfig.MinVersion > tlsConfig.MaxVersion { if tlsConfig.MinVersion != 0 && tlsConfig.MaxVersion != 0 && tlsConfig.MinVersion > tlsConfig.MaxVersion {
return nil, fmt.Errorf( return nil, fmt.Errorf("tls min version %q can't be greater than tls max version %q", tlsConfig.MinVersion, tlsConfig.MaxVersion)
"tls min version %q can't be greater than tls max version %q", tlsConfig.MinVersion, tlsConfig.MaxVersion)
} }
// Since clientAuth is tlsConfig.ClientAuth = tls.RequireAndVerifyClientCert // Since clientAuth is tlsConfig.ClientAuth = tls.RequireAndVerifyClientCert
@ -196,12 +194,10 @@ func makeCertPool(certFiles []string) (*x509.CertPool, error) {
for _, certFile := range certFiles { for _, certFile := range certFiles {
pem, err := os.ReadFile(certFile) pem, err := os.ReadFile(certFile)
if err != nil { if err != nil {
return nil, fmt.Errorf( return nil, fmt.Errorf("could not read certificate %q: %w", certFile, err)
"could not read certificate %q: %v", certFile, err)
} }
if !pool.AppendCertsFromPEM(pem) { if !pool.AppendCertsFromPEM(pem) {
return nil, fmt.Errorf( return nil, fmt.Errorf("could not parse any PEM certificates %q: %w", certFile, err)
"could not parse any PEM certificates %q: %v", certFile, err)
} }
} }
return pool, nil return pool, nil
@ -210,8 +206,7 @@ func makeCertPool(certFiles []string) (*x509.CertPool, error) {
func loadCertificate(config *tls.Config, certFile, keyFile string) error { func loadCertificate(config *tls.Config, certFile, keyFile string) error {
cert, err := tls.LoadX509KeyPair(certFile, keyFile) cert, err := tls.LoadX509KeyPair(certFile, keyFile)
if err != nil { if err != nil {
return fmt.Errorf( return fmt.Errorf("could not load keypair %s:%s: %w", certFile, keyFile, err)
"could not load keypair %s:%s: %v", certFile, keyFile, err)
} }
config.Certificates = []tls.Certificate{cert} config.Certificates = []tls.Certificate{cert}
@ -223,7 +218,7 @@ func (c *ServerConfig) verifyPeerCertificate(rawCerts [][]byte, _ [][]*x509.Cert
// Let's review the client certificate. // Let's review the client certificate.
cert, err := x509.ParseCertificate(rawCerts[0]) cert, err := x509.ParseCertificate(rawCerts[0])
if err != nil { if err != nil {
return fmt.Errorf("could not validate peer certificate: %v", err) return fmt.Errorf("could not validate peer certificate: %w", err)
} }
for _, name := range cert.DNSNames { for _, name := range cert.DNSNames {

View File

@ -68,7 +68,7 @@ func (p *Parser) Init() error {
func (p *Parser) Parse(buf []byte) ([]telegraf.Metric, error) { func (p *Parser) Parse(buf []byte) ([]telegraf.Metric, error) {
valueLists, err := network.Parse(buf, p.popts) valueLists, err := network.Parse(buf, p.popts)
if err != nil { if err != nil {
return nil, fmt.Errorf("collectd parser error: %s", err) return nil, fmt.Errorf("collectd parser error: %w", err)
} }
metrics := []telegraf.Metric{} metrics := []telegraf.Metric{}

View File

@ -163,7 +163,7 @@ func (p *Parser) Init() error {
} }
if err := p.initializeMetadataSeparators(); err != nil { if err := p.initializeMetadataSeparators(); err != nil {
return fmt.Errorf("initializing separators failed: %v", err) return fmt.Errorf("initializing separators failed: %w", err)
} }
if p.TimeFunc == nil { if p.TimeFunc == nil {
@ -393,17 +393,17 @@ outer:
case "int": case "int":
val, err = strconv.ParseInt(value, 10, 64) val, err = strconv.ParseInt(value, 10, 64)
if err != nil { if err != nil {
return nil, fmt.Errorf("column type: parse int error %s", err) return nil, fmt.Errorf("column type: parse int error %w", err)
} }
case "float": case "float":
val, err = strconv.ParseFloat(value, 64) val, err = strconv.ParseFloat(value, 64)
if err != nil { if err != nil {
return nil, fmt.Errorf("column type: parse float error %s", err) return nil, fmt.Errorf("column type: parse float error %w", err)
} }
case "bool": case "bool":
val, err = strconv.ParseBool(value) val, err = strconv.ParseBool(value)
if err != nil { if err != nil {
return nil, fmt.Errorf("column type: parse bool error %s", err) return nil, fmt.Errorf("column type: parse bool error %w", err)
} }
default: default:
val = value val = value

View File

@ -128,7 +128,7 @@ func (p *Parser) parseTime(buf []byte) (time.Time, error) {
} }
t, err := time.Parse(timeFormat, timeString) t, err := time.Parse(timeFormat, timeString)
if err != nil { if err != nil {
return time.Time{}, fmt.Errorf("time %s cannot be parsed with format %s, %s", timeString, timeFormat, err) return time.Time{}, fmt.Errorf("time %s cannot be parsed with format %s, %w", timeString, timeFormat, err)
} }
return t.UTC(), nil return t.UTC(), nil
} }
@ -154,7 +154,7 @@ func (p *Parser) unmarshalMetrics(buf []byte) (map[string]interface{}, error) {
var jsonOut map[string]interface{} var jsonOut map[string]interface{}
err := json.Unmarshal(registryBytes, &jsonOut) err := json.Unmarshal(registryBytes, &jsonOut)
if err != nil { if err != nil {
err = fmt.Errorf("unable to parse dropwizard metric registry from JSON document, %s", err) err = fmt.Errorf("unable to parse dropwizard metric registry from JSON document, %w", err)
return nil, err return nil, err
} }
return jsonOut, nil return jsonOut, nil

View File

@ -108,7 +108,7 @@ func (p *Parser) ParseLine(line string) (telegraf.Metric, error) {
// Parse value. // Parse value.
v, err := strconv.ParseFloat(fields[1], 64) v, err := strconv.ParseFloat(fields[1], 64)
if err != nil { if err != nil {
return nil, fmt.Errorf(`field "%s" value: %s`, fields[0], err) return nil, fmt.Errorf(`field "%s" value: %w`, fields[0], err)
} }
fieldValues := map[string]interface{}{} fieldValues := map[string]interface{}{}
@ -125,7 +125,7 @@ func (p *Parser) ParseLine(line string) (telegraf.Metric, error) {
// Parse timestamp. // Parse timestamp.
unixTime, err := strconv.ParseFloat(fields[2], 64) unixTime, err := strconv.ParseFloat(fields[2], 64)
if err != nil { if err != nil {
return nil, fmt.Errorf(`field "%s" time: %s`, fields[0], err) return nil, fmt.Errorf(`field "%s" time: %w`, fields[0], err)
} }
// -1 is a special value that gets converted to current UTC time // -1 is a special value that gets converted to current UTC time

View File

@ -62,8 +62,9 @@ func (h *MetricHandler) AddInt(key []byte, value []byte) error {
fk := unescape(key) fk := unescape(key)
fv, err := parseIntBytes(bytes.TrimSuffix(value, []byte("i")), 10, 64) fv, err := parseIntBytes(bytes.TrimSuffix(value, []byte("i")), 10, 64)
if err != nil { if err != nil {
if numerr, ok := err.(*strconv.NumError); ok { var numErr *strconv.NumError
return numerr.Err if errors.As(err, &numErr) {
return numErr.Err
} }
return err return err
} }
@ -75,8 +76,9 @@ func (h *MetricHandler) AddUint(key []byte, value []byte) error {
fk := unescape(key) fk := unescape(key)
fv, err := parseUintBytes(bytes.TrimSuffix(value, []byte("u")), 10, 64) fv, err := parseUintBytes(bytes.TrimSuffix(value, []byte("u")), 10, 64)
if err != nil { if err != nil {
if numerr, ok := err.(*strconv.NumError); ok { var numErr *strconv.NumError
return numerr.Err if errors.As(err, &numErr) {
return numErr.Err
} }
return err return err
} }
@ -88,8 +90,9 @@ func (h *MetricHandler) AddFloat(key []byte, value []byte) error {
fk := unescape(key) fk := unescape(key)
fv, err := parseFloatBytes(value, 64) fv, err := parseFloatBytes(value, 64)
if err != nil { if err != nil {
if numerr, ok := err.(*strconv.NumError); ok { var numErr *strconv.NumError
return numerr.Err if errors.As(err, &numErr) {
return numErr.Err
} }
return err return err
} }
@ -117,8 +120,9 @@ func (h *MetricHandler) AddBool(key []byte, value []byte) error {
func (h *MetricHandler) SetTimestamp(tm []byte) error { func (h *MetricHandler) SetTimestamp(tm []byte) error {
v, err := parseIntBytes(tm, 10, 64) v, err := parseIntBytes(tm, 10, 64)
if err != nil { if err != nil {
if numerr, ok := err.(*strconv.NumError); ok { var numErr *strconv.NumError
return numerr.Err if errors.As(err, &numErr) {
return numErr.Err
} }
return err return err
} }

View File

@ -8,6 +8,7 @@ import (
"time" "time"
"github.com/influxdata/line-protocol/v2/lineprotocol" "github.com/influxdata/line-protocol/v2/lineprotocol"
"github.com/influxdata/telegraf" "github.com/influxdata/telegraf"
"github.com/influxdata/telegraf/metric" "github.com/influxdata/telegraf/metric"
"github.com/influxdata/telegraf/plugins/parsers" "github.com/influxdata/telegraf/plugins/parsers"
@ -88,13 +89,13 @@ func (e *ParseError) Error() string {
// convertToParseError attempts to convert a lineprotocol.DecodeError to a ParseError // convertToParseError attempts to convert a lineprotocol.DecodeError to a ParseError
func convertToParseError(input []byte, rawErr error) error { func convertToParseError(input []byte, rawErr error) error {
err, ok := rawErr.(*lineprotocol.DecodeError) var decErr *lineprotocol.DecodeError
if !ok { if !errors.As(rawErr, &decErr) {
return rawErr return rawErr
} }
return &ParseError{ return &ParseError{
DecodeError: err, DecodeError: decErr,
buf: string(input), buf: string(input),
} }
} }
@ -249,7 +250,7 @@ func (sp *StreamParser) SetTimePrecision(u time.Duration) error {
// function if it returns ParseError to get the next metric or error. // function if it returns ParseError to get the next metric or error.
func (sp *StreamParser) Next() (telegraf.Metric, error) { func (sp *StreamParser) Next() (telegraf.Metric, error) {
if !sp.decoder.Next() { if !sp.decoder.Next() {
if err := sp.decoder.Err(); err != nil && err != sp.lastError { if err := sp.decoder.Err(); err != nil && !errors.Is(err, sp.lastError) {
sp.lastError = err sp.lastError = err
return nil, err return nil, err
} }

View File

@ -659,7 +659,7 @@ func TestStreamParser(t *testing.T) {
for { for {
m, err := parser.Next() m, err := parser.Next()
if err != nil { if err != nil {
if err == ErrEOF { if errors.Is(err, ErrEOF) {
break break
} }
require.Equal(t, tt.err.Error(), err.Error()) require.Equal(t, tt.err.Error(), err.Error())
@ -849,7 +849,7 @@ func TestStreamParserErrorString(t *testing.T) {
var errs []error var errs []error
for i := 0; i < 20; i++ { for i := 0; i < 20; i++ {
_, err := parser.Next() _, err := parser.Next()
if err == ErrEOF { if errors.Is(err, ErrEOF) {
break break
} }

View File

@ -1710,7 +1710,7 @@ func TestMachine(t *testing.T) {
for i := 0; i < 20; i++ { for i := 0; i < 20; i++ {
err := fsm.Next() err := fsm.Next()
if err != nil && err == influx.EOF { if err != nil && errors.Is(err, influx.EOF) {
break break
} }
handler.Result(err) handler.Result(err)
@ -2138,7 +2138,7 @@ func TestHandlerErrorRecovery(t *testing.T) {
for i := 0; i < 20; i++ { for i := 0; i < 20; i++ {
err := fsm.Next() err := fsm.Next()
if err != nil && err == influx.EOF { if err != nil && errors.Is(err, influx.EOF) {
break break
} }
tt.handler.Result(err) tt.handler.Result(err)
@ -2177,7 +2177,7 @@ func TestStreamMachine(t *testing.T) {
// isn't terminated. // isn't terminated.
for i := 0; i < 20; i++ { for i := 0; i < 20; i++ {
err := fsm.Next() err := fsm.Next()
if err != nil && err == influx.EOF { if err != nil && errors.Is(err, influx.EOF) {
break break
} }
handler.Result(err) handler.Result(err)

View File

@ -85,7 +85,7 @@ func (p *Parser) Parse(input []byte) ([]telegraf.Metric, error) {
for { for {
err := p.machine.Next() err := p.machine.Next()
if err == EOF { if errors.Is(err, EOF) {
break break
} }
@ -203,11 +203,12 @@ func (sp *StreamParser) SetTimePrecision(u time.Duration) {
// function if it returns ParseError to get the next metric or error. // function if it returns ParseError to get the next metric or error.
func (sp *StreamParser) Next() (telegraf.Metric, error) { func (sp *StreamParser) Next() (telegraf.Metric, error) {
err := sp.machine.Next() err := sp.machine.Next()
if err == EOF { if errors.Is(err, EOF) {
return nil, err return nil, err
} }
if e, ok := err.(*readErr); ok { var e *readErr
if errors.As(err, &e) {
return nil, e.Err return nil, e.Err
} }

View File

@ -629,7 +629,7 @@ func TestStreamParser(t *testing.T) {
for { for {
m, err := parser.Next() m, err := parser.Next()
if err != nil { if err != nil {
if err == EOF { if errors.Is(err, EOF) {
break break
} }
require.Equal(t, tt.err, err) require.Equal(t, tt.err, err)
@ -816,7 +816,7 @@ func TestStreamParserErrorString(t *testing.T) {
var errs []error var errs []error
for i := 0; i < 20; i++ { for i := 0; i < 20; i++ {
_, err := parser.Next() _, err := parser.Next()
if err == EOF { if errors.Is(err, EOF) {
break break
} }

View File

@ -161,12 +161,12 @@ func (p *Parser) Init() error {
p.stringFilter, err = filter.Compile(p.StringFields) p.stringFilter, err = filter.Compile(p.StringFields)
if err != nil { if err != nil {
return fmt.Errorf("compiling string-fields filter failed: %v", err) return fmt.Errorf("compiling string-fields filter failed: %w", err)
} }
p.tagFilter, err = filter.Compile(p.TagKeys) p.tagFilter, err = filter.Compile(p.TagKeys)
if err != nil { if err != nil {
return fmt.Errorf("compiling tag-key filter failed: %v", err) return fmt.Errorf("compiling tag-key filter failed: %w", err)
} }
return nil return nil

View File

@ -75,7 +75,7 @@ func (p *Parser) Parse(input []byte) ([]telegraf.Metric, error) {
body, _ := utfbom.Skip(reader) body, _ := utfbom.Skip(reader)
input, err := io.ReadAll(body) input, err := io.ReadAll(body)
if err != nil { if err != nil {
return nil, fmt.Errorf("unable to read body after BOM removal: %v", err) return nil, fmt.Errorf("unable to read body after BOM removal: %w", err)
} }
// Only valid JSON is supported // Only valid JSON is supported
@ -102,7 +102,7 @@ func (p *Parser) Parse(input []byte) ([]telegraf.Metric, error) {
if result.Type == gjson.Null { if result.Type == gjson.Null {
p.Log.Debugf("Message: %s", input) p.Log.Debugf("Message: %s", input)
return nil, fmt.Errorf("The timestamp path %s returned NULL", c.TimestampPath) return nil, fmt.Errorf("the timestamp path %s returned NULL", c.TimestampPath)
} }
if !result.IsArray() && !result.IsObject() { if !result.IsArray() && !result.IsObject() {
if c.TimestampFormat == "" { if c.TimestampFormat == "" {
@ -586,25 +586,25 @@ func (p *Parser) convertType(input gjson.Result, desiredType string, name string
case "uint": case "uint":
r, err := strconv.ParseUint(inputType, 10, 64) r, err := strconv.ParseUint(inputType, 10, 64)
if err != nil { if err != nil {
return nil, fmt.Errorf("Unable to convert field '%s' to type uint: %v", name, err) return nil, fmt.Errorf("unable to convert field '%s' to type uint: %w", name, err)
} }
return r, nil return r, nil
case "int": case "int":
r, err := strconv.ParseInt(inputType, 10, 64) r, err := strconv.ParseInt(inputType, 10, 64)
if err != nil { if err != nil {
return nil, fmt.Errorf("Unable to convert field '%s' to type int: %v", name, err) return nil, fmt.Errorf("unable to convert field '%s' to type int: %w", name, err)
} }
return r, nil return r, nil
case "float": case "float":
r, err := strconv.ParseFloat(inputType, 64) r, err := strconv.ParseFloat(inputType, 64)
if err != nil { if err != nil {
return nil, fmt.Errorf("Unable to convert field '%s' to type float: %v", name, err) return nil, fmt.Errorf("unable to convert field '%s' to type float: %w", name, err)
} }
return r, nil return r, nil
case "bool": case "bool":
r, err := strconv.ParseBool(inputType) r, err := strconv.ParseBool(inputType)
if err != nil { if err != nil {
return nil, fmt.Errorf("Unable to convert field '%s' to type bool: %v", name, err) return nil, fmt.Errorf("unable to convert field '%s' to type bool: %w", name, err)
} }
return r, nil return r, nil
} }
@ -639,7 +639,7 @@ func (p *Parser) convertType(input gjson.Result, desiredType string, name string
} else if inputType == 1 { } else if inputType == 1 {
return true, nil return true, nil
} else { } else {
return nil, fmt.Errorf("Unable to convert field '%s' to type bool", name) return nil, fmt.Errorf("unable to convert field '%s' to type bool", name)
} }
} }
default: default:

View File

@ -1,6 +1,6 @@
the path wrong doesn't exist the path wrong doesn't exist
the path wrong doesn't exist the path wrong doesn't exist
the path wrong doesn't exist the path wrong doesn't exist
The timestamp path wrong returned NULL the timestamp path wrong returned NULL
the path wrong doesn't exist the path wrong doesn't exist
the path wrong doesn't exist the path wrong doesn't exist

View File

@ -27,8 +27,8 @@ func getExitCode(err error) (int, error) {
return 0, nil return 0, nil
} }
ee, ok := err.(*exec.ExitError) var ee *exec.ExitError
if !ok { if !errors.As(err, &ee) {
return unknownExitCode, err return unknownExitCode, err
} }

View File

@ -3,6 +3,7 @@ package prometheus
import ( import (
"bufio" "bufio"
"bytes" "bytes"
"errors"
"fmt" "fmt"
"io" "io"
"math" "math"
@ -50,17 +51,17 @@ func (p *Parser) Parse(buf []byte) ([]telegraf.Metric, error) {
for { for {
mf := &dto.MetricFamily{} mf := &dto.MetricFamily{}
if _, ierr := pbutil.ReadDelimited(reader, mf); ierr != nil { if _, ierr := pbutil.ReadDelimited(reader, mf); ierr != nil {
if ierr == io.EOF { if errors.Is(ierr, io.EOF) {
break break
} }
return nil, fmt.Errorf("reading metric family protocol buffer failed: %s", ierr) return nil, fmt.Errorf("reading metric family protocol buffer failed: %w", ierr)
} }
metricFamilies[mf.GetName()] = mf metricFamilies[mf.GetName()] = mf
} }
} else { } else {
metricFamilies, err = parser.TextToMetricFamilies(reader) metricFamilies, err = parser.TextToMetricFamilies(reader)
if err != nil { if err != nil {
return nil, fmt.Errorf("reading text format failed: %s", err) return nil, fmt.Errorf("reading text format failed: %w", err)
} }
} }

View File

@ -23,7 +23,7 @@ func (p *Parser) Parse(buf []byte) ([]telegraf.Metric, error) {
var req prompb.WriteRequest var req prompb.WriteRequest
if err := req.Unmarshal(buf); err != nil { if err := req.Unmarshal(buf); err != nil {
return nil, fmt.Errorf("unable to unmarshal request body: %s", err) return nil, fmt.Errorf("unable to unmarshal request body: %w", err)
} }
now := time.Now() now := time.Now()
@ -70,11 +70,11 @@ func (p *Parser) ParseLine(line string) (telegraf.Metric, error) {
} }
if len(metrics) < 1 { if len(metrics) < 1 {
return nil, fmt.Errorf("No metrics in line") return nil, fmt.Errorf("no metrics in line")
} }
if len(metrics) > 1 { if len(metrics) > 1 {
return nil, fmt.Errorf("More than one metric in line") return nil, fmt.Errorf("more than one metric in line")
} }
return metrics[0], nil return metrics[0], nil

View File

@ -92,7 +92,7 @@ func (ep *TimestampParser) parse(p *PointParser, pt *Point) error {
} }
p.writeBuf.Reset() p.writeBuf.Reset()
for tok != EOF && tok == Number { for tok == Number {
if _, err := p.writeBuf.WriteString(lit); err != nil { if _, err := p.writeBuf.WriteString(lit); err != nil {
return fmt.Errorf("unable to write: %w", err) return fmt.Errorf("unable to write: %w", err)
} }
@ -136,7 +136,7 @@ func (ep *LoopedParser) parse(p *PointParser, pt *Point) error {
return err return err
} }
err = ep.wsParser.parse(p, pt) err = ep.wsParser.parse(p, pt)
if err == ErrEOF { if errors.Is(err, ErrEOF) {
break break
} }
} }
@ -170,7 +170,7 @@ func (ep *TagParser) parse(p *PointParser, pt *Point) error {
func (ep *WhiteSpaceParser) parse(p *PointParser, _ *Point) error { func (ep *WhiteSpaceParser) parse(p *PointParser, _ *Point) error {
tok := Ws tok := Ws
for tok != EOF && tok == Ws { for tok == Ws {
tok, _ = p.scan() tok, _ = p.scan()
} }

View File

@ -4,10 +4,9 @@ import (
"bytes" "bytes"
"fmt" "fmt"
"github.com/tinylib/msgp/msgp"
"github.com/antchfx/jsonquery" "github.com/antchfx/jsonquery"
path "github.com/antchfx/xpath" path "github.com/antchfx/xpath"
"github.com/tinylib/msgp/msgp"
) )
type msgpackDocument jsonDocument type msgpackDocument jsonDocument
@ -17,7 +16,7 @@ func (d *msgpackDocument) Parse(buf []byte) (dataNode, error) {
// Unmarshal the message-pack binary message to JSON and proceed with the jsonquery class // Unmarshal the message-pack binary message to JSON and proceed with the jsonquery class
if _, err := msgp.UnmarshalAsJSON(&json, buf); err != nil { if _, err := msgp.UnmarshalAsJSON(&json, buf); err != nil {
return nil, fmt.Errorf("unmarshalling to json failed: %v", err) return nil, fmt.Errorf("unmarshalling to json failed: %w", err)
} }
return jsonquery.Parse(&json) return jsonquery.Parse(&json)
} }

View File

@ -212,7 +212,7 @@ func (p *Parser) parseQuery(starttime time.Time, doc, selected dataNode, config
if len(config.MetricQuery) > 0 { if len(config.MetricQuery) > 0 {
v, err := p.executeQuery(doc, selected, config.MetricQuery) v, err := p.executeQuery(doc, selected, config.MetricQuery)
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to query metric name: %v", err) return nil, fmt.Errorf("failed to query metric name: %w", err)
} }
var ok bool var ok bool
if metricname, ok = v.(string); !ok { if metricname, ok = v.(string); !ok {
@ -229,7 +229,7 @@ func (p *Parser) parseQuery(starttime time.Time, doc, selected dataNode, config
if len(config.Timestamp) > 0 { if len(config.Timestamp) > 0 {
v, err := p.executeQuery(doc, selected, config.Timestamp) v, err := p.executeQuery(doc, selected, config.Timestamp)
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to query timestamp: %v", err) return nil, fmt.Errorf("failed to query timestamp: %w", err)
} }
if v != nil { if v != nil {
timestamp, err = internal.ParseTimestamp(config.TimestampFmt, v, "") timestamp, err = internal.ParseTimestamp(config.TimestampFmt, v, "")
@ -245,7 +245,7 @@ func (p *Parser) parseQuery(starttime time.Time, doc, selected dataNode, config
// Execute the query and cast the returned values into strings // Execute the query and cast the returned values into strings
v, err := p.executeQuery(doc, selected, query) v, err := p.executeQuery(doc, selected, query)
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to query tag '%s': %v", name, err) return nil, fmt.Errorf("failed to query tag '%s': %w", name, err)
} }
switch v := v.(type) { switch v := v.(type) {
case string: case string:
@ -282,7 +282,7 @@ func (p *Parser) parseQuery(starttime time.Time, doc, selected dataNode, config
for _, selectedtag := range selectedTagNodes { for _, selectedtag := range selectedTagNodes {
n, err := p.executeQuery(doc, selectedtag, tagnamequery) n, err := p.executeQuery(doc, selectedtag, tagnamequery)
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to query tag name with query '%s': %v", tagnamequery, err) return nil, fmt.Errorf("failed to query tag name with query '%s': %w", tagnamequery, err)
} }
name, ok := n.(string) name, ok := n.(string)
if !ok { if !ok {
@ -290,7 +290,7 @@ func (p *Parser) parseQuery(starttime time.Time, doc, selected dataNode, config
} }
v, err := p.executeQuery(doc, selectedtag, tagvaluequery) v, err := p.executeQuery(doc, selectedtag, tagvaluequery)
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to query tag value for '%s': %v", name, err) return nil, fmt.Errorf("failed to query tag value for '%s': %w", name, err)
} }
if config.TagNameExpand { if config.TagNameExpand {
@ -333,13 +333,13 @@ func (p *Parser) parseQuery(starttime time.Time, doc, selected dataNode, config
// Execute the query and cast the returned values into integers // Execute the query and cast the returned values into integers
v, err := p.executeQuery(doc, selected, query) v, err := p.executeQuery(doc, selected, query)
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to query field (int) '%s': %v", name, err) return nil, fmt.Errorf("failed to query field (int) '%s': %w", name, err)
} }
switch v := v.(type) { switch v := v.(type) {
case string: case string:
fields[name], err = strconv.ParseInt(v, 10, 54) fields[name], err = strconv.ParseInt(v, 10, 54)
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to parse field (int) '%s': %v", name, err) return nil, fmt.Errorf("failed to parse field (int) '%s': %w", name, err)
} }
case bool: case bool:
fields[name] = int64(0) fields[name] = int64(0)
@ -359,7 +359,7 @@ func (p *Parser) parseQuery(starttime time.Time, doc, selected dataNode, config
// Execute the query and store the result in fields // Execute the query and store the result in fields
v, err := p.executeQuery(doc, selected, query) v, err := p.executeQuery(doc, selected, query)
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to query field '%s': %v", name, err) return nil, fmt.Errorf("failed to query field '%s': %w", name, err)
} }
fields[name] = v fields[name] = v
} }
@ -385,7 +385,7 @@ func (p *Parser) parseQuery(starttime time.Time, doc, selected dataNode, config
for _, selectedfield := range selectedFieldNodes { for _, selectedfield := range selectedFieldNodes {
n, err := p.executeQuery(doc, selectedfield, fieldnamequery) n, err := p.executeQuery(doc, selectedfield, fieldnamequery)
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to query field name with query '%s': %v", fieldnamequery, err) return nil, fmt.Errorf("failed to query field name with query '%s': %w", fieldnamequery, err)
} }
name, ok := n.(string) name, ok := n.(string)
if !ok { if !ok {
@ -393,7 +393,7 @@ func (p *Parser) parseQuery(starttime time.Time, doc, selected dataNode, config
} }
v, err := p.executeQuery(doc, selectedfield, fieldvaluequery) v, err := p.executeQuery(doc, selectedfield, fieldvaluequery)
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to query field value for '%s': %v", name, err) return nil, fmt.Errorf("failed to query field value for '%s': %w", name, err)
} }
if config.FieldNameExpand { if config.FieldNameExpand {
@ -439,7 +439,7 @@ func (p *Parser) executeQuery(doc, selected dataNode, query string) (r interface
// Compile the query // Compile the query
expr, err := path.Compile(query) expr, err := path.Compile(query)
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to compile query '%s': %v", query, err) return nil, fmt.Errorf("failed to compile query '%s': %w", query, err)
} }
// Evaluate the compiled expression and handle returned node-iterators // Evaluate the compiled expression and handle returned node-iterators

View File

@ -43,7 +43,7 @@ func (d *protobufDocument) Init() error {
} }
fds, err := parser.ParseFiles(d.MessageDefinition) fds, err := parser.ParseFiles(d.MessageDefinition)
if err != nil { if err != nil {
return fmt.Errorf("parsing protocol-buffer definition in %q failed: %v", d.MessageDefinition, err) return fmt.Errorf("parsing protocol-buffer definition in %q failed: %w", d.MessageDefinition, err)
} }
if len(fds) < 1 { if len(fds) < 1 {
return fmt.Errorf("file %q does not contain file descriptors", d.MessageDefinition) return fmt.Errorf("file %q does not contain file descriptors", d.MessageDefinition)
@ -52,7 +52,7 @@ func (d *protobufDocument) Init() error {
// Register all definitions in the file in the global registry // Register all definitions in the file in the global registry
registry, err := protodesc.NewFiles(desc.ToFileDescriptorSet(fds...)) registry, err := protodesc.NewFiles(desc.ToFileDescriptorSet(fds...))
if err != nil { if err != nil {
return fmt.Errorf("constructing registry failed: %v", err) return fmt.Errorf("constructing registry failed: %w", err)
} }
// Lookup given type in the loaded file descriptors // Lookup given type in the loaded file descriptors

View File

@ -47,7 +47,7 @@ func (mapper *EnumMapper) Init() error {
if mapping.Tag != "" { if mapping.Tag != "" {
tagFilter, err := filter.NewIncludeExcludeFilter([]string{mapping.Tag}, nil) tagFilter, err := filter.NewIncludeExcludeFilter([]string{mapping.Tag}, nil)
if err != nil { if err != nil {
return fmt.Errorf("failed to create new tag filter: %s", err) return fmt.Errorf("failed to create new tag filter: %w", err)
} }
mapper.TagFilters[mapping.Tag] = tagFilter mapper.TagFilters[mapping.Tag] = tagFilter
} }

View File

@ -139,11 +139,12 @@ func (e *Execd) cmdReadOutStream(out io.Reader) {
if err != nil { if err != nil {
// Stop parsing when we've reached the end. // Stop parsing when we've reached the end.
if err == influx.EOF { if errors.Is(err, influx.EOF) {
break break
} }
if parseErr, isParseError := err.(*influx.ParseError); isParseError { var parseErr *influx.ParseError
if errors.As(err, &parseErr) {
// Continue past parse errors. // Continue past parse errors.
e.acc.AddError(parseErr) e.acc.AddError(parseErr)
continue continue

View File

@ -1,6 +1,7 @@
package execd package execd
import ( import (
"errors"
"flag" "flag"
"fmt" "fmt"
"os" "os"
@ -156,10 +157,11 @@ func runCountMultiplierProgram() {
for { for {
m, err := parser.Next() m, err := parser.Next()
if err != nil { if err != nil {
if err == influx.EOF { if errors.Is(err, influx.EOF) {
return // stream ended return // stream ended
} }
if parseErr, isParseError := err.(*influx.ParseError); isParseError { var parseErr *influx.ParseError
if errors.As(err, &parseErr) {
fmt.Fprintf(os.Stderr, "parse ERR %v\n", parseErr) fmt.Fprintf(os.Stderr, "parse ERR %v\n", parseErr)
//nolint:revive // os.Exit called intentionally //nolint:revive // os.Exit called intentionally
os.Exit(1) os.Exit(1)

View File

@ -144,11 +144,11 @@ func (d *IfName) Start(acc telegraf.Accumulator) error {
d.ifTable, err = d.makeTable("1.3.6.1.2.1.2.2.1.2") d.ifTable, err = d.makeTable("1.3.6.1.2.1.2.2.1.2")
if err != nil { if err != nil {
return fmt.Errorf("preparing ifTable: %v", err) return fmt.Errorf("preparing ifTable: %w", err)
} }
d.ifXTable, err = d.makeTable("1.3.6.1.2.1.31.1.1.1.1") d.ifXTable, err = d.makeTable("1.3.6.1.2.1.31.1.1.1.1")
if err != nil { if err != nil {
return fmt.Errorf("preparing ifXTable: %v", err) return fmt.Errorf("preparing ifXTable: %w", err)
} }
fn := func(m telegraf.Metric) []telegraf.Metric { fn := func(m telegraf.Metric) []telegraf.Metric {

View File

@ -94,7 +94,7 @@ func (*Noise) SampleConfig() string {
func (p *Noise) Init() error { func (p *Noise) Init() error {
fieldFilter, err := filter.NewIncludeExcludeFilter(p.IncludeFields, p.ExcludeFields) fieldFilter, err := filter.NewIncludeExcludeFilter(p.IncludeFields, p.ExcludeFields)
if err != nil { if err != nil {
return fmt.Errorf("creating fieldFilter failed: %v", err) return fmt.Errorf("creating fieldFilter failed: %w", err)
} }
p.fieldFilter = fieldFilter p.fieldFilter = fieldFilter

View File

@ -61,7 +61,7 @@ func (r *Regex) Init() error {
c.ResultKey = "keep" c.ResultKey = "keep"
} }
if err := choice.Check(c.ResultKey, resultOptions); err != nil { if err := choice.Check(c.ResultKey, resultOptions); err != nil {
return fmt.Errorf("invalid metrics result_key: %v", err) return fmt.Errorf("invalid metrics result_key: %w", err)
} }
if _, compiled := r.regexCache[c.Pattern]; !compiled { if _, compiled := r.regexCache[c.Pattern]; !compiled {
@ -78,7 +78,7 @@ func (r *Regex) Init() error {
c.ResultKey = "keep" c.ResultKey = "keep"
} }
if err := choice.Check(c.ResultKey, resultOptions); err != nil { if err := choice.Check(c.ResultKey, resultOptions); err != nil {
return fmt.Errorf("invalid metrics result_key: %v", err) return fmt.Errorf("invalid metrics result_key: %w", err)
} }
if _, compiled := r.regexCache[c.Pattern]; !compiled { if _, compiled := r.regexCache[c.Pattern]; !compiled {

View File

@ -91,7 +91,7 @@ func (t *TopK) generateGroupByKey(m telegraf.Metric) (string, error) {
var err error var err error
t.tagsGlobs, err = filter.Compile(t.GroupBy) t.tagsGlobs, err = filter.Compile(t.GroupBy)
if err != nil { if err != nil {
return "", fmt.Errorf("could not compile pattern: %v %v", t.GroupBy, err) return "", fmt.Errorf("could not compile pattern: %v %w", t.GroupBy, err)
} }
} }

View File

@ -7,6 +7,7 @@ import (
"fmt" "fmt"
"github.com/99designs/keyring" "github.com/99designs/keyring"
"github.com/influxdata/telegraf" "github.com/influxdata/telegraf"
"github.com/influxdata/telegraf/config" "github.com/influxdata/telegraf/config"
"github.com/influxdata/telegraf/plugins/secretstores" "github.com/influxdata/telegraf/plugins/secretstores"
@ -41,7 +42,7 @@ func (j *Jose) Init() error {
passwd, err := j.Password.Get() passwd, err := j.Password.Get()
if err != nil { if err != nil {
return fmt.Errorf("getting password failed: %v", err) return fmt.Errorf("getting password failed: %w", err)
} }
defer config.ReleaseSecret(passwd) defer config.ReleaseSecret(passwd)
@ -59,7 +60,7 @@ func (j *Jose) Init() error {
} }
kr, err := keyring.Open(cfg) kr, err := keyring.Open(cfg)
if err != nil { if err != nil {
return fmt.Errorf("opening keyring failed: %v", err) return fmt.Errorf("opening keyring failed: %w", err)
} }
j.ring = kr j.ring = kr

View File

@ -8,6 +8,7 @@ import (
"fmt" "fmt"
"github.com/99designs/keyring" "github.com/99designs/keyring"
"github.com/influxdata/telegraf" "github.com/influxdata/telegraf"
"github.com/influxdata/telegraf/config" "github.com/influxdata/telegraf/config"
"github.com/influxdata/telegraf/plugins/secretstores" "github.com/influxdata/telegraf/plugins/secretstores"
@ -43,11 +44,11 @@ func (o *OS) Init() error {
// Setup the actual keyring // Setup the actual keyring
cfg, err := o.createKeyringConfig() cfg, err := o.createKeyringConfig()
if err != nil { if err != nil {
return fmt.Errorf("getting keyring config failed: %v", err) return fmt.Errorf("getting keyring config failed: %w", err)
} }
kr, err := keyring.Open(cfg) kr, err := keyring.Open(cfg)
if err != nil { if err != nil {
return fmt.Errorf("opening keyring failed: %v", err) return fmt.Errorf("opening keyring failed: %w", err)
} }
o.ring = kr o.ring = kr

View File

@ -2,6 +2,7 @@ package influx
import ( import (
"bytes" "bytes"
"errors"
"fmt" "fmt"
"io" "io"
"log" "log"
@ -113,7 +114,8 @@ func (s *Serializer) SerializeBatch(metrics []telegraf.Metric) ([]byte, error) {
for _, m := range metrics { for _, m := range metrics {
err := s.Write(&s.buf, m) err := s.Write(&s.buf, m)
if err != nil { if err != nil {
if _, ok := err.(*MetricError); ok { var mErr *MetricError
if errors.As(err, &mErr) {
continue continue
} }
return nil, err return nil, err

View File

@ -2,6 +2,7 @@ package influx
import ( import (
"bytes" "bytes"
"errors"
"io" "io"
"log" "log"
@ -53,7 +54,8 @@ func (r *reader) Read(p []byte) (int, error) {
r.offset++ r.offset++
if err != nil { if err != nil {
r.buf.Reset() r.buf.Reset()
if _, ok := err.(*MetricError); ok { var mErr *MetricError
if errors.As(err, &mErr) {
continue continue
} }
// Since we are serializing multiple metrics, don't fail the // Since we are serializing multiple metrics, don't fail the

View File

@ -7,7 +7,7 @@ import (
"math" "math"
"time" "time"
jsonata "github.com/blues/jsonata-go" "github.com/blues/jsonata-go"
"github.com/influxdata/telegraf" "github.com/influxdata/telegraf"
"github.com/influxdata/telegraf/filter" "github.com/influxdata/telegraf/filter"
@ -62,7 +62,7 @@ func (s *Serializer) Serialize(metric telegraf.Metric) ([]byte, error) {
var err error var err error
if obj, err = s.transform(obj); err != nil { if obj, err = s.transform(obj); err != nil {
if errors.Is(err, jsonata.ErrUndefined) { if errors.Is(err, jsonata.ErrUndefined) {
return nil, fmt.Errorf("%v (maybe configured for batch mode?)", err) return nil, fmt.Errorf("%w (maybe configured for batch mode?)", err)
} }
return nil, err return nil, err
} }
@ -93,7 +93,7 @@ func (s *Serializer) SerializeBatch(metrics []telegraf.Metric) ([]byte, error) {
var err error var err error
if obj, err = s.transform(obj); err != nil { if obj, err = s.transform(obj); err != nil {
if errors.Is(err, jsonata.ErrUndefined) { if errors.Is(err, jsonata.ErrUndefined) {
return nil, fmt.Errorf("%v (maybe configured for non-batch mode?)", err) return nil, fmt.Errorf("%w (maybe configured for non-batch mode?)", err)
} }
return nil, err return nil, err
} }

View File

@ -236,7 +236,7 @@ func (s *Serializer) SerializeBatch(metrics []telegraf.Metric) ([]byte, error) {
pb := &prompb.WriteRequest{Timeseries: promTS} pb := &prompb.WriteRequest{Timeseries: promTS}
data, err := pb.Marshal() data, err := pb.Marshal()
if err != nil { if err != nil {
return nil, fmt.Errorf("unable to marshal protobuf: %v", err) return nil, fmt.Errorf("unable to marshal protobuf: %w", err)
} }
encoded := snappy.Encode(nil, data) encoded := snappy.Encode(nil, data)
buf.Write(encoded) //nolint:revive // from buffer.go: "err is always nil" buf.Write(encoded) //nolint:revive // from buffer.go: "err is always nil"