Annotations: Fix failing annotation query when time series query is cancelled (#18532)

This commit is contained in:
Dominik Prokop
2019-08-13 13:03:14 +02:00
committed by GitHub
parent f689b60426
commit 993e5636d6
2 changed files with 17 additions and 0 deletions

View File

@@ -41,6 +41,7 @@ export interface PromDataQueryResponse {
result?: DataQueryResponseData[]; result?: DataQueryResponseData[];
}; };
}; };
cancelled?: boolean;
} }
export class PrometheusDatasource extends DataSourceApi<PromQuery, PromOptions> { export class PrometheusDatasource extends DataSourceApi<PromQuery, PromOptions> {
@@ -528,6 +529,9 @@ export class PrometheusDatasource extends DataSourceApi<PromQuery, PromOptions>
const eventList: AnnotationEvent[] = []; const eventList: AnnotationEvent[] = [];
tagKeys = tagKeys.split(','); tagKeys = tagKeys.split(',');
if (results.cancelled) {
return [];
}
_.each(results.data.data.result, series => { _.each(results.data.data.result, series => {
const tags = _.chain(series.metric) const tags = _.chain(series.metric)
.filter((v, k) => { .filter((v, k) => {

View File

@@ -667,6 +667,19 @@ describe('PrometheusDatasource', () => {
}, },
}; };
describe('when time series query is cancelled', () => {
it('should return empty results', async () => {
backendSrv.datasourceRequest = jest.fn(() => Promise.resolve({ cancelled: true }));
ctx.ds = new PrometheusDatasource(instanceSettings, q, backendSrv as any, templateSrv as any, timeSrv as any);
await ctx.ds.annotationQuery(options).then((data: any) => {
results = data;
});
expect(results).toEqual([]);
});
});
describe('not use useValueForTime', () => { describe('not use useValueForTime', () => {
beforeEach(async () => { beforeEach(async () => {
options.annotation.useValueForTime = false; options.annotation.useValueForTime = false;