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

Loki query splitting fix for when there's no request id
This commit is contained in:
Domas 2023-04-07 13:31:18 +03:00 committed by GitHub
parent e10ef2241d
commit 5dc529a55d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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<DataQueryResponse>((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