From 543b1a7e39db160002ada4ee72f9eb8507d3d4fe Mon Sep 17 00:00:00 2001 From: George Robinson Date: Tue, 16 Nov 2021 13:42:22 +0000 Subject: [PATCH] Alerting: Add QueryError to expr package (#41737) --- pkg/expr/nodes.go | 11 ++++++++++- pkg/expr/nodes_test.go | 16 ++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 pkg/expr/nodes_test.go diff --git a/pkg/expr/nodes.go b/pkg/expr/nodes.go index 5a8805b8dc1..6506b1b6691 100644 --- a/pkg/expr/nodes.go +++ b/pkg/expr/nodes.go @@ -19,6 +19,15 @@ var ( logger = log.New("expr") ) +type QueryError struct { + RefID string + Err error +} + +func (e QueryError) Error() string { + return fmt.Sprintf("failed to execute query %s: %s", e.RefID, e.Err) +} + // baseNode includes common properties used across DPNodes. type baseNode struct { id int64 @@ -240,7 +249,7 @@ func (dn *DSNode) Execute(ctx context.Context, vars mathexp.Vars, s *Service) (m vals := make([]mathexp.Value, 0) for refID, qr := range resp.Responses { if qr.Error != nil { - return mathexp.Results{}, fmt.Errorf("failed to execute query %v: %w", refID, qr.Error) + return mathexp.Results{}, QueryError{RefID: refID, Err: qr.Error} } if len(qr.Frames) == 1 { diff --git a/pkg/expr/nodes_test.go b/pkg/expr/nodes_test.go new file mode 100644 index 00000000000..a30130f1d6d --- /dev/null +++ b/pkg/expr/nodes_test.go @@ -0,0 +1,16 @@ +package expr + +import ( + "errors" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestQueryError(t *testing.T) { + e := QueryError{ + RefID: "A", + Err: errors.New("this is an error message"), + } + assert.EqualError(t, e, "failed to execute query A: this is an error message") +}