From 4e6fa6286b95e218ebb52ea5f2b28d3bb26c76b4 Mon Sep 17 00:00:00 2001 From: Naman Verma Date: Wed, 11 Mar 2026 17:09:21 +0530 Subject: [PATCH] revert: revert check for metric type without query range constraint --- pkg/querier/querier.go | 2 +- pkg/telemetrymetadata/metadata.go | 25 +++++++++-------------- pkg/telemetrymetrics/statement_builder.go | 1 - 3 files changed, 11 insertions(+), 17 deletions(-) diff --git a/pkg/querier/querier.go b/pkg/querier/querier.go index 7cd2efed7d..e72dbb70fd 100644 --- a/pkg/querier/querier.go +++ b/pkg/querier/querier.go @@ -382,7 +382,7 @@ func (q *querier) QueryRange(ctx context.Context, orgID valuer.UUID, req *qbtype } // TODO(srikanthccv): warn when the metric is missing if spec.Aggregations[i].Temporality == metrictypes.Unknown { - spec.Aggregations[i].Temporality = metrictypes.Unspecified // is this needed? + spec.Aggregations[i].Temporality = metrictypes.Unspecified } if spec.Aggregations[i].MetricName != "" && spec.Aggregations[i].Type == metrictypes.UnspecifiedType { diff --git a/pkg/telemetrymetadata/metadata.go b/pkg/telemetrymetadata/metadata.go index 2986466c6f..5e4f9bb0f6 100644 --- a/pkg/telemetrymetadata/metadata.go +++ b/pkg/telemetrymetadata/metadata.go @@ -1735,6 +1735,8 @@ func (t *telemetryMetaStore) fetchMetricsTemporalityAndType(ctx context.Context, temporalities := make(map[string][]metrictypes.Temporality) types := make(map[string]metrictypes.Type) + adjustedStartTs, adjustedEndTs, tsTableName, _ := telemetrymetrics.WhichTSTableToUse(queryTimeRangeStartTs, queryTimeRangeEndTs, nil) + // Build query to fetch temporality for all metrics // We use attr_string_value where attr_name = '__temporality__' // Note: The columns are mixed in the current data - temporality column contains metric_name @@ -1744,14 +1746,14 @@ func (t *telemetryMetaStore) fetchMetricsTemporalityAndType(ctx context.Context, "temporality", "any(type) AS type", "any(is_monotonic) as is_monotonic", - "max(unix_milli) AS last_seen_at", - "min(unix_milli) AS first_seen_at", ). - From(t.metricsDBName + "." + telemetrymetrics.TimeseriesV41weekTableName) + From(t.metricsDBName + "." + tsTableName) // Filter by metric names (in the temporality column due to data mix-up) sb.Where( sb.In("metric_name", metricNames), + sb.GTE("unix_milli", adjustedStartTs), + sb.LT("unix_milli", adjustedEndTs), ) sb.GroupBy("metric_name", "temporality") @@ -1772,23 +1774,16 @@ func (t *telemetryMetaStore) fetchMetricsTemporalityAndType(ctx context.Context, var temporality metrictypes.Temporality var metricType metrictypes.Type var isMonotonic bool - var lastSeenAt int64 - var firstSeenAt int64 - if err := rows.Scan(&metricName, &temporality, &metricType, &isMonotonic, &lastSeenAt, &firstSeenAt); err != nil { + if err := rows.Scan(&metricName, &temporality, &metricType, &isMonotonic); err != nil { return nil, nil, errors.Wrapf(err, errors.TypeInternal, errors.CodeInternal, "failed to scan temporality result") } - // always pick the metric type, regardless of when it was seen - if metricType == metrictypes.SumType && !isMonotonic { - metricType = metrictypes.GaugeType - } - types[metricName] = metricType - // if the temporality was seen between the time range, only then consider it - if lastSeenAt < int64(queryTimeRangeStartTs) || firstSeenAt > int64(queryTimeRangeEndTs) { - continue - } if temporality != metrictypes.Unknown { temporalities[metricName] = append(temporalities[metricName], temporality) } + if metricType == metrictypes.SumType && !isMonotonic { + metricType = metrictypes.GaugeType + } + types[metricName] = metricType } if err := rows.Err(); err != nil { return nil, nil, errors.Wrapf(err, errors.TypeInternal, errors.CodeInternal, "error iterating over metrics temporality rows") diff --git a/pkg/telemetrymetrics/statement_builder.go b/pkg/telemetrymetrics/statement_builder.go index cace4a0bd2..f57a3da02c 100644 --- a/pkg/telemetrymetrics/statement_builder.go +++ b/pkg/telemetrymetrics/statement_builder.go @@ -299,7 +299,6 @@ func (b *MetricQueryStatementBuilder) buildTimeSeriesCTE( sb.LTE("unix_milli", end), ) - // is this needed? if query.Aggregations[0].Temporality != metrictypes.Multiple && query.Aggregations[0].Temporality != metrictypes.Unknown { sb.Where(sb.ILike("temporality", query.Aggregations[0].Temporality.StringValue())) }