From 8dac8ab37be7b20f07380cb276bb89e596baddcd Mon Sep 17 00:00:00 2001 From: "Grot (@grafanabot)" <43478413+grafanabot@users.noreply.github.com> Date: Fri, 7 Apr 2023 13:08:52 +0200 Subject: [PATCH] [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 5dc529a55d4fa5e172580f62fddad7497e5dd3c0) Co-authored-by: Domas --- .../plugins/datasource/loki/querySplitting.ts | 40 ++++++++++--------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/public/app/plugins/datasource/loki/querySplitting.ts b/public/app/plugins/datasource/loki/querySplitting.ts index 865ae15bfd6..e7ff7ebb62a 100644 --- a/public/app/plugins/datasource/loki/querySplitting.ts +++ b/public/app/plugins/datasource/loki/querySplitting.ts @@ -111,7 +111,6 @@ export function runSplitGroupedQueries(datasource: LokiDatasource, requests: Lok }; const group = requests[requestGroup]; - const requestId = `${group.request.requestId}_${requestN}`; const range = group.partition[requestN - 1]; const targets = adjustTargetsFromResponseState(group.request.targets, mergedResponse); @@ -120,23 +119,27 @@ export function runSplitGroupedQueries(datasource: LokiDatasource, requests: Lok return; } - subquerySubsciption = datasource - .runQuery({ ...requests[requestGroup].request, range, requestId, targets }) - .subscribe({ - next: (partialResponse) => { - mergedResponse = combineResponses(mergedResponse, partialResponse); - if ((mergedResponse.errors ?? []).length > 0 || mergedResponse.error != null) { - shouldStop = true; - } - }, - complete: () => { - subscriber.next(mergedResponse); - nextRequest(); - }, - error: (error) => { - subscriber.error(error); - }, - }); + const subRequest = { ...requests[requestGroup].request, range, targets }; + // request may not have a request id + if (group.request.requestId) { + subRequest.requestId = `${group.request.requestId}_${requestN}`; + } + + subquerySubsciption = datasource.runQuery(subRequest).subscribe({ + next: (partialResponse) => { + mergedResponse = combineResponses(mergedResponse, partialResponse); + if ((mergedResponse.errors ?? []).length > 0 || mergedResponse.error != null) { + shouldStop = true; + } + }, + complete: () => { + subscriber.next(mergedResponse); + nextRequest(); + }, + error: (error) => { + subscriber.error(error); + }, + }); }; const response = new Observable((subscriber) => { @@ -176,7 +179,6 @@ export function runSplitQuery(datasource: LokiDatasource, request: DataQueryRequ const [logQueries, metricQueries] = partition(normalQueries, (query) => isLogsQuery(query.expr)); request.queryGroupId = uuidv4(); - const oneDayMs = 24 * 60 * 60 * 1000; const rangePartitionedLogQueries = groupBy(logQueries, (query) => query.splitDuration ? durationToMilliseconds(parseDuration(query.splitDuration)) : oneDayMs