mirror of
https://github.com/grafana/grafana.git
synced 2025-02-03 20:21:01 -06:00
Block graph queries from being queued until annotation datasource promises resolve
This commit is contained in:
parent
f37a60dcd5
commit
be64af168b
@ -8,6 +8,7 @@ import { makeRegions, dedupAnnotations } from './events_processing';
|
||||
export class AnnotationsSrv {
|
||||
globalAnnotationsPromise: any;
|
||||
alertStatesPromise: any;
|
||||
datasourcePromises: any;
|
||||
|
||||
/** @ngInject */
|
||||
constructor(private $rootScope, private $q, private datasourceSrv, private backendSrv, private timeSrv) {
|
||||
@ -18,6 +19,7 @@ export class AnnotationsSrv {
|
||||
clearCache() {
|
||||
this.globalAnnotationsPromise = null;
|
||||
this.alertStatesPromise = null;
|
||||
this.datasourcePromises = null;
|
||||
}
|
||||
|
||||
getAnnotations(options) {
|
||||
@ -90,6 +92,7 @@ export class AnnotationsSrv {
|
||||
|
||||
const range = this.timeSrv.timeRange();
|
||||
const promises = [];
|
||||
const dsPromises = [];
|
||||
|
||||
for (const annotation of dashboard.annotations.list) {
|
||||
if (!annotation.enable) {
|
||||
@ -99,10 +102,10 @@ export class AnnotationsSrv {
|
||||
if (annotation.snapshotData) {
|
||||
return this.translateQueryResult(annotation, annotation.snapshotData);
|
||||
}
|
||||
|
||||
const datasourcePromise = this.datasourceSrv.get(annotation.datasource);
|
||||
dsPromises.push(datasourcePromise);
|
||||
promises.push(
|
||||
this.datasourceSrv
|
||||
.get(annotation.datasource)
|
||||
datasourcePromise
|
||||
.then(datasource => {
|
||||
// issue query against data source
|
||||
return datasource.annotationQuery({
|
||||
@ -122,7 +125,7 @@ export class AnnotationsSrv {
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
this.datasourcePromises = this.$q.all(dsPromises);
|
||||
this.globalAnnotationsPromise = this.$q.all(promises);
|
||||
return this.globalAnnotationsPromise;
|
||||
}
|
||||
|
@ -156,7 +156,16 @@ class GraphCtrl extends MetricsPanelCtrl {
|
||||
panel: this.panel,
|
||||
range: this.range,
|
||||
});
|
||||
return super.issueQueries(datasource);
|
||||
|
||||
/* Wait for annotationSrv requests to get datasources to
|
||||
* resolve before issuing queries. This allows the annotations
|
||||
* service to fire annotations queries before graph queries
|
||||
* (but not wait for completion). This resolves
|
||||
* issue 11806.
|
||||
*/
|
||||
return this.annotationsSrv.datasourcePromises.then(r => {
|
||||
return super.issueQueries(datasource);
|
||||
});
|
||||
}
|
||||
|
||||
zoomOut(evt) {
|
||||
|
Loading…
Reference in New Issue
Block a user