diff --git a/CHANGELOG.md b/CHANGELOG.md index d24c5a6ea95..ffd29bce2aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -59,6 +59,7 @@ * [BUGFIX] Memberlist: Add join with no retrying when starting service. #4804 * [BUGFIX] Ruler: Fix /ruler/rule_groups returns YAML with extra fields. #4767 * [BUGFIX] Respecting `-tracing.otel.sample-ratio` configuration when enabling OpenTelemetry tracing with X-ray. #4862 +* [BUGFIX] QueryFrontend: fixed query_range requests when query has `start` equals to `end`. #4877 ## 1.13.0 2022-07-14 diff --git a/pkg/querier/tripperware/queryrange/split_by_interval.go b/pkg/querier/tripperware/queryrange/split_by_interval.go index 9fadb72b7d9..6bf87bf13d0 100644 --- a/pkg/querier/tripperware/queryrange/split_by_interval.go +++ b/pkg/querier/tripperware/queryrange/split_by_interval.go @@ -69,6 +69,11 @@ func (s splitByInterval) Do(ctx context.Context, r tripperware.Request) (tripper } func splitQuery(r tripperware.Request, interval time.Duration) ([]tripperware.Request, error) { + // If Start == end we should just run the original request + if r.GetStart() == r.GetEnd() { + return []tripperware.Request{r}, nil + } + // Replace @ modifier function to their respective constant values in the query. // This way subqueries will be evaluated at the same time as the parent query. query, err := evaluateAtModifierFunction(r.GetQuery(), r.GetStart(), r.GetEnd()) diff --git a/pkg/querier/tripperware/queryrange/split_by_interval_test.go b/pkg/querier/tripperware/queryrange/split_by_interval_test.go index e0e47f4d165..3451570ce42 100644 --- a/pkg/querier/tripperware/queryrange/split_by_interval_test.go +++ b/pkg/querier/tripperware/queryrange/split_by_interval_test.go @@ -84,6 +84,23 @@ func TestSplitQuery(t *testing.T) { }, interval: day, }, + { + input: &PrometheusRequest{ + Start: 60 * 60 * seconds, + End: 60 * 60 * seconds, + Step: 15 * seconds, + Query: "foo", + }, + expected: []tripperware.Request{ + &PrometheusRequest{ + Start: 60 * 60 * seconds, + End: 60 * 60 * seconds, + Step: 15 * seconds, + Query: "foo", + }, + }, + interval: day, + }, { input: &PrometheusRequest{ Start: 0,