@ -42,7 +42,7 @@ func (e *CloudWatchExecutor) parseResponse(metricDataOutputs []*cloudwatch.GetMe
cloudWatchResponses := make ( [ ] * cloudwatchResponse , 0 )
for id , lr := range mdr {
response := & cloudwatchResponse { }
series , err := parseGetMetricDataTimeSeries ( lr , queries [ id ] )
series , partialData , err := parseGetMetricDataTimeSeries ( lr , queries [ id ] )
if err != nil {
return cloudWatchResponses , err
}
@ -52,6 +52,7 @@ func (e *CloudWatchExecutor) parseResponse(metricDataOutputs []*cloudwatch.GetMe
response . RefId = queries [ id ] . RefId
response . Id = queries [ id ] . Id
response . RequestExceededMaxLimit = queries [ id ] . RequestExceededMaxLimit
response . PartialData = partialData
cloudWatchResponses = append ( cloudWatchResponses , response )
}
@ -59,16 +60,18 @@ func (e *CloudWatchExecutor) parseResponse(metricDataOutputs []*cloudwatch.GetMe
return cloudWatchResponses , nil
}
func parseGetMetricDataTimeSeries ( metricDataResults map [ string ] * cloudwatch . MetricDataResult , query * cloudWatchQuery ) ( * tsdb . TimeSeriesSlice , error ) {
func parseGetMetricDataTimeSeries ( metricDataResults map [ string ] * cloudwatch . MetricDataResult , query * cloudWatchQuery ) ( * tsdb . TimeSeriesSlice , bool , error ) {
result := tsdb . TimeSeriesSlice { }
partialData := false
for label , metricDataResult := range metricDataResults {
if * metricDataResult . StatusCode != "Complete" {
return nil , fmt . Errorf ( "too many datapoints requested in query %s. Please try to reduce the time range" , query . RefId )
// return nil, fmt.Errorf("too many datapoints requested in query %s. Please try to reduce the time range", query.RefId)
partialData = true
}
for _ , message := range metricDataResult . Messages {
if * message . Code == "ArithmeticError" {
return nil , fmt . Errorf ( "ArithmeticError in query %s: %s" , query . RefId , * message . Value )
return nil , false , fmt . Errorf ( "ArithmeticError in query %s: %s" , query . RefId , * message . Value )
}
}
@ -102,7 +105,7 @@ func parseGetMetricDataTimeSeries(metricDataResults map[string]*cloudwatch.Metri
}
result = append ( result , & series )
}
return & result , nil
return & result , partialData , nil
}
func formatAlias ( query * cloudWatchQuery , stat string , dimensions map [ string ] string , label string ) string {