Range Splitting: ignore empty queries from splitting and fix result resetting (#64053)

Range splitting: ignore empty queries from splitting
pull/64053/merge
Matias Chomicki 2 years ago committed by GitHub
parent accef84ca5
commit 69d3ae8ec1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 45
      public/app/plugins/datasource/loki/queryUtils.test.ts
  2. 5
      public/app/plugins/datasource/loki/queryUtils.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);
});
});

@ -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) {

Loading…
Cancel
Save