|
|
@@ -17,6 +17,7 @@ import (
|
|
|
"golang.org/x/sync/errgroup"
|
|
|
|
|
|
"github.com/aws/aws-sdk-go/aws"
|
|
|
+ "github.com/aws/aws-sdk-go/aws/awserr"
|
|
|
"github.com/aws/aws-sdk-go/aws/request"
|
|
|
"github.com/aws/aws-sdk-go/service/cloudwatch"
|
|
|
"github.com/aws/aws-sdk-go/service/ec2/ec2iface"
|
|
|
@@ -100,7 +101,10 @@ func (e *CloudWatchExecutor) executeTimeSeriesQuery(ctx context.Context, queryCo
|
|
|
|
|
|
query, err := parseQuery(queryContext.Queries[i].Model)
|
|
|
if err != nil {
|
|
|
- return nil, err
|
|
|
+ result.Results[query.RefId] = &tsdb.QueryResult{
|
|
|
+ Error: err,
|
|
|
+ }
|
|
|
+ return result, nil
|
|
|
}
|
|
|
query.RefId = queryContext.Queries[i].RefId
|
|
|
|
|
|
@@ -113,15 +117,21 @@ func (e *CloudWatchExecutor) executeTimeSeriesQuery(ctx context.Context, queryCo
|
|
|
}
|
|
|
|
|
|
if query.Id == "" && query.Expression != "" {
|
|
|
- return nil, fmt.Errorf("Invalid query: id should be set if using expression")
|
|
|
+ result.Results[query.RefId] = &tsdb.QueryResult{
|
|
|
+ Error: fmt.Errorf("Invalid query: id should be set if using expression"),
|
|
|
+ }
|
|
|
+ return result, nil
|
|
|
}
|
|
|
|
|
|
eg.Go(func() error {
|
|
|
queryRes, err := e.executeQuery(ectx, query, queryContext)
|
|
|
- if err != nil {
|
|
|
+ if ae, ok := err.(awserr.Error); ok && ae.Code() == "500" {
|
|
|
return err
|
|
|
}
|
|
|
result.Results[queryRes.RefId] = queryRes
|
|
|
+ if err != nil {
|
|
|
+ result.Results[queryRes.RefId].Error = err
|
|
|
+ }
|
|
|
return nil
|
|
|
})
|
|
|
}
|
|
|
@@ -131,11 +141,14 @@ func (e *CloudWatchExecutor) executeTimeSeriesQuery(ctx context.Context, queryCo
|
|
|
q := getMetricDataQuery
|
|
|
eg.Go(func() error {
|
|
|
queryResponses, err := e.executeGetMetricDataQuery(ectx, region, q, queryContext)
|
|
|
- if err != nil {
|
|
|
+ if ae, ok := err.(awserr.Error); ok && ae.Code() == "500" {
|
|
|
return err
|
|
|
}
|
|
|
for _, queryRes := range queryResponses {
|
|
|
result.Results[queryRes.RefId] = queryRes
|
|
|
+ if err != nil {
|
|
|
+ result.Results[queryRes.RefId].Error = err
|
|
|
+ }
|
|
|
}
|
|
|
return nil
|
|
|
})
|