From 036eba68e1de9f35857d44dea068e3f3e0252559 Mon Sep 17 00:00:00 2001 From: Aditya Ujeniya Date: Sun, 25 Aug 2024 16:13:43 +0200 Subject: [PATCH] Fix for resampler --- internal/metricdata/cc-metric-store.go | 12 ++++++------ pkg/resampler/resampler.go | 14 ++++++++++++-- pkg/resampler/util.go | 14 ++++++++++++-- 3 files changed, 30 insertions(+), 10 deletions(-) diff --git a/internal/metricdata/cc-metric-store.go b/internal/metricdata/cc-metric-store.go index 53469f0..4a86352 100644 --- a/internal/metricdata/cc-metric-store.go +++ b/internal/metricdata/cc-metric-store.go @@ -528,14 +528,14 @@ func (ccms *CCMetricStore) LoadStats( ctx context.Context, ) (map[string]map[string]schema.MetricStatistics, error) { - metricConfigs := archive.GetCluster(job.Cluster).MetricConfig - resolution := 9000 + // metricConfigs := archive.GetCluster(job.Cluster).MetricConfig + // resolution := 9000 - for _, mc := range metricConfigs { - resolution = min(resolution, mc.Timestep) - } + // for _, mc := range metricConfigs { + // resolution = min(resolution, mc.Timestep) + // } - queries, _, err := ccms.buildQueries(job, metrics, []schema.MetricScope{schema.MetricScopeNode}, resolution) // #166 Add scope shere for analysis view accelerator normalization? + queries, _, err := ccms.buildQueries(job, metrics, []schema.MetricScope{schema.MetricScopeNode}, 0) // #166 Add scope shere for analysis view accelerator normalization? if err != nil { log.Warn("Error while building query") return nil, err diff --git a/pkg/resampler/resampler.go b/pkg/resampler/resampler.go index 2c06b38..26cead0 100644 --- a/pkg/resampler/resampler.go +++ b/pkg/resampler/resampler.go @@ -90,6 +90,7 @@ func LargestTriangleThreeBucket(data []schema.Float, old_frequency int, new_freq maxArea := -1.0 var maxAreaPoint int + flag_ := 0 for ; currBucketStart < currBucketEnd; currBucketStart++ { area := calculateTriangleArea(schema.Float(pointX), pointY, avgPointX, avgPointY, schema.Float(currBucketStart), data[currBucketStart]) @@ -97,10 +98,19 @@ func LargestTriangleThreeBucket(data []schema.Float, old_frequency int, new_freq maxArea = area maxAreaPoint = currBucketStart } + if math.IsNaN(float64(avgPointY)) { + flag_ = 1 + + } } - new_data = append(new_data, data[maxAreaPoint]) // Pick this point from the bucket - prevMaxAreaPoint = maxAreaPoint // This MaxArea point is the next's prevMAxAreaPoint + if flag_ == 1 { + new_data = append(new_data, schema.NaN) // Pick this point from the bucket + + } else { + new_data = append(new_data, data[maxAreaPoint]) // Pick this point from the bucket + } + prevMaxAreaPoint = maxAreaPoint // This MaxArea point is the next's prevMAxAreaPoint //move to the next window bucketLow = bucketMiddle diff --git a/pkg/resampler/util.go b/pkg/resampler/util.go index 605f638..36d8bed 100644 --- a/pkg/resampler/util.go +++ b/pkg/resampler/util.go @@ -12,14 +12,24 @@ func calculateTriangleArea(paX, paY, pbX, pbY, pcX, pcY schema.Float) float64 { } func calculateAverageDataPoint(points []schema.Float, xStart int64) (avgX schema.Float, avgY schema.Float) { - + flag := 0 for _, point := range points { avgX += schema.Float(xStart) avgY += point xStart++ + if math.IsNaN(float64(point)) { + flag = 1 + } } + l := schema.Float(len(points)) + avgX /= l avgY /= l - return avgX, avgY + + if flag == 1 { + return avgX, schema.NaN + } else { + return avgX, avgY + } }