From 69d3ae8ec11eb98ac3e81695072d47c69c16972b Mon Sep 17 00:00:00 2001 From: Matias Chomicki Date: Tue, 7 Mar 2023 13:09:55 +0100 Subject: [PATCH] Range Splitting: ignore empty queries from splitting and fix result resetting (#64053) Range splitting: ignore empty queries from splitting --- .../datasource/loki/queryUtils.test.ts | 45 +++++++++++++++++++ .../app/plugins/datasource/loki/queryUtils.ts | 5 ++- 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/public/app/plugins/datasource/loki/queryUtils.test.ts b/public/app/plugins/datasource/loki/queryUtils.test.ts index 3fb0d985699..047e1c97a6b 100644 --- a/public/app/plugins/datasource/loki/queryUtils.test.ts +++ b/public/app/plugins/datasource/loki/queryUtils.test.ts @@ -13,6 +13,7 @@ import { obfuscate, combineResponses, cloneQueryResponse, + requestSupportsPartitioning, } from './queryUtils'; import { LokiQuery, LokiQueryType } from './types'; @@ -526,3 +527,47 @@ describe('combineResponses', () => { }); }); }); + +describe('requestSupportsPartitioning', () => { + it('hidden requests are not partitioned', () => { + const requests: LokiQuery[] = [ + { + expr: '{a="b"}', + refId: 'A', + hide: true, + }, + ]; + expect(requestSupportsPartitioning(requests)).toBe(false); + }); + it('special requests are not partitioned', () => { + const requests: LokiQuery[] = [ + { + expr: '{a="b"}', + refId: 'do-not-chunk', + }, + ]; + expect(requestSupportsPartitioning(requests)).toBe(false); + }); + it('empty requests are not partitioned', () => { + const requests: LokiQuery[] = [ + { + expr: '', + refId: 'A', + }, + ]; + expect(requestSupportsPartitioning(requests)).toBe(false); + }); + it('all other requests are partitioned', () => { + const requests: LokiQuery[] = [ + { + expr: '{a="b"}', + refId: 'A', + }, + { + expr: 'count_over_time({a="b"}[1h])', + refId: 'B', + }, + ]; + expect(requestSupportsPartitioning(requests)).toBe(true); + }); +}); diff --git a/public/app/plugins/datasource/loki/queryUtils.ts b/public/app/plugins/datasource/loki/queryUtils.ts index 5e5f2da7c45..a4c2733e0b0 100644 --- a/public/app/plugins/datasource/loki/queryUtils.ts +++ b/public/app/plugins/datasource/loki/queryUtils.ts @@ -305,7 +305,10 @@ export function getStreamSelectorsFromQuery(query: string): string[] { } export function requestSupportsPartitioning(allQueries: LokiQuery[]) { - const queries = allQueries.filter((query) => !query.hide).filter((query) => !query.refId.includes('do-not-chunk')); + const queries = allQueries + .filter((query) => !query.hide) + .filter((query) => !query.refId.includes('do-not-chunk')) + .filter((query) => query.expr); const instantQueries = queries.some((query) => query.queryType === LokiQueryType.Instant); if (instantQueries) {