Prometheus: Fix incremental querying logic for public dashboards (#111642)

* also disable incremental querying when the dashboard is public

* add tests for disabling incremental querying if public dashboards are being used

* move public dashboard check earlier
This commit is contained in:
Jocelyn Collado-Kuri
2025-09-29 11:25:03 -07:00
committed by GitHub
parent c952de773d
commit 18de2997ff
2 changed files with 10 additions and 1 deletions
@@ -1308,6 +1308,13 @@ describe('PrometheusDatasource incremental query logic', () => {
expect(mockCache.requestInfo).not.toHaveBeenCalled();
});
it('should disable incremental query when public dashboards are being used', async () => {
config.publicDashboardAccessToken = 'token';
const request = createDataRequest([{ expr: 'rate(up[5m])', refId: 'A' }]);
await lastValueFrom(ds.query(request));
expect(mockCache.requestInfo).not.toHaveBeenCalled();
});
it('should disable incremental query when any target contains $__range', async () => {
const request = createDataRequest([
{ expr: 'up', refId: 'A' },
@@ -471,7 +471,9 @@ export class PrometheusDatasource
// Use incremental query only if enabled and no instant queries or no $__range variables
const shouldUseIncrementalQuery =
this.hasIncrementalQuery && !request.targets.some((target) => target.instant || target.expr.includes('$__range'));
this.hasIncrementalQuery &&
!config.publicDashboardAccessToken &&
!request.targets.some((target) => target.instant || target.expr?.includes('$__range'));
let fullOrPartialRequest: DataQueryRequest<PromQuery> = request;
let requestInfo: CacheRequestInfo<PromQuery> | undefined = undefined;