diff --git a/src/lib/features/metrics/impact/batch-histogram.ts b/src/lib/features/metrics/impact/batch-histogram.ts index 8f43bca710..afabcbef10 100644 --- a/src/lib/features/metrics/impact/batch-histogram.ts +++ b/src/lib/features/metrics/impact/batch-histogram.ts @@ -75,6 +75,7 @@ export class BatchHistogram { reset(): void { this.store.clear(); + this.bucketBoundaries.clear(); } get() { diff --git a/src/lib/features/metrics/impact/metrics-translator.ts b/src/lib/features/metrics/impact/metrics-translator.ts index 1bb26e8d3c..7de06b440a 100644 --- a/src/lib/features/metrics/impact/metrics-translator.ts +++ b/src/lib/features/metrics/impact/metrics-translator.ts @@ -59,6 +59,10 @@ export class MetricsTranslator { ): boolean { const existingBoundaries = existingHistogram.bucketBoundaries; + if (existingBoundaries.size !== newBuckets.length) { + return true; + } + for (const bucket of newBuckets) { if (!existingBoundaries.has(bucket.le)) { return true; @@ -184,6 +188,7 @@ export class MetricsTranslator { if (existingMetric && existingMetric instanceof BatchHistogram) { const firstSample = metric.samples[0]; // all samples should have same buckets const needsRecreation = + !firstSample?.buckets || this.hasNewLabels(existingMetric, labelNames) || this.hasNewBuckets(existingMetric, firstSample.buckets);