mirror of
				https://github.com/grafana/grafana.git
				synced 2025-02-25 18:55:37 -06:00 
			
		
		
		
	Alerting: Add QueryError to expr package (#41737)
This commit is contained in:
		@@ -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 {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										16
									
								
								pkg/expr/nodes_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								pkg/expr/nodes_test.go
									
									
									
									
									
										Normal file
									
								
							@@ -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")
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user