[v9.5.x] Query Splitting: Fix for handling queries with no requestId (#66162)

Query Splitting: Fix for handling queries with no requestId (#66161)

Loki query splitting fix for when there's no request id

(cherry picked from commit 5dc529a55d)

Co-authored-by: Domas <domasx2@gmail.com>
This commit is contained in:
Grot (@grafanabot)
2023-04-07 14:08:52 +03:00
committed by GitHub
co-authored by Domas
parent c92d8591cb
commit 8dac8ab37b
@@ -111,7 +111,6 @@ export function runSplitGroupedQueries(datasource: LokiDatasource, requests: Lok
}; };
const group = requests[requestGroup]; const group = requests[requestGroup];
const requestId = `${group.request.requestId}_${requestN}`;
const range = group.partition[requestN - 1]; const range = group.partition[requestN - 1];
const targets = adjustTargetsFromResponseState(group.request.targets, mergedResponse); const targets = adjustTargetsFromResponseState(group.request.targets, mergedResponse);
@@ -120,23 +119,27 @@ export function runSplitGroupedQueries(datasource: LokiDatasource, requests: Lok
return; return;
} }
subquerySubsciption = datasource const subRequest = { ...requests[requestGroup].request, range, targets };
.runQuery({ ...requests[requestGroup].request, range, requestId, targets }) // request may not have a request id
.subscribe({ if (group.request.requestId) {
next: (partialResponse) => { subRequest.requestId = `${group.request.requestId}_${requestN}`;
mergedResponse = combineResponses(mergedResponse, partialResponse); }
if ((mergedResponse.errors ?? []).length > 0 || mergedResponse.error != null) {
shouldStop = true; subquerySubsciption = datasource.runQuery(subRequest).subscribe({
} next: (partialResponse) => {
}, mergedResponse = combineResponses(mergedResponse, partialResponse);
complete: () => { if ((mergedResponse.errors ?? []).length > 0 || mergedResponse.error != null) {
subscriber.next(mergedResponse); shouldStop = true;
nextRequest(); }
}, },
error: (error) => { complete: () => {
subscriber.error(error); subscriber.next(mergedResponse);
}, nextRequest();
}); },
error: (error) => {
subscriber.error(error);
},
});
}; };
const response = new Observable<DataQueryResponse>((subscriber) => { const response = new Observable<DataQueryResponse>((subscriber) => {
@@ -176,7 +179,6 @@ export function runSplitQuery(datasource: LokiDatasource, request: DataQueryRequ
const [logQueries, metricQueries] = partition(normalQueries, (query) => isLogsQuery(query.expr)); const [logQueries, metricQueries] = partition(normalQueries, (query) => isLogsQuery(query.expr));
request.queryGroupId = uuidv4(); request.queryGroupId = uuidv4();
const oneDayMs = 24 * 60 * 60 * 1000; const oneDayMs = 24 * 60 * 60 * 1000;
const rangePartitionedLogQueries = groupBy(logQueries, (query) => const rangePartitionedLogQueries = groupBy(logQueries, (query) =>
query.splitDuration ? durationToMilliseconds(parseDuration(query.splitDuration)) : oneDayMs query.splitDuration ? durationToMilliseconds(parseDuration(query.splitDuration)) : oneDayMs