[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:
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
|
||||||
|
|||||||
Reference in New Issue
Block a user